Resmi bir kod incelemesi yaparken faydalı bir düşünce yapısı nedir


14

Ekibimiz son zamanlarda her check-in için kod incelemeleri yapmaya başladı.

Takım lideri olarak, çok fazla öneri sunmak, sinir bozucu geliştiriciler ile ekip çıktısını azaltmak ve kodun bırakılması arasında farklı bir yazı yazacağım arasında bir denge bulmaya çalışıyorum.

Yararlı bir yaklaşım öneren iyi bilinen kaynaklardan herhangi bir kanıt, çalışma veya rehberlik var mı?


2
Kendinize sormanız gereken ilk soru: neden kod incelemeleri yapıyorsunuz?
Philip Kendall

1
Her bir geri bildirime bir tür "önem" atamak cazip olurdu. Kritik güvenlik açığı = çok yüksek önem. Hata = normal önem. Kod biçimlendirme = sıfır önem (programcı değil, istediğiniz şekilde otomatik olarak yeniden biçimlendirmeyen suçlama araçları).
Brendan

Bu belki ilgi sizi
LAIV

Bir kişinin bir kod incelemesine yaklaşma veya yanıt verme şekli, nesnelliği sürdürme ve eleştirel düşünme becerileri hakkında çok şey söyler. Bazen geliştiricilerin bu amaç için özel olarak eğitime ihtiyaçları vardır.
Frank Hileman

Yanıtlar:


15

Kapsayıcı hedefleri aklınızda bulundurun: Sonuçta, sadece çalışan yazılım önemlidir

Akran denetimi ve check-in kodu incelemesi, kaliteyi iyileştirmeyi amaçlar . Ancak kalite için demotivated geliştiriciden daha kötü bir şey yoktur. Bir takım lideri olarak rolünüz, kodu kendiniz yazabileceğiniz bir şey olarak desteklemek değil, ekip çalışmasını teşvik etmek ve genel sonucu sağlamaktır.

İncelemeniz için net bir kapsam belirleyin

Unutmayın: kodunuz değil, ekibin kodu. Bu nedenle, yanlış sonuçlara yol açabilecek şeylere odaklanın.

  • Çalışmayacağından emin olmadığınız sürece geliştiricinizin gereksinimleri karşılamayı seçtiği şekilde meydan okumayın (ancak testlerde zaten başarısız olmalıydı, değil mi?)

  • Sorunun nerede olduğunu gösteren bir önlem olmadıkça düşük performans için meydan okumayın. Erken optimizasyon tüm kötülüklerin kökenidir ;-)

  • Meydan okuyacak bir tasarım veya yazılım yapısı bulursanız, kendinize neden önünüzde yakalanmadığını sorun! Zaten yazılan kodun yeniden yazılması pahalıdır. Bu durumda, yazılım geliştirme ve ekip çalışması uygulamalarınızı en azından kod kadar gözden geçirme zamanı.

  • belirlenmiş kodlama standartlarına uyumu ele almak. Hem gözden geçiren hem de gözden geçiren için tartışmak en sinir bozucu konu. Herkes takımınızda büyük harfli sınıf isimleri kullanmayı kabul ettiğinde ve bir erkeğin dersi olmayan biri ise, bu bir zevk meselesi mi? Veya ekip çalışmasının etkinliği ve riski?

Bu arada, bir kodlama standardının tartışılmaya değer olmadığını düşünüyorsanız, standartlarınızdan kaldırın ve üzerinde zaman ve enerji harcamayın.

Liderlik geliştirmek: gözden geçirmenin insan tarafı

Bir ekip lideri olarak, burada kalite kontrolün formalitesinin ötesinde kendinizi ve ekibinizi geliştirme fırsatı bulabilirsiniz:

  • Gerçek bir değişim varsa kod incelemeleri herkes için çok daha hoş. Geliştiricinize becerilerini de gösterme fırsatı verin (ve evet, belki de yeni bir şey öğrenebilirsiniz).
  • Tasarım tercihleri ​​veya mevcut standartlar hakkında eleştirilere açık olun. Bazen insanlar bu tür hayal kırıklıklarıyla daha iyi başa çıkabilir, çünkü bunun hakkında konuşabilirler.
  • Çocuklarınıza koçluk yapın: bir sonraki tekrar için tavsiye vermek veya yeniden yönlendirmek için tereddüt etmeyin. Bunu yaşlılarla yapmayın: başka bir dünyada ilgili rolünüz değişmiş olabilir.

Diğer uygulamalardan yararlanın

Kod incelemesinde önleyebileceğiniz birkaç şey vardır:


"Çalışan yazılım"? Çok faydalı değil. "Doğru yazılım" - ben bunu tercih ederim!
Frank Hileman

@FrankHileman Gerçekten! Ve doğru, güvenilir, kullanışlı, performans ve amaca uygun. Bu sadece "çalışma" terimini uygun bir şekilde tanımlamak ;-)
Christophe

3

Geliştiriciler olarak biz, zihniyet her zaman açık ve şüpheci kalmalıdır.

Açık, çünkü bir geliştirici bizi ne zaman şaşırtabileceğini bilmiyor ve kendi fikirlerimiz hakkında şüpheci. Çözümlerimizin ardındaki mantık bizim için anlamlı olabilir ve başkaları için hiçbir şey ifade etmeyebilir. Kod kokusunun ardında harika bir fikir olabilir. Belki de geliştirici bunu doğru şekilde ifade etmenin yolunu bulamadı.

Biz (insanlar) iletişimde korkunç olduğumuzdan, yanlış varsayımlar yapmayın, kod sahibine incelediğiniz kod hakkında sormaya istekli olun. Bu fikri şirketin standartlarına göre kodlamada başarısız olursa, baş geliştirici de ona rehberlik etmeye istekli olduğundan.

İşte öznel yaklaşım. Nesnel yaklaşım, IMO, bu soruda çok iyi açıklanmıştır .

Yukarıdaki bağlantıya ek olarak, ulaşılacak hedefler kümesi (sürdürülebilirlik, okunabilirlik, taşınabilirlik, yüksek uyum, gevşek bağlanma vb.) Mutlaka On Emir değildir. Siz (ekip) bu hedefleri kalite ve verimlilik arasındaki dengenin işi konforlu ve "geliştiriciler için yaşanabilir hale getirdiği" bir noktaya uyarlayabilmelisiniz.

Bu hedeflere göre kalitenin ilerlemesini ölçmek için statik kod analiz araçlarının kullanılmasını öneririm. SonarQube gibi araçlar bize önceliklerimize göre özelleştirilebilen Kalite Kapıları ve Kalite Profilleri sağlar. Ayrıca, geliştiricilerin kod kokusu, hatalar, şüpheli uygulamalar vb.

Bu tür araçlar iyi bir başlangıç ​​noktası olabilir, ancak dediğim gibi kendinizi şüpheci tutun. Sonar'da sizin için anlamsız bazı kurallar bulabilirsiniz, bu yüzden onları görmezden gelebilir veya kalite profilinizden kaldırabilirsiniz.


2

Geliştiricinin kozmetik değişiklik koduyla uğraşması geliştiriciyi motive edecektir, ancak mutlak durumlarda yapılması gerekir. Kurşun sağlama arasındaki dengeyi bulmak zorundadır kullanışlı kod inceleme ve öğrenme gitmesine izin minör eksikliklerin. https://blog.smartbear.com/sqc/for-the-new-team-lead-the-first-six-things-you-should-know/


kozmetik değişiklikler gerektiren "mutlak durumlar" nelerdir?
Ewan

1
Kodlama yönergelerine uyulmadığında, bellek sızıntılarına neden olabilecek kod tasarımı kusurları, lead'in bırakmaya gücü yetmediği durumlardır.
Nishanth Menon

Bağlantınız öldü
Greenonline

1

Akılda tutulması gereken bazı şeyler:

  1. Bu, teknoloji kadar psikoloji ile de ilgili, bu yüzden burada altın bir kural yok.
  2. İnsanlarla ilgili olan sadece bilgi değil, aynı zamanda hiyerarşideki kültür ve konumla da ilgilidir.
  3. Eğer bu "uzun" bir oyunsa (istikrarlı ve köklü bir şirket), insanların birbirlerine güvendiği iyi entegre bir ekip genellikle incelenen koda göre daha yüksek bir değere sahiptir. Kesinlikle devam etmesi gerekmeyen şeyleri zorlamak için kullanılmamalıdır. Şeytan ayrıntıda gizlidir ...
  4. Eğer bu "kısa" bir oyun ise (yan proje, Ar-Ge, bir grupta serbest çalışan) CR'nin maliyetleri genellikle bunları yapmanın getirdiği avantajların üstesinden gelir. Ve tutum "sadece uyandır" olmalı

-4

Önemli olan sadece iki şey var.

  1. Tüm gereksinimler için otomatik testler var mı?
  2. Hepsi geçiyor mu?

Diğer her şey kozmetiktir ve bir kapı olarak uygulamak yerine bira üzerinde tartışılmalıdır.

Bu görünümü izlerseniz, sizi dar bir odak alanı ile sınırlar.

Gereksinimler iyi mi? Göreve başlamadan önce bilmeniz gereken ideal, yani performans, güvenlik vb.

Testler iyi testler mi? Kaçırılan uç durumlar, gereksinimi iyi test ediyorlar vb. Sonuçta: Mevcut bir gereksinim için olan ancak başarısız olacak bir test yazabilir misiniz?


3
Satır sonu olmayan, yalnızca tek harfli değişken adlarıyla ve başka şekilde gizlenmiş kodun kabul edilebilir olduğunu söyleyebilir misiniz? Tüm testler geçecekti, ancak sürdürülemez .
Philip Kendall

Bir kod incelemesinde? Evet. En kısa zamanda onun tüm öznel isimlendirme içine almak. Aşırı bir örnek seçiyorsunuz, ancak insanların tek harf yineleyicileri veya yoğunlaştırılmış kodu iyi uygulama olarak kabul edilecek tek satır işlevlerine kullandığı birçok durum var
Ewan
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.