Kod incelemelerini gerçekleştirmenin en etkili yolu nedir? [kapalı]


71

Kod incelemeleri yapmak için hiçbir zaman ideal bir yol bulamadım ve ancak müşterilerim sıklıkla talep ediyor. Her müşteri farklı bir şekilde yapıyor gibi görünüyor ve hiçbirinde memnun olmadım.

Kod incelemeleri yapmanın en etkili yolu nedir?

Örneğin:

  • Bir kişi kalite için kapı bekçisi olarak kabul edilir ve kodu gözden geçirir mi, yoksa ekibin standardı var mı?
  • İnceleme kodunu projektör kullanarak ekip çalışması olarak mı yapıyorsunuz?
  • Şahsen mi, e-postayla mı yoksa bir araçla mı yapıldı?
  • Kod kalitesini sağlamak için incelemelerden kaçınıyor ve çift programlama ve ortak kod sahipliği gibi şeyleri kullanıyor musunuz?

Akıllı Ayı Yazılım , Eş Kod İncelemesinin En İyi Tutulan Sırları adlı ücretsiz bir kitaba sahiptir . Ücretsiz gönderim ücretsizdir. Ve arada sırada satış e-postasını takip ediyorlar. Onlar pek müdahaleci değildi. Ve bu arada ... kitap oldukça iyi.
John MacIntyre

Yanıtlar:


32

İşimde çok basit bir kuralımız var: değişiklikler, bir birleştirmeden veya bagaja bağlanmadan önce en az bir geliştirici tarafından incelenmelidir . Bizim durumumuzda bu, diğer kişinin fiziksel olarak bilgisayarınızda sizinle birlikte oturması ve değişim listesine girmesi anlamına gelir. Bu mükemmel bir sistem değildir, ancak yine de kod kalitesini gözle görülür biçimde iyileştirmiştir.

Eğer kodunuzun gözden geçirileceğini biliyorsanız, ilk önce sizi incelemeye zorlar. O zaman birçok sorun ortaya çıkıyor. Sistemimiz altında, gözden geçirene ne yaptığını açıklamalısınız, bu da daha önce kaçırmış olabileceğiniz sorunları fark etmenize neden olur. Ayrıca, kodunuzdaki bir şey derhal gözden geçiren için net değilse, bu daha iyi bir isim, yorum veya yeniden düzenleme yapılması gerektiğinin iyi bir göstergesidir. Ve tabii ki, eleştirmen de problemler bulabilir. Ayrıca, değişime bakmaya ek olarak, gözden geçiren yakın koddaki sorunları da fark edebilir.

Bu sistemin iki ana dezavantajı var. Değişim önemsiz olduğunda, gözden geçirilmesi çok az mantıklıdır. Ancak, değişiklikleri yapmadıklarında “önemsiz” ilan etme kayganlık eğiminden kaçınmak için kesinlikle kurallara bağlı kalmalıyız. Öte yandan, bu, sistemdeki önemli değişiklikleri veya büyük yeni bileşenlerin eklenmesini gözden geçirmek için iyi bir yol değildir.

Bir geliştiricinin, ekibin geri kalanına incelenmek üzere e-postayla göndereceği ve ardından tüm ekibin bir araya gelip tartışacağı daha önce daha resmi incelemeler denedik. Bu herkesin çok zaman aldı ve sonuç olarak bu incelemeler az ve çok arasındaydı ve kod tabanının sadece küçük bir yüzdesi gözden geçirildi. "Başka bir kişi, taahhütte bulunmadan önce değişiklikleri gözden geçirdi" bizim için çok daha iyi çalıştı.


Çok yararlı, teşekkürler! Kendi takımımın oturumlarını hazırlıyorum ve bunun iyi bir yaklaşım olabileceğini düşünüyorum.
Neonigma

13

Kod incelemelerini severim, ancak bir ağrı olabilir. Onlardan hoşlanmamın nedeni, kod üzerinde daha fazla göz ve farklı bir bakış açısı kazanmaları. Çift programlamada bile kodun gözden geçirilmesi gerektiğine inanıyorum. Aynı kod üzerinde çalışan iki kişinin, aynı hatayı toplu olarak farklı bir göz grubunun kaçırmayabileceği aynı hatayı yapması için yeterince kolaydır.

Projektörlü bir grup olarak yapılırsa , toplantıdan önce gerçekten tek tek gözden geçirilmelidir . Aksi takdirde, sadece can sıkıcı bir zaman kaybıdır.

Yalnızca e-posta yoluyla ve bir grupta kod incelemeleri yaptım. Genel olarak konuşursak, şahsen yapılması gerektiğini sanmıyorum. Omzunun üzerinden bakan biriyle kodu zorlamak için biraz daha baskı hissediyorsun. Kod incelemesi için tasarlanan bir aracın, sıradan özelliklerin bazılarına yardımcı olabileceği ve sorun kod parçalarını işaretlemeyi kolaylaştıracağı ve e-posta yoluyla yapılabileceğine inanıyorum.

Bir kodun tüm kod incelemelerini yapmasının sorunu, bir tıkanıklık olabileceğidir. İyi belgelenmiş ve tasarlanmış kodlama standartları ile gerekli olmamalıdır. Ortama / yayın programına bağlı olarak, her zaman bir bekleme kodu gözden geçiricisi olarak birisinin bulunması iyi bir fikir olabilir.

Kod sahipliğinin bu kişi bu kodu anlamayı ve potansiyel olarak kapı bekçisi rolü oynamayı öncelikli hale getirebileceği için iyi bir fikir olduğuna inanıyorum.


+1 "Projektörlü bir grup olarak yapılırsa, toplantıdan önce gerçekten ayrı ayrı gözden geçirilmelidir. Aksi takdirde, sadece can sıkıcı bir zaman kaybıdır."
AShelly

1
“Projektörlü bir grup olarak yapılırsa can sıkıcı bir zaman kaybıdır” .. Orada, sizin için düzeltti.
gbjbaanb

Şahsen bunu yaparken, farklı bir işlemdir, omzunuzun üzerinden bakarken diğerinin kodunu gözden geçirmezsiniz. Ne değiştiğini, ne değiştiğini ve onu dinlerken neden onu satır satır açıklıyor. Anlamanız ve gözden geçirmeniz için değil, kodu açıklamak için kimin yaptığı üzerinde baskı yapar.
Didier A.

6

At SmartBear bir sunmakla kalmaz kod incelemesi aracı , biz de günlük olarak bir gün kullanıyoruz. Gelişim sürecimizin önemli bir parçası. Check-in yapılan her değişikliği gözden geçiririz.

Sanırım birçok nedenden dolayı tek bir bekçi kodunu incelemek kötü bir fikir. Bu kişi bir tıkanıklık olur ve gerçekten etkili olması için çok fazla kod incelemesi yapmak zorundadır (sadece projeyi devam ettirmek için) (bir anda 60-90 dakika etkililik sınırıdır). Kod incelemeleri fikir ve bilgiyi paylaşmanın harika bir yoludur. Kapı bekçiniz ne kadar süperstar olursa olsun, takımdaki diğer kişilerden öğrenebilirler. Ayrıca, herkesin kod incelemeleri yapmasını sağlamak, aynı zamanda, insanların kodun kalitesine sahip olduklarını düşündükleri bir "toplu kod sahipliği" ortamı da yaratır (yalnızca QA veya kapı bekçisi değildir).

Kod incelemelerini etkinleştirmek için 11 ipucu içeren " Eş Kod İncelemesi için En İyi Uygulamalar " konulu ücretsiz bir teknik broşürümüz var . Bunun çoğu, John'un daha damıtılmış bir biçimde bahsettiği kitaptaki aynı içerik.


1
Aşağı bağlantı ...........
Pacerier,

Bağlantı çürüğü için üzgünüm. Geçerli URL’yi düzenledim, ancak bu tekrar olmasını engellemeyecek.
Brandon DuRette

3

Bahane yok. Uygulama çifti programlama. Mümkün olan en iyi kod incelemesi. Başka herhangi bir mekanizma suçlama oyunu ile sonuçlanır. Çift programlama, takım ruhunu ve ortak mülkiyeti teşvik eder. Ek olarak, fikirlerinizi çiftinizle tartışır, hızlı başarısız olur, düzeltici önlem alırsınız ve yalnızca Configuration Management System (CMS) olarak kabul edilen kodlanmış ve gözden geçirilmiş koddur. Mutlu çifti programlama!


Tamamen katılıyorum. Çift programlama, kod kalitesinin yazıldığı gibi onaylanmasını sağlar. Ayrıca, TDD'yi tanıtın ve bir özellik dalına bırakılan test edilmiş kalite kontrol kodunu elde ettiniz. Branştaki özellikleri ayrıca yazılmış QA testlerine karşı test edin. Geçişte, usta birleştirmek. Kodu temizle, master'ı temizle.
dooburt

Çift programlama, yazılım geliştiricilerin çok büyük bir yüzdesi için işe yaramaz ve muhtemelen en iyi geliştiricileri dışladığını söylemeye teşebbüs ediyorum. Çoğu SW geliştiricisi bilgisayar programlamasına girer çünkü içe dönükdür, yani bilgisayarlarla çalışmayı insanlardan daha fazla tercih ederler. Birincisi, etkili olabilmesi için “bölgeye” girmem gerekiyor ve bu “beni rahatsız etme” anlamına geliyor. Beni kendi bölgemde bırakın, ben 4 veya 5 diğer geliştiricinin ve ardından bazılarının çalışmalarını yapacağım.
Dunk,

2

Birden fazla kişinin kod tabanına katkıda bulunacağı bir proje üzerinde çalışıyorsanız, bir standart oluşturulması gerekir.

Bu noktada, benim deneyimlerime göre bir kişiyi kod incelemesinin "kralı" olarak tanımlamak en iyisidir, eğer yapacaksa ve ne söylerse gider. Bu bağlamda, bir kullanıcı standartlara uymuyorsa, kral bununla ilgilenecektir.

Kendimden biri olarak, okunabilir, mantıklı ve her şey için kendi kodumu birçok kez gözden geçiririm. Genellikle javadoc veya benzerini kodladığımız dillerde kullanırız ve işlevleri, sınıflara vb. Sahiplik eklemek için @author etiketini kullanırız.

Eğer bir fonksiyon doğru değilse sınıfla vb. Aynı mal sahibiyle konuşuruz.


2

Benim şirketimde her göreve görevi test etmek için bir test cihazı ve ayrıca kodu gözden geçirmek için bir kod gözden geçiricisi atanmıştır.

Ürününüz zaten piyasaya sürülmüşse ve yanlış bir şey yapmadığınızdan emin olmak istiyorsanız (tutamak sızıntısı veya bellek sızıntısı gibi) kod incelemeleri harika bir şeydir. Ürünün piyasaya sürülmesinden önceki ilk gelişme sırasında, kod incelemelerinin çok fazla iş olabileceğini düşünüyorum.

Ekibinizin tüm üst düzey geliştiricileri varsa, meslektaş değerlendirmesi yine de yararlıdır. Herkes bazen hata yapar. Ekibinizde bazı yaşlılar ve bazı gençler varsa, o zaman kıdemli geliştiricilerin kod incelemelerini yapmasına izin verin, ancak yine de kıdemli kod için de kod incelemeleri olsun.

Kod incelemeyle ilgili önemli bir nokta, yaptığımız hataları yakalayabilmesi, ancak sınamanın yerine geçmemesidir.


2

Çift programlama yapmıyorsanız kod incelemelerini kullanmanızı öneririm.

Avantaj ve dezavantajları eşleştirmeyle tartışmak değil, ancak kodunuzu sürekli (en azından) başka bir kişi tarafından gözden geçirmenin olumlu etkilerini tartışmak zordur. Kod (en azından) iki programcı tarafından bile yazılır ve tasarlanır - bundan daha iyisi olamaz. "En azından" diyorum çünkü imo, çiftleri çok fazla değiştirmeyi denemelisin ki herkes kodla çalışsın.


2

Katıldığım kod incelemelerinde yapmaya çalıştığım şeylerden biri, kodu kendim inceledikten sonra, kodun statik analizini yapıyorum, Findbugs, PMD, JavaNCCP ve ark. incelenecek kod. Özellikle alışılmadık derecede yüksek bir karmaşıklık seviyesine sahip herhangi bir şeye bakmak istiyorum, neden bu karmaşıklık seviyesinin gerekli olduğunu veya önerilen güvenlik açığının neden önemli olmadığını açıklamalarını istiyorum.

YMMV


2

Şu anda çalıştığım yerde donanım aygıtları ve kritik altyapıya giren onlarla ara yüzleşen yazılımlar üretiyoruz. Sonuç olarak, bırakma kalitesine çok önem veriyoruz. Fagan Inspection'ın bir çeşidini kullanıyoruz ve resmi bir inceleme sürecimiz var. Diğer sertifikaların yanı sıra ISO 9001 sertifikasına sahibiz.

Kritik altyapı endüstrisi aynı güvenilirlik ve tekrarlanabilirlik ile çok ilgileniyor. :-)


2

Şirketimde küçük programcılar için zorunlu kod incelemeleri ve yaşlılar için gönüllü incelemelerimiz var. Belirlenmiş kod gözden geçiricisi yok, inceleme istekleri tüm geliştiricilere gönderilir.

Bu sistem iyi çalışıyor - zaman izniyle değerlendirme yapıldı ve değişiklikler çeşitli gözbebekleri tarafından gözden geçirilebilir.

Mükemmel ve ücretsiz İnceleme Kurulu aracı bizim için gerçekten iyi çalışıyor ve incelemeleri iletmenin mükemmel bir yolu olduğunu kanıtladı.


2
yaşlılar için gönüllü yorumlar. Üst düzey programcıların kesinlikle kod incelemelerini kullanabilecekleri birçok proje üzerinde çalıştım ...
Michel

1

Benim şirketimde, bazı çok kritik üretimi değiştirmediğimiz ve standart KG işlemimizi gerçekleştirecek zamanımız olmadığı sürece, check-in işlemlerinden önce resmi kod incelemeleri yapmayız.

Yaptığımız şey, kod incelemesinin faydalı olacağını düşündüğümüz her an , değiştirilen koda "// todo: joe tarafından kod incelemesi" yorumu ekliyoruz. Genellikle, Joe’yu seçeriz, çünkü değiştirilmiş koda sahiptir, ancak bu seçim kriterleri geçerli değilse (genellikle yapar), sadece rastgele birini seçtik. Ve elbette, eğer Joe o zaman müsait olursa, eski güzel omuz incelemesi yöntemini kullanırız.

Gözden geçiren kişi olarak, yapmanız gereken tek şey periyodik olarak "// todo: benim tarafımdan kod incelemesi" için tüm kodu aramak , değişiklikleri gözden geçirmek ve kodu "yapılacaklar" yorumu olmadan tekrar kontrol etmek.

Bir sorun olursa, geleneksel iletişim yöntemlerine (posta / sohbet / vb.) Geri dönüyoruz.

Bu yöntem bize bir inceleme sistemine aradığımız iki ana özelliği sunmaktadır:

  • çok hafif havai
  • izlenebilirlik

1

Şube farklılıklarını göstermek için github kullanarak kod incelemeleri yapmanın en etkili yolunu birebir olduğunu buluyoruz.


  • Bir kişi kalite için kapı bekçisi olarak kabul edilir ve kodu gözden geçirir mi, yoksa ekibin standardı var mı?

    • Takımın büyüklüğüne bağlı olarak - 3 kişilik bir ekip iyi uygulamalar hakkında en iyi bilgiye sahip olan 1 kıdemli olacak, oysa 12 kişilik bir ekip bu rolü yerine getirecek 3 veya 4 kişiden oluşacak.
  • İnceleme kodunu projektör kullanarak ekip çalışması olarak mı yapıyorsunuz?

    • Şahsen. 1'e 1 daha az tehdit edici olmak. Bazen ortak alanda bilginin yayılması için olsa da yapılır. Kesin duruma, insanlara, zaman çizelgesine vb. Bağlıdır.
  • Şahsen mi, e-postayla mı yoksa bir araçla mı yapıldı?

    • Şahsen. Git ve github kullanıyoruz ve kod incelemesini kolaylaştırmak için harika kod incelemesi ve fark karşılaştırma araçlarına sahip.
  • Kod kalitesini sağlamak için incelemelerden kaçınıyor ve çift programlama ve ortak kod sahipliği gibi şeyleri kullanıyor musunuz?

    • Her ikisini de uygun şekilde yapmaya çalışıyoruz. Bu, özellikle dikenli bir sorunla karşılaştığında veya temel altyapı üzerinde çalışırken veya tatil için hazırlanırken ya da şirketten ayrılırken bilgiyi paylaşmak ve aktarmak için eşleştirme yapılabileceği anlamına gelir. Kozmetik değişikliklerden başka bir şeye sahip olan çoğu kod veya kod, en sonunda da gözden geçirilmelidir.

Tüm kodlama öğelerinde olduğu gibi, doğru cevap dikkate alınmalıdır:

  • Şirket türü (örneğin, başlangıç ​​vs. büyük şirket)
  • Şirket büyüklüğü
  • Geliştirici sayısı
  • Bütçe
  • Zaman aralığı
  • İş yoğunluğu
  • Kodun karmaşıklığı
  • Gözden geçirenlerin yeteneği
  • Gözden geçirenlerin durumu

0

Birçok şirkette çalıştım ve birçok süreç gördüm. Şu anki ekibim bu ana kadar gördüğüm en iyi şeyi yapıyor.

Çevik bir geliştirme süreci kullanıyoruz ve bunun bir parçası olarak her hikayenin geçmesi gereken geçitlere sahibiz. Bu kapılardan biri kod incelemesi. Hikaye, kod incelemesi tamamlanıncaya kadar teste geçmiyor.

Ek olarak, kodumuzu github.com adresinde saklıyoruz. Böylece bir geliştirici değişikliklerini tamamladıktan sonra, hikayedeki taahhüt (ler) in bağlantısını yayınlar.

Ardından incelemesi için bir geliştirici etiketleyin. Github, birinin söz konusu kod satırı hakkında yorum yapmasını sağlayan bir yorum sistemine sahiptir. Daha sonra Github dağıtıma bir e-posta gönderir, bu yüzden bazen diğer takımlarımızdan bazılarına göz kulak oluruz.

Bu süreç bizim için çok iyi çalıştı. Taahhütlerin kaydedilmesini kolaylaştırmanın yanı sıra iletişimi de kolaylaştıran çevik bir süreç aracı kullanıyoruz.

Bir sorun özellikle yapışkansa, oturup tartışırız. Bu işe yarıyor, çünkü bu bizim sürecimizin ayrılmaz bir parçası ve herkes sürecin nasıl çalıştığını satın aldı. Kod incelemesi ihtiyaç duyulan yeniden çalışmayla sonuçlanırsa, değişikliklerin ardından tekrar gözden geçirilebilirse veya gözden geçiren öğelerin düzeltilmesinin yeterli olduğunu ve tekrar gözden geçirilmesi gerekmediğine dikkat edebilirse, biletleri devam ettirebiliriz.

Test bir şeyi geri alırsa, devam etmekte olana kadar devam eder ve başka değişiklikler de gözden geçirilir.

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.