Tüm kodumuzu gözden geçirmeye çalışmalı mıyız?


18

Şu anda geliştirme sürecini değiştiriyoruz ve taahhütlerimizin% 100'ünün akranını gözden geçirmeye çalışıp çalışmadığımızı merak ediyorum.

Kod incelemeleriyle ilgili deneyiminiz nedir?

  • Onlara çok fazla zaman harcıyor musunuz (günde 1/2 saat diyelim), ya da sadece 5/10 dakika boyunca yağma mı yapıyorsunuz?
  • Günlük / hafta / sprint / proje için harcayacağınız sabit bir zamanınız var mı?
  • En önemlisi, hedefin kodun% 100'ünün akran tarafından gözden geçirilmesi için olması gerektiğini veya% 100'ün gerekli olmadığını düşünüyor musunuz?

Kodun% 80'ine çabanın% 20'siyle dokunmaya çalışın. Paranın satın alabileceği en iyi otomatik araçlara yatırım yapın.
İş

2
Otomatik araçlar harika, ancak tüm testleri güncel tutmak için zamanınız ve kaynağınız yoksa işe yaramaz.
Kieren Johnstone

Yanıtlar:


19

Her hikayede bir 'Kod İnceleme' görevimiz var. İdeal olarak bu hikayenin geliştirilmesinde yer almayan biri, bu hikayeyle ilişkili tüm kod değişikliklerini gözden geçirecektir. İyi çalışıyor.

Çok zaman? Çok fazla değil, ne kadar kod olduğuna bağlıdır - bariz hatalar, yazım hataları, temel mantık akıl sağlığı kontrolü, yakalanmamış istisnalar vb.

Bu, hataları bulan kaliteli bir adımdır, bu nedenle bir miktar değeri vardır. Zaman ayırmak bunu yapmanın en iyi yolu olmayabilir - bir şey oldukça karmaşıksa, kod gözden geçirilmeli mi?

Bu arada, başka birinin kod incelemesi yapması önemlidir.


3
"Bu arada, bir başkasının kodu gözden geçirmesi önemlidir ..", soru, kodu yazan aynı kişinin kodu gözden geçirmesi gerektiği anlamına mı geliyor? Nereye giderse? Bunu düzeltmek istiyorum :)
Simeon

4
Hayır, kapsamlı değil ve önemli olduğunu söylüyorum
Kieren Johnstone

5
@Simeon aslında sahibinin kendi kodunu gözden geçirebileceği oldukça yaygın bir yanılgıdır. Tüm operasyonu baltalıyor
Tom Squires

5
@TomSquires: Kesinlikle. Uzun bir süre bir kod parçasıyla çalışırken, aksi takdirde bariz kusurlara karşı "kör" olabilirsiniz, çünkü onu bunun yerine ne olması gerektiği gibi görürsünüz. Bu sorunları daha önce hiç kod görmemiş biri için tespit etmek daha kolay olacaktır. Yazarlar aynı soruna sahiptir ve tıpkı kitaplar redaksiyon olmadan yayınlanmıyor gibi, kod gözden geçirilmeden yayınlanmamalıdır. Kod incelemeleri yapmanın başka avantajları da vardır, örneğin ekibinizin üyeleri arasında bilgi aktarımı için iyidir.
Hamar

@hammar - elbette, kodu yakından tanımayan, yararlı bir şekilde gözden geçirebilecekleri bir kod yazmayan birini bulmaya çalışmak zor bir iştir
Peter Ajtai

12

Kodunuzun ne kadarının incelemelerle kapsandığından daha önemli bir konu, incelemelerin ne kadar etkili olduğudur. İncelemeleriniz az ya da hiç sorunla karşılaşmazsa, tam kapsama ulaşmak işe yaramaz.

İncelemelerinizi daha etkili hale getirmek için ilk çalışma, sonra kapsama alanına karar verin.

Yorumlar sadece kod üzerinde değil, aynı zamanda tasarım üzerinde de yapılmalıdır.



Ayrıca, incelemeler testlerin ve araçların yerini almaz:

  • Yorumlar kuru çalışma kodu olabilir
  • Yorumlar kod analizini içerebilir
  • Yorumlar yeniden kullanımı ve okunabilirliği inceler
  • İncelemeler verimliliğin bazı yönlerini inceleyebilir, ancak bu, çalışma süresinin gerçek ölçümünün ve şişe boyunlarının bulunmasının yerini almaz
  • Statik kod analizi için araçlar vardır
  • Kodlama kurallarını test etmek için araçlar var, bu konuda inceleme süresini boşa harcamayın
  • Ünite, sistem ve entegrasyon testleri ıslak çalışma kodu
  • Birim, sistem ve entegrasyon testleri testi otomatik olarak tekrarlanabilir, kod incelemeleri genellikle tek seferlik
  • Birim testleri yüksek kod kapsamına sahip olmalı ve hem ana başarı senaryolarını hem de son koşulları test etmelidir, kod incelemeleri bunu sadece kısmen yapabilir
  • Entegrasyon testleri, birimlerin veya sistemlerin birlikte çalışma yeteneğini test eder, kod incelemesi bunun yerini alamaz
  • Sistem tüm sistemin test işlevselliğini test eder, kod incelemesi bunun yerini alamaz



İncelemeler için aylık (veya sprint başına) önceden belirlenmiş bir süre ayırmayı deneyin. Bir sezgisel tarama kullanarak bir sonraki ayrılmış yuvada incelemek istediğiniz kodu seçin:

  • Bildirilen ve tanımlanamayan bir hata içerebilecek kod
  • Kodun yakın zamanda içinde hatalar tespit edildi
  • Performans sorunları olan kod (şişe boyunları)
  • Yeni geliştiriciler tarafından yazılan kod
  • Daha önce aşina olmayan biri tarafından yakın zamanda güncellenen eski kod
  • Yeni alanlarda kod
  • Yeni geliştiricilerin öğrenmesini istediğiniz mevcut kod
  • Karmaşık sorunları çözen kod
  • Analiz araçlarıyla karmaşık olarak tanımlanan kod

Ve unutmayın, yazarları değil kodu (veya tasarımı veya testleri) inceliyorsunuz.



Aşağıdaki okuma materyallerini tavsiye ederim:

Seçmeli Ev Ödevi İncelemeleri
En İyi Akran Kodu İncelemesinin Sırları


5

Değişir.

Yazılımınızın ne yaptığına bağlıdır:

  • Elektronik bir kalp pilini veya bir uzay mekiğini kontrol ederse, kesinlikle evet.

  • Bu bir ıskarta prototipi ise, muhtemelen hayır.

Ayrıca, ne kadar iyi kaynaklandığınıza, geliştiricilerinizin ne kadar deneyimli olduğuna ve kod incelemelerinde ne aradığınıza da bağlıdır. (Bir başkasının kodunu inceleyen ortalama geliştiricinin muhtemelen stil sorunlarını fark edeceğini ve ince algoritmik hataları özleyeceğini unutmayın ... özellikle kod incelemenin bir angarya olduğu göz önüne alındığında.)

Tavsiyem, doğruluğun kritik olduğu ve tespit edilmeyen hataların maliyetinin yüksek olduğu kod için kod inceleme çabanızı kaydetmek olacaktır.


5

İlk olarak, bu soruya cevap vermelisiniz: Kodu neden inceliyorsunuz?

Elinizdeki cevapla hangi kodun gözden geçirilmesi gerektiğini belirleyebilirsiniz.

Bazı kod incelemeleri, testin tam olarak ne yaptığını veya ne yapacağını başarır. İncelemelerinizin amacı buysa, testiniz azsa% 100'e yaklaşmak iyi bir fikirdir. Ancak, test araçlarının bunu yapmasına izin vermek, tüm kodların gözden geçirilmesi ihtiyacını azaltacaktır.

En iyi incelemeler, bilgiyi paylaşmaya ve incelemedeki geliştiricilerin yeteneklerini artırmaya odaklanmış gibi görünmektedir (ya kodu yazan ya da kodu inceleyen). İncelemelerin birincil nedeni olarak, kodun% 100'ünü gözden geçirdiğinizden emin olmak muhtemelen aşırıdır.


3

Mükemmel bir dünyada, gereksinimler spesifikasyonlarından kullanıcı kılavuzlarına ve test senaryolarına kadar her şey yazar ve akranları tarafından en az bir kişi tarafından açıkça okunacaktır. Ancak incelemeler, basit masa kontrolleri bile zaman alır ve maliyetlidir. Bu, neyi incelemeniz gerektiğini ve ne zaman incelemeniz gerektiğini seçmeniz gerektiği anlamına gelir.

İncelenecek şeylere öncelik vermenizi, bunları nasıl incelemek istediğinizi seçmenizi ve uygun ayrıntı düzeyiyle mümkün olduğunca incelemeye çalışmanızı öneririm. Önceliklendirme, gereksinimlerin gözden geçirilmesi, tasarım ve üretim kodunun gözden geçirilmesi ve test senaryolarının gözden geçirilmesi gerektiği gibi yapay tipe dayanabilir. Bu bağlamda, yüksek riskli veya yüksek değerli bileşenlerin incelemede bir öncelik veya belki de daha resmi bir inceleme alacağını belirtebilirsiniz.

Zamana kadar, her şey bileşenin ne kadar öncelikli olduğuna geri dönüyor. 10-15 dakika inceleyerek geçirdiğim zamanlar oldu ve diğer zamanlarda kodu tek tek okuduktan sonra 30-45 dakika süren daha resmi bir inceleme işlemi yapmak için bir odaya gitti ( modül).

Sonunda, zaman, maliyet, kapsam ve kalite arasındaki dengedir. Hepsine sahip olamazsınız, bu yüzden nerede yapabileceğinizi optimize etmeniz gerekir.


3

Bir öneri olarak, herhangi bir inceleme yapmayı planlıyorsanız, incelemelerin ekip üyeleri arasında gereksiz sürtünmelere neden olmadığından emin olmak için inceleme kapsamı ve hedefi hakkında bazı paylaşılan yönergelere sahip olun.

Tutarlı ekipler daha iyi projeler geliştirir. İnsanlar saçma veya mükemmellik talepleri üzerine ilişkileri kaybedebilirler. Her zaman bu ya da bu konuda şikayette bulunacak ve başkalarını bu şekilde olduğu için rahatsız eden bir kişi vardır ...


2

Akran değerlendirmeleri yapmak için günde bir saat ayırmak, ancak her zaman gerekmez. Kod tabanımız birkaç düzine ürün arasında paylaşılıyor. Politikamız, bir ürüne özgü koddaki önemsiz bir değişikliğin incelenmeden check-in yapmasının uygun olmasıdır. Daha karmaşık tek ürün değişiklikleri bir inceleme gerektirir, ancak bir kez daha vermek için masanıza bir meslektaşınızı çağırmak kadar resmi olmayan olabilir. Paylaşılan koddaki değişiklikler, diğer ürünlerdeki geliştiriciler de dahil olmak üzere daha resmi bir inceleme gerektirir. Politikamızın çalıştığım diğer şirketlere kıyasla oldukça iyi bir denge oluşturduğunu düşünüyorum.

İncelemelere günde daha az merkezi rolleri olan bazı meslektaşlarımdan daha fazla zaman harcıyorum, ancak makul olmayan bir süre saymıyorum, çünkü inceleme politikasından önce, bir geliştiricinin hatalarını izlemekten daha fazla zaman harcayabilirim başka bir ürün tanıttı.


Bu bir ortalama mı? Karmaşık bir incelemeyi bir saatle sınırlamak garip görünüyor ve eğer gözden geçirecek çok şey yoksa .. iyi günde bir saatin nasıl işleyebileceğini göremiyorum?
Kieren Johnstone

Bu bir sınır değil. Zamanı tam tersine değil, ne kadar sürdüğüne göre ayarladım. Genellikle bir saat içinde 2 değerlendirme alabilirsiniz. Bundan daha uzun sürerse, check-in'leriniz çok büyük, elden önce yeterli tasarım incelemesi almıyorsunuz veya kod inceleme araçlarınız çok hantal. Kod incelemeleri bir çek değil, bir yeniden tasarım.
Karl Bielefeldt

2

Code için% 100 incelemeler yaptık. Testten çok daha ucuz, özellikle% 100 kod kapsamı testi. Onlara çok fazla zaman harcamıyoruz, günde bir saatten fazla inceleme yapmak daha az üretken hale geliyor. (30 dakika çok değil ).

Süreçte sıfırlama yaparken notlarınızı saklayın. Ne buldun? KG daha sonra ne buldu? Müşterileriniz ne buldu? Bu böcekler neden senden kaçtı?


7
İnceleme otomatik testten daha ucuzdur? Bir kez bir test yazdığınızı, bir kez bir testi gözden geçirdiğinizi ve istikrarlı bir test paketiniz olduğunu varsayarsak, herhangi bir inceleme (projenin ömrü boyunca) yapmak için gerekenden çok daha az zaman ve para harcamalısınız. Ayrıca,% 100 kod kapsamını hedeflemek, testlerin daha uzun süre / maliyete neden olabileceği kaynak israfıdır. Ayrıca incelemelerde 30 dakikayı sorgularım - bir modülü 30 dakika boyunca inceleyebiliriz, ancak başlangıçta kodu okuma, sistemdeki rolünü anlama ve yorum yapma hazırlık zamanı vardır.
Thomas Owens

@MSalters'ın iddiaları duyulmamış değil, ben de sadece 30 dakika sürdüğünden şüpheliyim .. İncelemenin otomatik birim testinden daha uygun maliyetli olduğu ve NASA olduğu tek bir yer okudum. Bu durumda, sonunda kodu manuel olarak incelemek daha ucuz olduğundan birim testini tamamen bıraktılar. Tabii ki, NASA'nın hala 12: 1 test cihazı: geliştirici oranı vardı, bu yüzden başka testler de yapıyorlardı ...
Michael

2
@Thomas Owens: Birim testleri basit hataları bulur. Pahalı hatalar, birden fazla ünitenin beklenmedik şekillerde birleştiği hatalardır. Başka bir hata türü de kaçırılan köşe vakalarıdır. Bir vakayı kaçıran bir geliştirici de bunun için bir birim testi yazmaz, ancak ikinci bir göz seti onu tespit eder.
MSalters

@MSalters Bu yüzden otomatik entegrasyon ve sistem testleri ile birim testleri yazıyorsunuz. Gerçekten, manuel olarak yapılması gerekebilecek tek test kabul testleridir. Ve yaratılış üzerine testleri gözden geçirmek, en kritik vakaların test edilmesini sağlamaya yardımcı olacaktır.
Thomas Owens

2

Çoğunlukla ekip oluşturma ve uygulama hakkındaki fikirleri paylaşma konusunda düzenli kod incelemeleri yapın. Bu şekilde iş arkadaşlarınızdan çok şey öğrenebilirsiniz.


Bu sadece birkaç fayda sağlar. Hata bulmanın önemli olduğunu düşünüyor musunuz? Eğer öyleyse, ne kadar?
JeffO

Tabii ki hataları bulmak önemlidir ama daha büyük yararı kod incelemelerinden elde edilen uzun vadeli bilgidir. Belki de gelecekte önlenebilecek kötü bir yaklaşımla bir hata yaratıldı
kodlayıcı

2

Her check-in için bir eş kodu incelemesi gerekiyor. Eğer bir akran mevcut değilse, bir check-in incelemesi düzenleriz. İnceleyen, kaynak kontrolü check-in yorumunda not edilir.

Bunlar çok zaman almaz ve akranlar arasında yapıldığından, yetişkinler için toksik bir çocuk yönü yoktur.


2

Kod İnceleme, IMO gereklidir. Sen 99.999 ... sen her zaman doğru olmayacaksın, bu yüzden doğru olduğundan emin olmalısın. Belirli bir zamanım var mı? Hayır. Ama kodumu kontrol etmek için zaman ayırıyorum. Genellikle aynısını yapan bir meslektaşım var.


1

Kod incelemeleri göz korkutucu görünebilir, ancak düzgün yürütüldüklerinde değerli bir araçtır. Tasarım ve uygulama hatalarına karşı ilk savunma hattınız olacaklar. Yerleştirdiğiniz her özellik için kod incelemesi yapmıyorsanız, ASAP'ı başlatmalısınız.

Akran incelemelerine ne kadar zaman harcayacağına gelince, iyi bir uygulama, kod incelemesini yürütmek ve yanıtlamak için toplam tahmini geliştirme sürenizin% 5-10'unu bırakmaktır.

Sağ ayaktan başlamanıza yardımcı olabilecek etkili kod incelemeleri yapma konusunda bir teknik incelememiz var. Bu adım adım bir kılavuzdur ve karşılaşabileceğiniz yaygın tuzakları ve bunların nasıl çözüleceğini tartışır. Şunları yapabilirsiniz indirmek web sitemizden.

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.