Kod incelemesinde yorum yapmanın en iyi yolu nedir?


13

Ekibim, birimiz bir şeyi kontrol ettiğinde kod incelemelerini başlatmak için pota / balık gözü kullanmaya başladı. Sadece 3 kişiyiz ve her birimiz kodu gözden geçirip uygun gördüğümüz yorumları bırakmaya teşvik ediyoruz.

Sorum şu: Bir sorun gördüğüm bir kod satırına en iyi nasıl yorum yapabilirim? Aşındırıcı görünmeden fikrimi anlatmak istiyorum.

Yüksek bir attaymışım gibi görünmek istemiyorum ve " Bunu bu şekilde yapıyorum ... ve aynı zamanda otoriter olmaya ve benzer bir şey söylemeye çalıştığım gibi görünmek istemiyorum “ Bu şekilde yapılmalı ... ” ama yine de yaptıkları şeyin çok iyi olmadığı konusunu ele almam gerekiyor.

Açıklığa kavuşturmak için: Bu ne hakkında yorum aramak gerekir için gerçekten iyi bir kaynak : Bir kod inceleme öznel veya nesnel (ölçülebilir) mi? , ama nasıl yorum yapacağımı arıyorum .


2
FishEye ve Crucible (benim en sevdiğim araçlar btw) isimlerinin yanı sıra burada özel bir programlama görmüyorum. Biri yapıcı geribildirim sağlamak
gnat


@caleb, katılmıyorum, bu diğer konu daha yorum ifade hakkında daha fazladır.
HLGEM

1
@HLGEM Ben tam olarak önerilen dupe ile ilgili olduğunu söyleyebilirim: "Nasıl taktiksel olarak önerebilirim ...". Genel olarak, gözden geçirilmekte olan kodda bulunan sorunlara, stil veya kendi kişisel tercihinize değil, odaklanmaya odaklanın. Önerinizin kodu nasıl daha iyi hale getirdiğini açıklayın.
Caleb

@ stinkycheeseman diğer insanlara bunu daha iyi yaptığınızı bildirin. ve ekibinizdeki insanlar süreç boyunca bir şeyler öğrenecekler.
upton

Yanıtlar:


8

Pek çok genel alanda yorum yapma eğilimindeyim ve her tür farklı şekilde ele alınabilir.

Gerekli değişiklikler. Bunlar, kodun fonksiyonel gereksinimleri karşılamadığını veya çalışmadığını ve üretime itilmeden önce düzeltilmesi gerektiğini belirttiğim değişiklikler. Bu yorumlarda çok açık sözlü davranıyorum. Gereksinimler diyor ki ..., bunu yapmaz. Veya gönderilen değer boşsa (özellikle de gönderilecek verilere dayanarak bu davanın gerçekleşeceğini biliyorsanız) bu başarısız olur.

Sonra "bu işe yarar ama burada bunu başarmanın daha iyi bir yolu var" yorumları var. Bunlarda daha nazik olmalısınız ve daha fazla satış konuşması yapmalısınız. Daha iyi performans olması muhtemel olduğu için bunun yerine bunu söyleyebilirim (genellikle performans çok önemli olduğu SQL kodunu gözden geçirin). Stack Overflow'daki bir soruyu yanıtlarken yaptığım gibi neden daha iyi bir seçim olduğu hakkında bazı ayrıntılar ekleyebilirim. Bu özel kod için bu değiştirmek gerekmez, ancak gelecekteki kodlama değişikliği düşünün işaret edebilir. Temel olarak bu tür yorumlarla neyin daha iyi çalışabileceği konusunda daha az deneyime sahip insanları eğitiyorum.

Sonra "bu işe yarıyor ama işleri bu şekilde yapıyoruz" yorumları var. Bunlar muhtemelen gerekli değişiklikler olacaktır. Bunlar, şirket standartları veya kullanılmasını beklediğimiz mimari hakkında yorumları içerir. Standart veya mimari belgeye referansta bulunup, standarda düzeltmelerini söylerdim. Yorum basit ama tarafsız olacaktır, bu nedenle eksiktir ve bu nedenle değişken isimleri, adlandırma standardımız veya simliar şeylerimize uymuyor. Örneğin, SSIS paketleri mimarimiz, paketin paketle ilgili belirli bilgileri depolamak için meta veri veritabanımızı kullanmasını gerektirir ve belirli bir günlük kaydı gerektirir. Paket bu şeyler olmadan çalışır, ancak şirket nedenleriyle gereklidir (örneğin, ithalatın başarı oranını raporlamamız veya aldığımız hata türlerini analiz etmemiz gerekir).

Kod inceleme yorumlarında yapmak istemediğiniz tek şey, birisine kişisel olarak saldırmaktır. Ayrıca, iyi bir şey bulduklarını ve bunun iyi olduğunu belirttiğinizde de yardımcı olabilir. Bazen bir kod incelemesinden yeni bir şey öğrenirim ve eğer öyleyse kişiye bunu söylerim.


1
Yeniden paragraf 3: Deneyimlerim, sadece daha iyi bir tekniği açıklamanın nadiren yeterince iyi olduğudur (açık olmadığı sürece). Faydaları tam olarak takdir etmeden ve mümin olmadan önce kodu tekrar yazmanız gerekir. Yalnızca yorum inceleme sisteminde, bunu yapmak zordur. Yorumunuzu "Gel beni gör, tartışalım" ile bitirmeniz gerekebilir. değerli kılmak için.
mcmcc

mcmcc, bu adil bir nokta, ya da onları benzer bir tekniğin kullanıldığı koddaki başka bir yere yönlendirebilirsiniz. Genellikle önemsiz olmadıkça yorumları daha sonra gerçek bir tartışmayı tetiklemek için kullanırım.
HLGEM

6

Kod, kodlama standartlarınıza uyuyorsa, ancak bunu farklı bir şekilde yaparsanız, yaptıklarının yanlış olup olmadığını kendinize sormanız gerekir.

Değilse ... sadece bunu nasıl yapacağınız değil ve onu terk edemezsiniz, sadece 'Neden bu şekilde değil de bu şekilde yaptınız?' O zaman onları neden böyle yaptıklarını 'bu şekilde yapardım ve siz de yapmalısınız ...'

Süreçte bir şeyler de öğrenebilirsiniz.


4

Aşındırıcı görünmeden fikrimi anlatmak istiyorum.

Keskinliği aşındırıcı olmakla karıştırmayın. Bir şey bir sorun olduğunda, onu düzelten her şeyin anlayabileceği şekilde belgeleyin. Gerçeklere sadık kalın ve bir deneme yazmayın. Zekâ için:

  • Bu, fooble snorgatz faktörünün 5 grimble'ı içinde olduğunda frobnitz'in arızalanmasına neden olacaktır.

  • Bunu yapmak için kurulan kural, yeni başlatılmış bir Squidge ile fazzatz () 'ı çağırmaktır. Bunu her zaman aynı şekilde olması ve çoğaltılmaması için bir yönteme dönüştürün.

    Ayrıca otoriter olmaya çalışıyorum ve "Bu şekilde yapılmalı ..." gibi bir şey söylemeye çalışmam da istemiyorum ama yine de yaptıkları şeyin çok iyi olmadığını anlamaya çalışmalıyım .

Kodu gözden geçirmenin amacı, sorunları ortaya çıkarmak için ikinci, genellikle daha deneyimli bir çift göz koymaktır. Başkalarının çalışmaları hakkında karar verme pozisyonundaysanız ve bir şeyin iyi olmadığını söylemek için geçerli bir neden varsa, yapmadıysanız, gözden geçiren olarak sorumluluğunuzu ihmal edersiniz.

Anlaşmazlıklar olacak ve bunlar gözden geçiren ve gözden geçirenin pozisyonlarını savunması için fırsatlar. Aksi takdirde akranlarınız varsa ve çıkmaza girerseniz, kravat kırmak için kıdemli birini bulun.


+1 sadece snorgatz faktörü için (cevabın geri kalanını da çok beğendim)
HLGEM

3

Ne tür bir problemin fark edildiğine bağlıdır

  • eksik telif hakkı bildirimi - sık karşılaşılan ve sıkıcı bir sorun, sorunu belirten ve devam eden kısa bir yorum
  • farklı yapabileceğim yerler - genellikle ifadeler yapmak yerine burada soru sorma eğilimindedir, bazen cevaplar orijinal çözümü diğer zamanlarda haklı çıkarır ve sonra bunları daha açık bir şekilde ele alabilirim
  • açık bir kusurun olduğu yerler, örneğin yığın akışı akabilir - kırmızı kalem için ulaşılabilir - bir kusur olarak işaretleyin ve neden kırıldığı gibi çok açık olun - ayrıca sistematik bir sorun olmadığını kontrol etmek için diğer benzer alanları da kontrol edin.

1

Deneyimlerimden:

  1. Kodunu incelerken her zaman kodun yazarını yanınızda bulundurun. Tercihen kod beyaz tahtaya yansıtılır ve her ikiniz de kodu çok iyi görebilirsiniz.

  2. Dostça bir konuşma yapın. Kodlamanın iyi kısmını takdir edin. Kodda bazı iyi parçalar görürseniz ona "gördüğüm en iyisi" olduğunu söyleyin.

  3. Kodunuzu gözden geçirmesini ve geçerli noktaları kabul etmesini ve kabul etmesini ve düzeltmesini isteyin. Kodunuzdaki yorumlarına saygı gösterin, otomatik olarak kod inceleme yorumlarınıza saygı gösterecektir.
  4. Çok önemli olmadıkça veya kod inceleme sorunlarını düzeltmek için daha fazla zaman gerekmedikçe geliştirici düzeyinde ilgilenin. Koşullar eksikse basit için yöneticilere iletmeyin.
  5. Koddaki hataları işaret etmek yerine "Diğer koddan öğrenme" perspektifine bakın.
  6. Kod inceleme oturumları sırasında, geçmişte yaptığınız hataları ve kod incelemelerinin size nasıl yardımcı olduğunu ve büyük üretim sorunlarından nasıl kaçınıldığını belirtin çünkü başka bir göz seti size yardımcı oldu.
  7. Mütevazı olmak. Daha fazla takdir ve ona daha az yorum :) Kod incelemesi sırasında çok şey öğreneceksiniz ve aynı zamanda yorumlarınızı memnuniyetle kabul edecektir.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.