Eş / Kod İnceleme Hayal kırıklıkları


27

Kendime bir süperstar dev demezdim, ama nispeten deneyimli biri. Kod kalitesini yüksek bir seviyede tutmaya çalışıyorum ve kodlama stilimde her zaman iyileştirmeler yapmak, kodu verimli, okunaklı ve tutarlı hale getirmek ve ekibi tutarlılık sağlamak için bir kalıp ve metodoloji izlemeye teşvik etmek için çalışıyorum. Hem kalite hem de hız arasındaki dengenin gerekliliğini de anlıyorum.

Bunu başarmak için ekibime akran değerlendirmesi kavramını getirdim. İki başparmak yukarıya github çekme-birleştirme isteği. Harika - ama bence hiccoughs olmadan.

Sık sık benzer meslektaşlarımdan gelen meslektaş yorumları yorumlarını görüyorum -

  • Sonra bir boşluk eklemek iyi olurdu <INSERT SOMETHING HERE>
  • Yöntemler arasında istenmeyen fazladan çizgi
  • Tam durak, dokümanlardaki yorumların sonunda kullanılmalıdır.

Şimdi benim açımdan - gözden geçiren yüzeysel olarak kod estetiğine bakıyor - ve gerçekten bir kod incelemesi yapmıyor. Kozmetik kod incelemesi, kibirli / seçkin zihniyet olarak karşımıza çıkıyor. Maddeden yoksun, ancak gözden geçiren teknik olarak doğru olduğu için onunla fazla tartışamazsınız . Yukarıdaki türden incelemelerin daha az olduğunu ve aşağıdaki gibi daha fazla değerlendirme görmeyi tercih ederim:

  • Döngüsel karmaşıklığı azaltabilirsiniz ...
  • Erken çıkın ve / başkasından kaçının
  • DB sorgunuzu bir depoya özetleyin
  • Bu mantık gerçekten buraya ait değil
  • Kendini tekrar etme - özetle ve tekrar kullan
  • XYönteme argüman olarak geçildiyse ne olur Y?
  • Bunun için birim testi nerede?

Ben her zaman kozmetik türden yorum yapanlarla aynı türde olduğunu düşünüyorum ve bence "Kalite ve Mantık Temelli" meslektaş değerlendirmelerini veren insanlarla aynı.

Akran incelemesine doğru yaklaşım (varsa). Ve aynı kişilerle temelde heceleme hataları ve estetik hatalar aramak yerine kodun üzerinden dolanıp aynı insanlarla sinirli olma konusunda haklı mıyım?

Eğer haklıysam - meslektaşları, kozmetik rötuşları önererek dengede bulunan hataları aramaya teşvik etmeye ne dersim?

Eğer hatalıysam - lütfen beni aydınlat. İyi bir kod incelemesini oluşturan şey için kurallar var mı? Kod incelemelerinin ne olduğu noktasını kaçırdım mı?

Benim bakış açıma göre - kod incelemesi kodun ortak sorumluluğudur. Mantık, okunabilirlik ve işlevselliği ele almadan / kontrol etmeden başparmak kodunu vermekte rahat hissetmem. Birinin bir doktora bloğunda tam olarak durduğunu fark edersem, katı bir kod parçası için bir birleştirme engellemekten de rahatsız olmazdım.

Kodları incelerken, her 500 Loc için 15-45 dakika harcıyorum. Yaptıkları inceleme derinliği buysa, bu sığ incelemelerin 10 dakikadan daha uzun sürdüğünü hayal edemiyorum. Dahası, sığ gözden geçiriciden elde edilen başparmak değeri ne kadardır? Elbette bu, tüm başparmakların eşit ağırlıkta olmadığı ve belki de 2 geçişli bir inceleme süreci olması gerektiği anlamına gelir. Derin incelemeler için bir başparmak ve "parlatma" için 2. bir başparmak?


2
Bunu o kişiye söylemeyi denedin mi?
Bryan Oakley

11
Tüm yorumlarda tam durmanın yanı sıra uygun büyük harf kullanımı, noktalama işaretleri ve dilbilgisi gerektiren bir üstünüm vardı. Ayrıca boşluk konusunda da çok analdı. Beni çıldırttı, ama aynı zamanda okunabilir ve tutarlı bir kod da yarattı.
Bryan Oakley

4
Posta kodunuzdaki ilk üç mermi, kodlama tarzı mağaza standardının bir parçası olmadıkça, bisiklet atmadır. Dokümantasyon yazıyorsanız, mükemmel yazım ve dilbilgisi beklerdim. Kelime işlemcilerinde yazım denetleyicilerinin ve dilbilgisi denetleyicilerinin bolluğu göz önüne alındığında, bugünlerde bunu başarmak zor değil. Benzer şekilde, kodlama tarzı sorunlar genellikle uygun şekilde akıllı kod düzenleyicilerde otomatikleştirilebilir. Bu tür şeyleri bir kod incelemesinde görmeyi beklemiyordum; herkesin zamanı çok değerli.
Robert Harvey,

2
kibirli / elitist incelemesi kolaydır ve neredeyse hiç çaba gerektirmez. Teknik bir inceleme yapmak için kodu okuyup anlamanız ve ardından daha iyi bir çözüm düşünmeniz gerekir ... bu da çalışmanız gerektiği anlamına gelir. Teklifinin sonucu beni şaşırtmadı. Gözden geçirme sürecini, bir şey elde etmek için ölçülebilir ve iyi tanımlanmış görevlerle organize etmelisiniz.
JoulinRouge

2
Agile kullanıyorsanız, bu tek bir hedefe işaret etmeden retros'ta ortaya çıkarabileceğiniz bir şeydir. Kod incelemelerinin ana işlevinin, kodun estetiği değil, kodun doğruluğu olduğunu belirtiniz. Bu durumda bir 'değişme ihtiyacı' olur ve gerçekten değişinceye kadar sürekli olarak ortaya çıkarabileceğiniz bir şey.
Kanada Kod

Yanıtlar:


22

Yorum türleri

Akran değerlendirmeleri yapmanın gerçek bir yolu yoktur. Kodun yeterince yüksek kalitede olup olmadığına karar vermenin birçok yolu vardır. Açıkça, onun arabası mı, yoksa ölçeklemeyen veya kırılgan olan çözümleri olup olmadığı sorusu var. Yerel standartlara ve yönergelere uygunluk sorunları, belki de bazıları kadar kritik olmasa da, yüksek kalite koduna katkıda bulunanların bir parçasıdır.

Hakem türleri

Yargılama yazılımı için farklı kriterlerimiz olduğu gibi, yargılamayı yapan insanlar da farklıdır. Hepimizin kendi yetenekleri ve tercihleri ​​var. Bazıları, yerel standartlara uymanın, diğerlerinin hafıza kullanımı veya testlerinizin kod kapsamı ile daha fazla ilgilenebileceği gibi, çok önemli olduğunu düşünebilir. Tüm bu inceleme türlerini istiyorsunuz, çünkü bir bütün olarak daha iyi kod yazmanıza yardımcı olacaklar.

Bir meslektaş değerlendirmesi, bir oyun etiketi değil, işbirliğidir

Onlara işlerini nasıl yapacaklarını söyleme hakkına sahip olduğundan emin değilim. Kesin olarak başka türlü bir şey bilmiyorsanız, bu kişinin uygun gördüğü şekilde katkıda bulunmaya çalıştığını varsayalım. Ancak, iyileştirme için yer görürseniz veya şüpheli olabilirlerse, bir meslektaş incelemesinde neyin beklendiğini anlamıyorlarsa, onlarla konuşun .

Bir akran değerlendirmesinin amacı , akranlarınızı dahil etmektir . Katılım, bir duvarın üzerine kod atmak ve bir cevabın geri atılmasını beklemek değildir. Katılım daha iyi kod yapmak için birlikte çalışıyor. Onlarla bir konuşma yapın.

Tavsiye

Sorunuzun sonuna doğru yazdınız:

İş arkadaşlarımın göz kamaştırıcı estetik hatalarla dengede olması için koddaki hataları aramaya teşvik etmeye ne dersim?

Yine, cevap iletişimdir. Belki de onlara sorabilirsin "hey, bu hataları yakaladığın için minnettarım. Kodumu düzgün bir şekilde yapılandırıp kurmama gibi daha derin meselelere de odaklanabilseydin bana çok yardımcı olacaktı. yardım et."

Daha pragmatik bir notta, kod incelemesi yorumlarını şahsen iki kampa böldüm ve uygun şekilde ifade ettim: düzeltilmesi gereken şeyler ve daha kozmetik olan şeyler. Bir dosyanın sonunda çok fazla boş satır varsa, sağlam ve çalışan kodun kontrol edilmesini asla engellemem. Bununla birlikte, şunu işaret edeceğim, ancak bunu şöyle yapacağım "kurallarımız sonunda tek bir boş satır olduğunu söyler ve sizde 20 yaşınız var. Bu bir gösteri durdurucu değil, ama bir şansınız olursa düzeltmek isteyebilir ".

Dikkate alınması gereken başka bir şey var: Kodunuz hakkında bu kadar basit bir inceleme yapmaları, sizin evcil hayvanınızın bir hakimi olabilir. Çok iyi bir şey olabilir ki, onların evcil hayvanlarından biri, sizin (veya benzer bir inceleme yapan başka bir takım arkadaşının) kendi organizasyonunuzun kodlama standartlarına karşı özensiz olduğu ve bu şekilde sizinle iletişim kurmayı seçtikleri olabilir.

İncelemeden sonra ne yapılmalı

Ve son olarak, gözden geçirmeden sonra bir parça tavsiye: Bir gözden geçirmeden sonra kod işlerken, bir kozmetik kuruluştaki tüm kozmetik şeylere ve bir diğerindeki işlevsel değişikliklere dikkat etmeyi düşünebilirsiniz. İkisini karıştırmak, önemli değişiklikleri önemsiz değişikliklerden ayırt etmeyi zorlaştırabilir. Tüm kozmetik değişiklikleri yapın ve ardından "kozmetik; işlevsel değişiklik yok" gibi bir mesaj verin.


Mükemmel bir cevap için teşekkür ederim. Sanırım hayal kırıklıklarım, biggersorunların ele alınmadığı bir yerde yatıyor . Bir DB tablosundaki eksik indeksler gibi. Veya gerekçeyi anlamadan ve böyle yanlış bir şekilde yapmadan bir metodoloji veya algoritma kullanmaya çalışmak. Benim için - bunlar daha önemli ve öncelikle ele alınmalı ve çözülmeli - estetik ikincil bir endişe kaynağı olarak.
Gravy

1
Eğer do biliyorum cevapsız ediliyor daha büyük sorunları veya onlar olacak sadece korkuyorlar? Büyük bir sorun çözüldüğünde, geriye dönük olarak veya ekip toplantısında, bunların kod incelemesinde yakalanması gereken şeyler olduğunu ortaya çıkarabilirsiniz. Ekipte kimin veritabanı değişikliklerine odaklandığını sormayı düşünebilirsiniz ve eğer kimse elini kaldırmazsa, belki bir dahaki gözden geçirme için sadece db değişikliklerine odaklanmaya çalışmak için birilerini atayabilirsiniz.
Bryan Oakley

Dürüst olmak gerekirse - kozmetik yorumların çoğu genel olarak benim koduma yönelik değildir. Başkalarının kodunu incelerken, kozmetiklerle ilgili PR'lara yönelik yorumları görüyorum, kodun hemen yanında büyük bir sorun olduğunu düşündüm. Ayrıca, ekibin ilk dilinin çoğu ingilizce değil. Yani benim açımdan - garip yazım / dilbilgisi hatası affedilebilir. İngilizce'yi doktora bloğu yorumunda kullanmalarını değil, kodlarını incelemeye gelmedim.
Gravy

2
Peki, yorumları kaynak kodun bir parçasıdır ve gereksiz bir şekilde ayrıştırılması, yanıltıcı ve hatta yanlış olması durumunda, bunları almak hiç bir nedenle bu koda herhangi bir sebeple bakmayı başaramamış birine zarar verebilir. Amaçlarına ulaşmak için resmi ya da sanat eseri olmaları gerekmiyor, ancak dildeki yazarların yeterliliğine bakılmaksızın ingilizcesi bozmak bu hedefi engelliyor. Kötü yorumlardan başka hiç yorum yapmamaktan iyidir.
Deduplicator

1
Çoğu insan, dildeki hataların kendilerine gösterildiğini ve böylece düzeltilebileceklerini takdir eder.
gnasher729

7

İnsanlar kod biçimlendirme ve yazım hataları hakkında yorum yaparlar; çünkü fark edilmeleri kolaydır ve bunlardan çok fazla çaba gerektirmezler.

Bu parçanın düzeltilmesi kolaydır - hemen hemen her dilin linter veya stil denetleyicisi aracı vardır. Ekleme işlemini, eklenti sürecinize ekleyin, böylece fazladan bir alan varsa derlemede başarısız olur. Sonuç olarak yorum yapmak için stil sorunları olmayacak.

Onları gerçek problemleri bulmalarını sağlamak oldukça zor olabilir. Sadece bu özel bir merak uyandırıcı ve detay odaklı bir zihniyet değil, aynı zamanda önemli bir motivasyon gerektirir.

Ve bu motivasyon deneyimden geliyor. Önceki geliştiriciler tarafından yazılmış berbat kodla çalışmayı deneyimleme. Üst düzey mühendisler bundan bol miktarda var. Bok okyanusunda yüzmek, bir daha oraya gitmemek için büyük bir istek veriyor.

Kod incelemesi sırasında kontrol etmek için bir ana şey seçmem gerekirse kod korunabilirliği olur. Her zaman, bu kodu gözden geçiren geliştirici kodunu anlamalı ve geliştirmeye ve değiştirmeye hazır olmalıdır. Burada olup bitenlerle ilgili bir ipucu yoksa, derhal anlatması ve kodun yeniden yazılması gerekir.


Yorumlarınız konusunda size katılıyorum. Ve ocean of shitbenim tarafımdan yazılanı görürseniz - o zaman tekrar yazmamı önermenizi tavsiye ederim. Ama görmezden gelirseniz shitama benden kozmetik malzemeyi düzeltmemi istediyseniz, bu beni sinirlendiriyor.
Gravy

4

İşte pratik cevap geliyor:

Senaryo 1 : Sen kıdemli üyesisin ve uygulamaya karar verebilecek birisin

Bir toplantı çağırın ve Kod İnceleme kurallarını ve yönergelerini düzenleyin. Güven bana, açık kurallar herhangi bir 'namus' sisteminden veya eğitiminden daha iyi çalışır. Kod biçimlendirme sorunlarının hiç çözülmemesi gerektiğini açıkça belirtin. Bazı üyeler itiraz edecektir. Onları dinleyin ve bir deney olarak ilk birkaç ay boyunca yönergeleri takip etmelerini isteyin. Geçerli kuralların işe yaramadığı durumlarda değişiklik isteğini göster.

Senaryo 2 : Uygulamaya karar veren biri değilsiniz veya ekipte nispeten genç bir üyesiniz.

En iyi bahis, senaryo 1'e ulaşmayı başarana kadar kod inceleme sorunlarını çözmektir .


2

"Önemsiz" kod inceleme yorumlarını engellemenin basit cevabı, gözden geçiricinin bunları düzeltecek kişi olması gerektiği konusunda ısrar etmektir (verimlilik adına). Bu yüzden, eleştirmen (korku!) Bir tam puanınızı kaçırdığınızı veya yanlış bir yorum yazdığınızı tespit ederse, sadece düzeltmeli ve devam etmelidir.

Tecrübelerime göre bu şu anlama gelir:

  • Gözden geçirenleriniz göreceli olarak anlamsız bu gözden geçirme yorumları yapmayı bırakıp düzeltilmelerini istiyorlar.
  • yalnızca çoğu OKB eleştirmeni bunları düzeltecek, bu nedenle yorumlarınızın çoğu geçecek. Bu, dev'lerin daha önemli incelemeler yapmalarını zorunlu kılma etkisi yaratıyor, triviayı rapor edenler, aslında kodları gözden geçirmiyorlar çünkü tüm incelemelerinin neden yorum yapılmadan geçtiğini haklı çıkarmak zorunda kalacaklar.

Her iki durumda da, bu bir faydadır. Başarısız bir incelemenin maliyeti, bir geliştiricinin üzerinde çalıştığını durdurması ve kodunu tekrar gözden geçirmesi ve sonraki izleme incelemesi açısından yüksektir. Bir inceleme gerçek kod kalitesini veya mimari sorunları bulursa, bu maliyet her kuruşa değer, ancak bu bedeli önemsiz şeyler için ödemek değildir.


0

Gözden Geçirme Süreci

Kod incelemelerine ek olarak, İnceleme Sürecini düzenli olarak gözden geçirmenizi öneririm. İnsanların burada da öğrenebilecekleri çok şey var, örneğin nasıl uygun kod incelemeleri verileceği.

Genelde, bisiklet makaslarının bazıları yalnızca deneyimsizdir ve ne arayacağını bilmez. Sadece kodlarına bakmakla kalmayıp aynı zamanda yararlı kod incelemeleri yapmak konusunda da biraz rehberliğe ihtiyaçları var. Değerlendirmeler hakkında geri bildirimde bulunmak, daha iyi incelemelere ve daha iyi kodlara yol açan (umutlu) bir öğrenme sürecine yol açacaktır.

Daha sonra, bir takım değerler ve ölçütleri (gevşek olarak) resmileştirmek, kuruluşun veya ekibin Good Code ™ olarak algıladığı ve kaçınılması gereken anti-paternler neler olacağını iyi bir fikir olabilir. Bu sth ayarı ile ilgili değil. Betonda, ancak baştan itibaren kod kalitesi hakkında ortak bir fikir birliği elde etme hakkında .


0

Bunun her iki tarafında da olan biri olarak (başkaları tarafından yazılmış kodları inceleyerek ve ayrıca yazdığım kodu inceledim), herhangi bir geri bildirimin içine gireceği üç kategorim olduğunu söyleyebilirim. Dördüncüsü, "her şey yolunda" nın hoş bir davası var.

"İyi olurdu, ama sizi engellemeyecek" (eğer tüm geri bildirimler bu kategoriye girerse, birleştirme isteğini "düzeltmek istemediğiniz sürece XX: XX'de birleşecek" ile gönderebilirim , veya "elbette, kontrol etmek için devam edin, sistemin atabileceği blok ne olursa olsun devre dışı bırakıldı"):

  • Cümlenin sonunda tam durakları unutmak (dokümanlardaki yazılar veya yorumlar). Kullanıcılara herhangi bir şekilde yayılmayan herhangi bir şekilde sakarca dilbilgisi şekli (biçim, biçim ve yorum)
  • Daha şık bir yolu olan kod, ancak ne var anlaşılabilir ve deyimsel olan (muhtemelen önerimi bile koyacağım, bu yüzden ayrılmak veya düzeltmek kolaydır)

"Düzeltilmesi gereken şeyler, ancak bunu yapmanız için size güveneceğim" (eğer her şey bu kategoride veya önceki kategoride yer alırsa, cevap vereceğim "bunları düzeltin, size söylerken birleşeceğim" yeniden yapıldı "(ve bu noktada başka hiçbir şeyin ortaya çıkmadığını görmek için hızlıca tarayacağım):

  • Küçük quibbles ("bir boole ile karşılaştırıyorsun true, bu biraz paranoyak ...", ...)
  • Küçük tarz ihlalleri, ("stil rehberi X diyor ki, yaptığın bunun dışında; nasıl gitmek istediğine bağlı olarak, Y ya da Z yapardım")
  • Birkaç eksik test vakası, yazmak zor olmamalı

Ve son olarak, "sorunlu olan şeyler, bu sorunları düzelttikten sonra kodunuzu tekrar gözden geçirmem gerekecek" (bu kategorideki herhangi bir varsa, başka bir inceleme aşaması olması gerekecek, bu nedenle bir yorumda bulunun) Ayrıca birkaç küçük şey var, "ilk iki kategoriden herhangi bir şey varsa", bu sırada bazılarını sabit görmek güzel olurdu:

  • Bu, "hayır, gerçekten çok daha iyi bir yazma yöntemi var", "ne beklediğinizi hesaplamıyorsunuzdur çünkü ünite testiniz bu son durumları özlüyor" ve diğer ciddi sorunları giderir.

0

Bazı insanlar en önemli soruyu unutmuş görünüyorlar: Kod incelemeleri ile gerçekten ulaşmak istediğiniz şey nedir?

Kod incelemelerinin amacı hatasız ve bakımı kolay bir kod elde etmektir. Kod incelemeleri bunu birkaç yolla başarır: Geliştiriciler ilk önce daha iyi kod yazarlar çünkü gözden geçirileceğini bilirler, bilgi inceleme sürecinin bir parçası olarak paylaşılır, gözden geçiren geliştiriciler olarak kendi hatalarına kör olmadığından hatalar bulunur. olabilir.

Gözden geçirme sürecini meslektaşlarınızı bırakmanız veya onlar için iş yaratmanız için bir şans olarak görürseniz, yanlış yapıyorsunuz demektir.

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.