it-swarm.dev

Kod incelemelerini gerçekleştirmenin en etkili yolu nedir?

Kod incelemeleri yapmak için ideal bir yol bulamadım ve çoğu zaman müşterilerim bunları gerektiriyor. Her müşteri onları farklı bir şekilde yapıyor gibi görünüyor ve hiçbirinden memnun kalmadım.

Kod incelemelerini gerçekleştirmenin en etkili yolu nedir?

Örneğin:

  • Bir kişi kalite için ağ geçidi denetleyicisi olarak kabul edilir ve kodu inceler mi, yoksa ekip standartlara sahip mi?
  • Bir projektör kullanarak ekip egzersizi olarak kodu gözden geçiriyor musunuz?
  • Şahsen, e-posta veya bir araçla mı yapılıyor?
  • Kod kalitesini sağlamak için incelemelerden kaçınıyor ve çift programlama ve toplu kod sahipliği gibi şeyleri kullanıyor musunuz?
71
Paddyslacker

İşimde çok basit bir kural var: değişiklikler, bir birleşme veya gövdeye bağlılıktan önce en az bir diğer geliştirici tarafından gözden geçirilmelidir. Bizim durumumuzda bu, diğer kişinin fiziksel olarak sizinle bilgisayarınızda oturduğu ve değişiklik listesinden geçtiği anlamına gelir. Bu mükemmel bir sistem değildir, ancak yine de kod kalitesini belirgin şekilde artırmıştır.

Kodunuzun gözden geçirileceğini biliyorsanız, önce kodunuzu gözden geçirmeye zorlarsınız. O zaman birçok sorun ortaya çıkıyor. Sistemimiz altında, gözden geçirene ne yaptığınızı açıklamanız gerekir, bu da daha önce kaçırmış olabileceğiniz sorunları fark etmenize neden olur. Ayrıca, kodunuzdaki bir şey gözden geçiren tarafından hemen anlaşılamıyorsa, bu daha iyi bir ad, yorum veya yeniden düzenleme gerektiği anlamına gelir. Ve elbette, gözden geçiren de sorunlar bulabilir. Ayrıca, gözden geçiren, değişikliğe bakmanın yanı sıra, yakındaki kodda da sorunlar olduğunu fark edebilir.

Bu sistemin iki dezavantajı vardır. Değişiklik önemsiz olduğunda, gözden geçirilmesi çok az mantıklıdır. Bununla birlikte, değişikliklerin kayıtsız kalmalarını “önemsiz” olarak ilan etmenin kaygan eğiminden kaçınmak için kesinlikle kurallara bağlı kalmalıyız. Öte yandan, sistemdeki önemli değişiklikleri veya büyük yeni bileşenlerin eklenmesini incelemek için iyi bir yol değildir.

Daha önce, bir geliştiricinin ekibin geri kalanına incelenmek üzere kodu e-posta ile göndereceği ve daha sonra tüm ekip bir araya gelip tartışacağı daha resmi incelemeleri denedik. Bu, herkesin zamanının çoğunu aldı ve sonuç olarak bu incelemeler çok azdı ve kod tabanının sadece küçük bir yüzdesi incelendi. "Bir başka kişi taahhütten önce değişiklikleri gözden geçirir" bizim için çok daha iyi çalıştı.

32
Dima

Bir ağrı olabilir rağmen kod değerlendirmeleri seviyorum. Onları sevmemin nedeni, kod üzerinde daha fazla göz ve farklı bir bakış açısı elde etmeleridir. Çifte programlamada bile kodun gözden geçirilmesi gerektiğine inanıyorum. Aynı kod üzerinde çalışan iki kişinin farklı bir göz grubunun kaçırmayabileceği aynı hatayı toplu olarak yapması yeterince kolaydır.

Projektörlü bir grup olarak yapıldıysa, gerçekten bireysel olarak gözden geçirilmelidir önce toplantı. Aksi takdirde, bu sadece can sıkıcı bir zaman kaybıdır.

Kod incelemelerini yalnızca e-posta yoluyla ve bir grupta yaptım. Genel olarak, onların şahsen yapılması gerektiğini düşünmüyorum. Birinin omzunun üstünden bakmasıyla kod boyunca Rush'a biraz daha baskı hissediyorsun. Ben kod gözden geçirmek için tasarlanmış bir araç, bazı sıradan yönleri ile yardımcı olabilir ve daha kolay kod bitlerini bayrak daha sonra e-posta yoluyla kolaylaştırmak gerekir, iyi bir varlık olacağını inanıyoruz.

Bir kişinin tüm kod incelemelerini yapmasıyla ilgili sorun, bir darboğaz olabilmesidir. İyi belgelenmiş ve tasarlanmış kodlama standartları ile gerekli olmamalıdır. Ortama/sürüm programına bağlı olarak, birisinin her zaman bekleme kodunu gözden geçiren biri olması iyi bir fikir olabilir.

Kod sahibi iyi bir fikir olduğuna inanıyorum çünkü bu kişi bu kodu anlamak ve potansiyel olarak bir kapı bekçisi rolü oynamak için önceliklerini yapabilirsiniz.

13
George Marian

SmartBear olarak sadece kod inceleme aracı yapmakla kalmıyor, aynı zamanda günlük olarak da kullanıyoruz. Geliştirme sürecimizin önemli bir parçası. Check-in yapılan her değişikliği inceliyoruz.

Birçok nedenden dolayı tek bir gatekeeper kod inceleyicisi olması kötü bir fikir olduğunu düşünüyorum. Bu kişi bir darboğaz haline gelir ve gerçekten etkili olabilmesi için çok fazla kod incelemesi (sadece projeyi hareket ettirmek için) yapmak zorundadır (bir seferde 60-90 dakika etkililik sınırıdır). Kod incelemeleri, fikir ve bilgileri paylaşmak için harika bir yoldur. Kaptanınızın süperstarı ne kadar olursa olsun, takımdaki diğerlerinden öğrenebilirler. Ayrıca, herkesin kod incelemeleri yapması, insanların kodun kalitesine sahip olduklarını hissettikleri bir "kolektif kod sahipliği" ortamı da oluşturur (sadece KG veya ağ geçidi denetleyicisi değildir).

Kod incelemelerini etkili hale getirmek için 11 ipucu içeren " Akran Kodu İncelemesi için En İyi Uygulamalar " hakkında ücretsiz bir teknik incelememiz var. Bunların çoğu, John'un daha damıtılmış bir biçimde bahsettiği kitapla aynı içeriktir.

6
Brandon DuRette

Bahane yok. Alıştırma çifti programlama. Mümkün olan en iyi kod incelemesi. Başka herhangi bir mekanizma suçlama oyunuyla sonuçlanır. Çift programlama takım ruhunu ve kolektif mülkiyeti teşvik eder. Ek olarak, size çiftinizle fikirleri tartışırsınız, hızlı başarısız olur, düzeltici önlem alırsınız ve bu yalnızca Yapılandırma Yönetim Sistemi'ne (CMS) bağlı olan kodlanmış ve gözden geçirilmiş çift kodudur. Mutlu çift programlama!

3
karthiks

Katıldığım kod incelemelerinde yapmaya çalıştığım şeylerden biri, kodu kendim inceledikten sonra Findbugs, PMD, JavaNCCP ve diğerleri gibi araçları kullanarak kodun statik analizini yapıyorum ve bu araçların içinde bulduğu sorunlara bakıyorum incelenecek kod. Özellikle alışılmadık derecede yüksek düzeyde karmaşıklığa sahip olan herhangi bir şeye bakmak ve bu karmaşıklık düzeyinin neden gerekli olduğunu veya önerilen güvenlik açığının neden önemli olmadığını açıklamalarını istiyorum.

YMMV

2
mezmo

Şu anda çalıştığım yerde, kritik altyapıya giren donanım cihazları ve onlarla arayüz oluşturan yazılımlar üretiyoruz. Sonuç olarak sürüm kalitesine çok odaklanıyoruz. Fagan Inspection varyantını 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, bunun güvenilirliği ve tekrarlanabilirliği ile çok ilgilenmektedir. :-)

2
Paul Nathan

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

Artıları ve eksileri eşleştirme ile tartışmamak, ancak kodunuzun (en azından) başka bir kişi tarafından sürekli olarak incelenmesinin olumlu etkilerine itiraz etmek 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 değiştirmeye çalışmalısınız çok böylece herkes kodla çalışma konusunda bir şans yakalar.

2
Martin Wickman

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

Bu sistem iyi çalışır - zaman izinleri olarak değişiklikler yapılır ve değişiklikler birkaç göz küresi tarafından incelenebilir.

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

2
GavinH

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

Bu noktada, deneyimlerime göre, bir kişiyi kod gözden geçirmesinin "kralı" olarak atamanız ve söylediği şeyin gitmesi en iyisidir. Bu bağlamda, bir kullanıcı standartlara uymuyorsa, kral bununla ilgilenecektir.

Bir geliştirici olarak, kendi kodumu birçok kez okunabilir, mantıklı ve diğer her şey için gözden geçiriyorum. Genellikle kodladığımız dillerde javadoc veya benzeri kullanırız ve işlevlere, sınıflara vb. Sahiplik eklemek için @author etiketini kullanırız.

Eğer bir fonksiyon doğru değilse, sahibiyle konuşuruz, aynı sınıf vb.

2
Chris

Şirketimde her göreve görevi test etmek için bir test cihazı ve ayrıca kodu incelemek için bir kod inceleyici atanır.

Ürününüz zaten yayınlanmışsa ve yanlış bir şey yapmadığınızdan (sap sızıntısı veya bellek sızıntısı gibi) emin olmak istiyorsanız, kod incelemeleri harika bir şeydir. Ürününüzü piyasaya sürmeden önce ilk geliştirme sırasında kod incelemelerinin çok fazla iş olabileceğini düşünüyorum.

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

Kod incelemesi ile ilgili önemli bir şey, yaptığımız hataları yakalayabilmesidir, ancak testin yerini almaz.

2
Brian R. Bondy

Kod incelemelerini yapmanın en etkili yolunun şubedeki farklılıkları göstermek için github kullanarak 1'e 1 olduğunu bulduk.


  • Bir kişi kalite için ağ geçidi denetleyicisi olarak kabul edilir ve kodu inceler mi, yoksa ekip standartlara sahip mi?

    • Takımın büyüklüğüne bağlı olarak - 3'lü takım, iyi uygulamalar hakkında en iyi bilgiye sahip 1 kıdemli olacakken, 12 kişilik bir takımın bu rolü yerine getirecek 3 veya 4 kişi olabilir.
  • Bir projektör kullanarak ekip egzersizi olarak kodu gözden geçiriyor musunuz?

    • Şahsen. 1'de 1 daha az tehdit edici olmak. Bazen toplumsal alanda bilgi yayılımı için olsa da yapılır. Kesin duruma, insanlara, zaman çizelgesine vb.Bağlıdır.
  • Şahsen, e-posta veya bir araçla mı yapılıyor?

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

    • Her ikisini de uygun şekilde yapmaya çalışıyoruz. Bu, özellikle dikenli bir probleme takıldığında veya çekirdek altyapı üzerinde çalışırken veya tatile hazırlanırken veya şirketten ayrılırken, bilgi paylaşmak ve aktarmak için eşleştirme yapılabileceği anlamına gelir. Kozmetik değişikliklerden başka bir şey içeren çoğu kod veya kod da sonunda gözden geçirilmelidir.

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

  • Şirket türü (ör. Başlangıç ​​ve büyük şirket)
  • Şirket büyüklüğü
  • Geliştiricilerin sayısı
  • Bütçe
  • Zaman aralığı
  • İş yoğunluğu
  • Kod karmaşıklığı
  • Hakem (ler) in yeteneği
  • İnceleyenlerin kullanılabilirliği
1
Michael Durrant

Şirketimde, son derece kritik bir üretimde değişiklik yapmadığımız ve standart KG sürecimizi gerçekleştirecek zamanımız olmadığı sürece, hiçbir zaman check-inlerden önce resmi kod incelemeleri yapmayız.

Yaptığımız şey, her kod incelemesi yararlı olacağını düşündüğümüzde değiştirilen koda "// todo: joe tarafından kod incelemesi" yorumu ekliyoruz. Genellikle Joe'yu seçiyoruz çünkü ancak bu seçim ölçütleri geçerli değilse (genellikle geçerliyse), başka birini rastgele seçtik. Ve elbette, eğer Joe o sırada hazır bulunursa, eski eski omuz inceleme yöntemini kullanırız.

Bir gözden geçiren olarak, yapmanız gereken tek şey düzenli olarak "// todo: bana göre kod incelemesi" için tüm kodu aramaktır, değişiklikleri gözden geçirin ve kodu " yapılacaklar ... "yorum

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

Bu yöntem, bir inceleme sistemine aradığımız iki ana özelliği sağlar:

  • çok hafif havai
  • izlenebilirlik
1
Brann

Birçok şirkette çalıştım ve birçok süreç gördüm. Şu anki ekibim bunu şimdiye kadar gördüğüm en iyi şekilde ele alıyor.

Çevik bir geliştirme süreci kullanıyoruz ve bunun bir parçası olarak her hikayenin geçmesi gereken kapılarımız var. Bu kapılardan biri kod incelemesidir. Hikaye, kod incelemesi tamamlanana kadar teste geçmez.

Ayrıca kodumuzu github.com adresinde saklıyoruz. Bir geliştirici değişikliklerini bitirdikten sonra, hikayedeki taahhütlerin bağlantısını yayınlarlar.

Daha sonra incelemek için bir geliştirici etiketledik. Github, birisinin doğrudan söz konusu kod satırına yorum yapmasına izin veren bir yorum sistemine sahiptir. Github daha sonra dağıtım için bir e-posta gönderir, bu yüzden bazen diğer bazı takımlarımızdan daha fazla göz alırız.

Bu süreç bizim için çok iyi işledi. Taahhütleri göndermeyi kolaylaştıran ve iletişimi kolaylaştıran çevik bir süreç aracı kullanıyoruz.

Eğer bir konu özellikle yapışkan ise, oturup tartışacağız. Bu işe yarar çünkü sürecimizin ayrılmaz bir parçasıdır ve sürecin nasıl işlediğini herkes satın almıştır. Kod incelemesi gerekli yeniden çalışmayla sonuçlanırsa biletleri ilerlemeye geri taşıyabiliriz ve daha sonra değişiklikler yapıldıktan sonra tekrar incelenebilir veya gözden geçiren, öğelerin düzeltilmesinin yeterli olduğunu ve tekrar gözden geçirilmesine gerek olmadığını hikayeyi not edebilir.

Test bir şeyi geri alırsa, devam etmekte olan geri gider ve diğer değişiklikler de gözden geçirilir.

0
Bill Leeper