Bu uygulamadan geldiğimde yeni yerimde kod incelemeleri ile nasıl başa çıkılır?


33

Yeni şirketimdeki ekibin kod inceleme süreci yok.

Bir zorunluluk kültürü olarak kod incelemesi olan şirketlerden geliyorum ve bu nedenle kodumu bir başkası tarafından incelenmeden yapmakta kendimi rahat hissetmiyorum.

Kod incelemesinin kaliteyi arttırmanın ve zamandan tasarruf etmenin bir yolu olduğuna inanıyorum, çünkü daha önce potansiyel problemleri yakalar (çift programlamadan bahsetmiyorum bile).

  • Kod incelemesinin zaman kaybı değil, zaman tasarrufu olduğunu nasıl gösterebilirim?
  • Ünite testleriniz varsa kod incelemesi atlanabilir mi?

site dışı kaynak önerileri, yardım merkezi başına açıkça konu dışıdır . Bkz meta.programmers.stackexchange.com/questions/6483/...
tatarcık

1
Burada sormayı düşünün: meta.codereview.stackexchange.com Aklımda, bu soru burada sorulabilir çünkü Programlama ile ilgili bir kavram bilmek istiyor.
xqMogvKW

1
Ayrıca kod incelemesine inanan bir firma olduğum halde, kod incelemesinin sürekli bir savaşa dönüştüğü bazı kötü deneyimlerim oldu, kod inceleme aracı (gerrit) aşırı tutkulu tartışmalara yol açan bazı tartışma panolarının kötü bir avatarına dönüştü büyük egolar tarafından. Bunun herhangi bir şirkette gerçekleşmesi gerektiğinden veya bunun sadece insanların olgunluk meselesi olup olmadığından emin değilim.
Joel

"Kod İncelemesi bir zorunluluktur mu?" çok büyük, cevaplanamayan bir sorudur çünkü çok sayıda faktöre bağlı olacaktır - şirket büyüklüğü, # geliştirici, gelir, vb.) İyi programlama uygulamaları için arzunuzu ve coşkunuzu hem nasıl dahil edebileceğinizi hem de pazarlayabileceğinizi düşünürdüm ve halka açık sitelerinizde yazılım işçiliği (özgeçmiş, linkIn, github, twitter, vb.) Ne umursadığınızı ve ne aradığınızı yayınlayın ki beraber olmak istediğiniz kişiler bunu görsin. Bu elbette 'gelecek' tavsiyesi, dolayısıyla bir yorum :)
Michael Durrant

3
Bunun nasıl bir "site dışı kaynak önerisi" olduğunu göremiyorum. Bu bana en yakın neden gibi gelmiyor.
nyuszika7h

Yanıtlar:


30

Ünite testleriniz varsa kod incelemesi atlanabilir mi?

Ama neden?

Akran değerlendirmesinin birincil rolü böcekleri yakalamak değildir.

Evet, bazı olası hataları ve şüpheli, hataya açık kodları tanımlayabilirsiniz, bu genellikle olur, ancak bazen bazı yanlışlıkları tespit etmek, meslektaş incelemesinin hataların varlığını dışlamak için güvenilir bir yol olduğu anlamına gelmez . Bundan uzak. Uygulamanın işlevsel doğruluğunu doğrulamak için doğru bir araç değildir .

Kod incelemesi , kod korumasını zorlar . Bu kodun üretime geçmeden önce temiz ve anlaşılır olmasını (sadece yazarı için değil) talep edeceğim.

Birim testlerinin varlığı buna tamamen diktir. Tamamen anlaşılmaz bir kod için% 100 kod kapsamı ve tüm testlerden geçebilirsiniz.

Kod incelemesi ayrıca, diğer geliştiricilere işinizle ilgili bilgi verir; böylece ne olduğunu ve oradan ne alabileceklerini bilirler veya tatil günlerindeyken hata raporlarını ele alırlar. işlerini iyi yapın - kod tabanını tutarlı tutun (uygulama boyunca benzer desenlere ve kurallara sadık kalın) veya kod yinelemesinden kaçının.

Daha geniş bir şemada, başka bir kişinin kodunu okumayı geliştirici olarak da öğrenir ve büyür.

Birim testleri pek azının yerine geçebilir. Evet, iyi yazılmışlarsa, belgeler gibi okurlar ve bunun için çaba göstermeliyiz. Fakat yine de, bu durum tam tersi, akran incelemesi yapmakla karşılıklı olarak özel değildir - akran incelemesinin tüm avantajları hala geçerlidir, akranlarınızın bakması gereken güzel ünite testlerinin olması, inceleme sürecini daha kolay ve daha faydalı hale getirecektir. gereksiz değil.


4
Birim testlerinin de kod incelemelerinin yerine geçtiğine inanmıyorum. Ancak birim testlerin birincil rolü de böcekleri yakalamak değildir. Evet, ünite testi yazarken bazı potansiyel hataları tanımlayabilirsiniz, ancak ünite testleri bir şeyi değiştirmek zorunda kaldığınızda daha sonra hataları ortaya koymayacağınızdan emin olmak içindir . Bu nedenle, birim testlerinin amacı, kodunuzu da sürdürülebilir kılmaktır.
Doktor Brown

2
@DocBrown bu doğru. Ancak, gerileme hataları yakalamak da yakalayıcı böcek kategorisine girer. Açıkçası bu, ünite testlerinin akran incelemesine göre (bu yönde) sahip oldukları avantajlardan biridir, çünkü bunlar tek seferlik bir işlem değildir. Her bir değişiklikten sonra kod kodunun tamamını tekrar gözden geçirmek mümkün olmadığından, meslektaş incelemesi bu önemli yönü ele almaya bile çalışmamaktadır.
Konrad Morawski

1
@DocBrown Peer review doesn't even attempt to tackle this important aspect- iyi, öyle. Bir ölçüde. Sık sık kendimi işaret ederken buluyorum. "ortak, burada aynı mantığı etkili bir şekilde tekrarlıyorsunuz ve bu bir gıdıklama bombası. Bir gün başka bir yerde değişecek ve burada güncellemeyi unutacağız ..."
Konrad Morawski

24

Kod incelemesinin zaman kaybı değil, zaman tasarrufu olduğunu gösteren herhangi bir çalışma ve istatistik var mı?

Ben hiçbirini bilmiyorum. Bu tür çalışmaları yürütmek de zor, çünkü biri kod incelemelerini kullanan, diğeri kullanmayan, başarması için eşit ve gerçekçi karmaşıklık görevine sahip iki takıma ihtiyacınız olacak . Muhtemelen aynı problemi çözmelerini istemeniz gerekir , bu da pencereden çok para atmak anlamına gelir. Ve istatistiksel alaka elde etmek için deneyi sık sık tekrarlamanız gerekecek, bu da büyüklük emirleriyle para atmayı artıracak.

Eğer kod incelemeleri kullanan şirketlerin verimliliğini ölçmeyen şirketlere karşı ölçtüyseniz, verimliliği nasıl ölçeceğimiz belli değil, aynı zamanda asıl nedenin ne olduğu da belli değil. Kod incelemeleri daha büyük bir kültürün parçasıdır. Hangi kısmının aslında takımı daha verimli kıldığını söylemek zor (ve takımın ya da projenin yapısına bağlı olabilir). Veya bu kültürün varlığı basitçe şirketin daha küçük veya daha küçük olduğu ve her birinin birçok etkisi olduğu anlamına gelebilir. Ya da sadece kod incelemelerine sunulma istekliliği, egonuza sağlıklı bir mesafeyi engeller veya teşvik eder;)

Ama unutma: ondan almak için kendi tecrüben var. Seni neden işe aldıklarının bir parçası. Bu nedenle, verimliliği arttıracağınıza gerçekten inanıyorsanız (ve ekibiniz aslında bu konuda sıkıntı çekiyorsa), bunu açıkça belirtin.

Ünite testleriniz varsa kod incelemesi atlanabilir mi?

Hayır! Testlerin önemine inanıyorsanız, aslında testleriniz incelenecek ilk şey olmalıdır. Ya saçmalıksa? Veya kapsama berbat ise? Veya davranış yerine uygulama test ederlerse?


2
Test durumları için kod incelemesinde gerçekten iyi bir noktaya değindiğini düşünüyorum. teşekkür ederim!
jparkcool

4
"Çekecek kendi deneyime sahipsin" için +1 - aslında, eğer biri bir süre için kod incelemeleriyle gerçekten çalıştıysa, tipik bir kod incelemesi sırasında genellikle ne kadar kalite sorununun çözüldüğünü ve ne kadar bilgi aktarımı olduğunu görmüş olmalı. başarıldı. Bu deneyime göre, kod incelemeleri için veya kod incelemelerine karşı bir avuç tartışmanın olmaması zor olmalı.
Doc Brown

2
İlk paragrafınızla ilgili olarak: Sadece aynı görevi yerine getiren iki takım değil, aynı kapasitede iki takım olması gerekir, bireysel deneyimler bunu incelemek için uğraşırlar.
David Wilkins

"Ya saçmalık varsa? Veya kapsama berbatsa?" Ya da sadece söyle return true;.
Burhan Ali

1
Kod incelemelerinin kapsamlı bir şekilde ele alınması için Kod Komutunun 20. bölümünü , kullanımını destekleyen çalışma ve istatistikleri okuyun. İşte birkaç iyi özet: Jeff Atwood'un blogu ve başka biri
Mike Partridge

5

Bulduğum bazı rasgele slaytlardan alınmış , ancak zor veriler Steve McConnell'in Code Complete kitabından geliyor:

Kod Değerlendirmeleri Faydalı mı?

"Eş kod incelemelerinin kodunuzu geliştirmek için yapabileceğiniz en büyük şey olduğuna inanıyorum"

Kodlama Korku'dan Jeff Atwood, http://www.codinghorror.com/blog/2006/01/code-reviews-just-do-it.html adresinde


"Bireysel denetimler tipik olarak prototip ve yüksek hacimli beta testi hariç diğer tekniklerden daha yüksek olan kusurların yüzde 60'ını yakalar."

Steve McConnell, Kod Tamamlandı 2. Baskı, sayfa 485

Yani% 60 rakamı Shull tarafından IEEE kağıdı gelir ve ark 2002 Biz Kusurların Mücadele Hakkında öğrendiklerini başlıklı bölümü içerir:

"Akran değerlendirmeleri kusurların% 60'ını yakaladı"


1
Sanırım bununla ilgili sorun 2006 yılında henüz tam olarak çift programlamayı benimsemedik, sanırım bir şekilde akran kod incelemeleri yapmanın bir çeşit yerini almış gibi hissediyorum. Onların bir şekilde karşılaştırılamaz olduklarının farkındayım.
JP Silvashy

3

Yasal Uyarı: Bu cevap benim kişisel deneyimim :)

Koruduğumuz kod incelemeleriyle çok kötü deneyimler yaptım. Çünkü genellikle sadece bir tane gömlekimiz var ve gözden geçirecek çok fazla şey yok.

Ancak gerçek projelerde iyi deneyimler edindim, sınav saatimde antrenörüm kod düzenlememi gözden geçirdi ve çok sık yaptığım bazı hataları bulmama çok yardımcı oldu, artık yapmam.

Bu yüzden, ne yaptığınıza, kaç kişi olduğunuza vb. Bağlı olduğunu söyleyebilirim.

Ayrıca kod göstermelerinizin bir savaşta sona ermesi riski de önemsiz değildir.


3

Ekip liderinizden ve / veya meslektaşınızdan, kod incelemeleri normalde yapılmadıysa bile, belki de eğitiminizin bir parçası olarak, kodunuzu tekrar gözden geçirmesini isteyebilirsiniz.

Kodunuzun incelenmeden önce iyi yazılmış ve test edilmiş olduğundan emin olun.

Bir ekip lideriyken, yeni çalışanların kod incelemelerini yapardım (bir süre sonra) kodlarında eleştirmek için herhangi bir hata veya başka bir şey bulmayı bırakırdım ve bu noktada onlarla kod incelemesi yapmayı bırakırdım; Bu ne zaman olurdu:

  • Etkileştikleri sistemleri öğrendiler ve benim açıklamalarıma ihtiyaçları yoktu.
  • Kodlarını görmeden önce hatasız olana kadar tasarlamayı ve / veya test etmeyi öğrendiler
  • Kodlama stil yönergelerim hakkında, kodlarının bakımını yapabileceğimi düşündüğüm şeyler hakkında yeterince bilgi edindiler.

Kod incelemelerinin birkaç amacı vardır:

  • Koddaki kusurları bulma
  • Ekip üyeleri arasında bilgi transferi

Ekip, deneyimli ekip üyeleri arasında kod incelemelerini atlamayı seçse bile, yeni çalışanların kod incelemelerini yapmanın uygun olduğunu düşünüyorum.


2

Geliştirilen herhangi bir yazılımda yapılacak kod incelemeleri için küçük kurallar yoktur ... hepsi uygulamanın kapsamına, müşteri boyutuna ve şirket boyutuna bağlıdır. Örneğin, gelecekte başka sürümlerin uygulanmadığı basit bir uygulamanın yapıldığı bir uygulama oluşturuyorsanız, orada birim testi yeterlidir. Ancak, daha hızlı bir performans elde etmek için daha iyi bir şekilde yapılmış olabilecek kodun kısa düşmesi için kodu gözden geçirmeniz gereken uygulamanın performansı hakkında konuşurken tekrar kod incelemesi yapılır.

Kod incelemeleri genellikle 2'den fazla geliştiriciden oluşan bir ekibin olduğu ve teknik liderin uygulamanın kalitesini sağlamak ve uygulamayı gelecekteki geliştirmeler için ölçeklendirmek ve farklı hale getirmek için kod standartlarına uymasını istediği bir teknik liderin olduğu yerlerde yapılır. yaklaşan sürümler.

Örneğin, şimdi birçok CMS açık kaynaklı platformumuz var ve bu platformlar, platform özelliklerini geliştirmek için zaman zaman yükseltmeleri yayınlıyor, bu platformlardan birini kullanan bir geliştirici hayal ediyor ve çekirdek dosyalarda kodlama, uygulama yazma gibi kod standartlarına uymamış. Şablon dosyalarındaki kod ve bu kod üretime geçerse ve daha sonra müşteri platformu yeni sürüme yükseltmek istediğinde, kodlama bu platform için kod standartlarına göre yeniden yapılmazsa asla yükseltilmez. Burada kod incelemesi yapılmadan kodun üretime bırakılması ciddi bir sorun haline geliyor.

Bu yüzden piyasaya sürülmeden önce kod incelemelerinin yapılmasının profesyonel yazılım şirketleri için bir zorunluluk olduğunu ve istisnaların yalnızca geliştiricinin çok deneyimli bir programcı olduğu ve onunla yaşadığı kişisel / çok küçük ölçekli uygulamalar için geçerli olduğunu söyleyebilirim.


1

Kod incelemeleri, inceleme sürecinin kendisinden gelmeyen avantajlara sahiptir: Yüksek kalitede olan ancak kısa sürede oluşturulan kodları almak için her zaman bir ikilem vardır. Kod incelemeleri olmadan, kendi başınızasınız, bu nedenle kısa sürede kodu yapmak için kaliteden ödün verebilirsiniz. Kod incelemeleriyle düşük kod kalitesinden kurtulmanıza izin vermeyen bu inceleme uzmanı var - bu tam olarak istediğiniz, ilk etapta istediğiniz ve hangi kalitede kod almak için zaman harcamak zorunda kaldığınız? Daha iyi kod yazmak için harcanan her saat hata ayıklamadan (veya daha fazla) iki saat tasarruf sağladığından, zamandan tasarruf edeceğinizi biliyorsunuz.

Kod incelemeleri olmadan, kendi başınızasınız, bu nedenle yüksek kod kalitesini korumak size kalmış. Basit bir çözüm, kendiniz yaptığınız her değişikliği gözden geçirmek ve kalite standartlarınıza uygun olmayan şeyleri düzeltmektir.

Bu aynı zamanda, kod incelemelerinin egoların çatışmasına neden olduğu korkunç durumlardan da kaçınır - programcı A'nın X yöntemini kullandığı durum, B ise Y yöntemini kullanır, böylece A, yöntem X'i yazarsa, yorumlayıcı B Y yönteminde ısrar eder. Böylece A, Y yöntemini kullanarak kodu yeniden yazar; B, kodu yazmış ve A gözden geçirmişse tam tersi olmuş olur.


0

Kod incelemelerinin savunucusuysanız, korkarım gerçek bir yedek yok. Talihsiz ve basmakalıp dava, (A) uygulamaya aşina olmadıkları ve / veya (B) kod incelemesi için zaman ve çaba harcamayı istemedikleri için kod incelemeleri yapmayan bir çalışma alanıdır. sistem yerinde.

Temel olarak, burada istediğinizi elde etmek için, bir işyeri kültürünün değişmesine ihtiyacınız var - bu asla basit veya kolay değildir. İş yeriniz% 100 olsa bile, kod incelemelerinin mükemmel olduğuna ve bunları benimsemek istediğine ikna olmuş olsa bile, aslında yeni çalışma biçimine geçmenin hala zaman, enerji ve üretkenlik için önemli bir yatırım gerektireceğini unutmayın. Bu yatırım kendini geri öder - ancak yatırıma katkısı olmanız gerekir, sadece kazancı için değil. Roy Osherove'in "Birim Testi ve TDD - Nasıl Gerçekleştirilir" adlı videosuna bakın - kod incelemelerini benimsemenin zorlukları, birim testlerini benimsemeye çok benziyor.

Bu arada, olabildiğince almak için elinizden geleni yapın:

  • Kod incelemelerinin değerini gören başka geliştiriciler varsa, gayrı resmi bile olsa, birbirlerini incelemeyi deneyin.
  • Eğitiminizden sorumlu bir akıl hocası veya bir geliştiriciniz varsa, ona kod incelemelerinde gördüğünüz değeri açıklayın ve kodunuzu en azından bir kez incelemek isteyip istemediklerini sorun.
  • Yöneticinize, başkalarının kodunu gözden geçirmek istediğinizi söyleyin, çünkü sistemi daha iyi anlamanıza yardımcı olacaktır.
  • Bir noktada bir takım lideri olursanız, kod incelemelerini yalnızca ekibiniz için yerel olarak ekleyebilirsiniz.

Bunlardan herhangi birinin en büyük yararı, zaman içinde bakımlarını sağlayabiliyorsanız, etrafınızdaki geliştiriciler kod incelemelerini fark etmeye başlayacaktır. Kod incelemelerinin mevcut kültürle nasıl bütünleştirilebileceğini etkin bir şekilde göstereceksiniz - bu da kültürün değişmeye başlamasının yolunu açar. Kod incelemeleri yardımı , küçük bir ölçekte bunun başkalarının - ve bir bütün olarak kültürün - - örneğini izlemenin yolunu açacağını kanıtlayabiliyorsanız.


-2

Endişelenmeyi bırak - yeni iş verenin kod incelemelerini umursamıyor. Yazdığınız kodu kontrol etmenin sorun olmadığını söyleyen başkaları olmadan kendi yeteneklerinize biraz güvenmeyi öğrenin. Yakında, diğer kişilerin kodlarını gözden geçiren, zihinle uyuşan sıkıcı bir süreç olmadan yaşamayı öğreneceksiniz.

Diğer herkesin kullandığı stil kurallarına (veya sadece stiline) uyun. Hangi yorumların yapılması gerektiğine, hangi adlandırma kurallarının kullanılacağına vb. Karar vermek için deneyiminizi kullanın.

Sonra kontrol etmeden önce her şeyi test edin. En önemli şey, doğru şekilde çalışmasıdır.


2
-1: OP'nin yeni ekibinin kod incelemeleri yapmaması, bunu yapmak için kötü bir fikir yapmaz. Geliştirme sürecinin kalitesini yükseltmeye yardımcı olmak için iyi bir mühendisin işaretidir.
Jørgen Fogh

1
@ JørgenFogh Ayrıca kod incelemelerini destekliyorum, ancak kod incelemelerinin bu özel geliştirme sürecine yardımcı olacağını varsayıyorsunuz. Bu yanıta ek olarak, onlar kod değerlendirmeleri yapmıyoruz neden isteyeceğini - onlar olabilir iyi bir nedeni var. Belki de, bu cevabın önerdiği gibi - bu şirket kodlarını gözden geçirmesi gerekmeyen insanları işe alıyor, ya da en azından bunu yapmanın faydaları sadece ekstra bir maliyete değmiyor. Eğer OP bir şeyi değiştirmeye çalışır ancak hiçbir şeyi değiştirmede bir şans olmazsa, geri dönmenin cevabı bu olacaktır.
DoubleDouble

1
Faydaların maliyete değmemesi mümkündür. Bununla birlikte, ekibin kod incelemeleri yapmaması, bize yapmaları gerekip gerekmediği hakkında hiçbir şey söylemez.
Jørgen Fogh

4
-1: "En önemli şey doğru çalışması." Bu, üretim kodu söz konusu olduğunda neyin önemli olduğuna dair kısa bir görüş açısı. Kod, yazıldığından daha sık okunur. Bir (iyi performans gösteren) kod incelemesinin değeri, doğruluğu kontrol etmenin ötesine geçer. Bir çok avantaj arasında, kod incelemeleri, kodun yazmamış birine anlamlı gelmesini sağlar.
Dancrumb

-2

Eğer yeni işvereniniz kod gözden geçirme fikrinden hoşlanmıyorsa, bunun nedeni eski moda komut ve kontrol tipi metodolojileri ile negatif bir ilişkiye sahip olmaları ve daha modern, çevik tipte bir uygulama seti hedeflemeleri olabilir. Bu durumda, aynı faydaların çoğunu sağlayan ve daha dinamik, modern bir uygulama olarak kabul edilen çift programlama fikrine daha açık olabilirler.

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.