Kod İncelemeleri, avantajları nelerdir? [kapalı]


12

Ekibimde, resmi kod incelemeleri yapmıyoruz. Çift programlama ve dönen çiftlerin sıklıkla yeterli olduğunu düşünüyoruz.

Resmi kod incelemeleri yapmayı düşünmeli miyiz? Avantajları neler olurdu?


1
İlgili soru: programmers.stackexchange.com/questions/15874/… Yanıtların bazılarını ilginç bulabilirsiniz.
Kevin D

İnsanlar kod incelemeleriyle ilgili noktayı kaçırıyorlar ... Sadece kodun doğruluğunu kontrol etmekle kalmıyorlar, aynı zamanda daha sonra bir şeylerin yanlış olduğu ortaya çıkarsa suçu yayıyorlar. Çift programlama ile sen ya da pirzola alır diğer adam.
James

Yanıtlar:


8

Kod incelemelerini biraz farklı yapıyoruz (belki).

Tüm programcıları bir araya getiriyoruz (her Cuma) ve bir hafta içinde neler yaptığımıza bakıyoruz. Ardından, yapılan / devam eden her projenin en az bir veya birkaç kişiye sahip olması için hangi projeleri incelemek istediğimizi seçtik. Sonra bir saat içinde yapılan değişikliklere bakarız, hataları araştırırız, diğer projelerin nasıl çalıştığını vb. ve kodu FIXME ile spam olarak gönderir). Sonuçta genellikle bizim için (10 programcı) yaklaşık 2 saat sürer.

Profesyoneller:

  • Her üye şirkette ne olduğunu bilir
  • Hatalar daha hızlı bulunur
  • Bizi okunabilir kod yazmaya zorlar (açıklama yapmadan veya tanıtmadan okunabilen kod!)
  • Optimizasyon yöntemleri / püf noktaları / üretken programlar daha hızlı yayılır
  • Uzman olarak programcı daha hızlı "evrim geçirir"
  • Eğlenceli

Bahsettiğim gibi çift programlamaya karşı sahip olduğum şey (bu sadece benim kişisel görüşüm), ekip birlikte ne kadar uzun süre çalışırsa o kadar hızlı olur.

Umarım düşünce için yiyecek getirir. İyi şanslar.


"Takım ne kadar uzun süre birlikte çalışırsa - o kadar hızlı olur" derken neyi kastediyorsunuz? Ve bu nasıl kötü bir şey?
Edgar Gonzalez

Takım, görevleri daha hızlı tamamlayabilmeleri için birbirlerini tanır. Eğer sürekli çift karıştırırsanız bunu elde edemezsiniz.
JackLeo

Oh, ama tüm takımı daha iyi tanıyorsunuz ve aynı zamanda problem alanıyla ilgili daha iyi genel bilgi ve sadece birinden değil, tüm ekip üyelerinden 3 veya 4 farklı görüş alıyorsunuz :)
Edgar Gonzalez

Kod incelemeleri sırasında da aynı şeyi alırsınız. :) her şirket programcısı her durumda hakkında görüş almak daha fazla. Sadece birkaç gün beklemek zorundasın.
JackLeo

4

Bu ücretsiz kitabı okumak isteyebilirsiniz:

http://smartbear.com/best-kept-secrets-of-peer-code-review/

Elbette, itmeleri gereken bir ürünleri var, ama orada hala birçok yararlı bilgi var.

Ayrıca çift programlamanın aynı avantajlardan bazılarını nasıl sağladığını tartışırlar, bu nedenle çift programlama yapıyorsanız kod incelemesine ihtiyacınız olmayabilir.


2

Ortamınızda inceleme konusunda fazla deneyimim yok. Burada çok fazla çift programlama yapmıyoruz, takımdaki yazılım bilgisini yaymak için kod incelemeleri yapıyoruz, hataları ortaya çıkarmak için başka bir çift gözümüz var ve yazılımın kodlama yönergelerimize yapışıp yapışmadığını kontrol etmek için resmi bir noktaya sahibiz .

İlk 2 nokta, çift programlama tarafından oldukça iyi bir şekilde kapsanır, üçüncüsü çifte çok bağımlıdır ve resmi bir kod incelemesinden daha iyi olabilir.


1

Resmi kod incelemeleri yapmalı mısınız?

Kesinlikle

Hızlı bir not olarak, eşleştirilmiş programlama konusunda çok az deneyime sahibim, ancak incelemelerin bu yöntemlerle çelişeceğine inanmıyorum.

Kod incelemelerinin iki biçimini tanıtacağım:

Akran kodu yorumları

Eşleştirilmiş programlama sizin için çalışıyor olsa bile , kod üzerinde başka bir göz seti almak asla acıtmaz. Bunun faydaları:

  1. Kod üzerinde bir dizi yeni göz alır, kod tabanının sizin (ve / veya eşinizin) alanları hakkında daha fazla bilgi sahibi olmayabilir. Bu, takılma sorunlarını ortaya çıkarabilir.
  2. Sizi (çifti) göndermeden önce çözümünüzü yeniden doğrulamanızı sağlar. Hakem yazdıklarınız hakkında hiçbir şey bilmediğinden, onu bütünüyle açıklamanız gerekir. Bu, aklınıza gelmeyen veya geçersiz mantık olan uç durumları ortaya çıkarabilir.

Akran kod incelemeleri (benim dünyamda) her gönderilmeden önce yapılır . Eşleştirilmiş programlama dünyasında bu nasıl oluyor, emin değilim.

Grup kodu incelemeleri

Bunlar akran kodu incelemelerinden daha az sıklıkta gerçekleşir. Genellikle gayri resmi bir kod incelemesi için grubumu (ya da grubumun bir alt bölümünü) bir toplantı odasında çekin. Genellikle takımda rastgele bir kişi tarafından yazılan bazı kodları seçerdim, tercihen sıfırdan yazılmış kod - yeniden düzenlenmiş kod yeni kod gibi sorunları ortaya çıkarmaz.

Herkesin bu incelemelerin kullanım amaçlı olmadığını ve performansı yansıtmak için kullanılmadığını bildiklerinden emin olun . Sadece takım kodlama standartlarınızın takip edilmesini sağlamak ve herkesin daha iyi mühendis olmasına yardımcı olmak ve böylece ekibe (ve daha fazla kariyer büyümesine vb.) Yardımcı olmak - ve bunun incelemelerin gerçek amacı olduğundan emin olmak . Birisi farklı bir şeyden şüphelenirse, bunlar korkulur ve daha az üretken olur.

Ben kodu gayri resmi olarak geçmesi, odada herkes sahip olabilir farklı çözümler veya karşılaştıkları mantık kusurları işaret izin. Bu, orada oturan bir lidere, herkese nasıl kod yazmaları gerektiğini söyleyen bir grup tartışmasından ibarettir.

Bu iki yöntemi kullanmanın mühendislerin ilerleme oranını artırdığını ve hata sayılarını önemli ölçüde düşürdüğünü buldum :)


2
"Hiç acımaz". Evet, yapabilir. Kod incelemeleri pahalıdır ve çalışma yazılımı sunmak için çok daha iyi harcanacak büyük bir zaman kaybı olabilir.
Martin Wickman

@Flipside Martin, akran incelemesi kamyon numaranızı artırır. X'in ne öldüğünü bilen tek adama sahip olmak, bir yedek almayı denerken büyük bir zaman kaybıdır.
Frank Shearar

@Frank Evet, ancak resmi programlamayı çift programlama ile karşılaştırıyoruz ve pp numarası justa iyi (daha iyi imo) ile kamyon numarasını yönetilebilir tutar.
Martin Wickman

@Martin: Eğer dürüstçe inanıyorsanız, o zaman etkisiz kod incelemelerinin sonunda olduğunuzu iddia etmeye hazırım. Genel olarak, kod incelemelerinin, teknik tasarımların geliştirme için bir gereklilik olmadığı konusunda ısrar eden aynı kişilerden "büyük bir zaman kaybı" olduğunu duydum. Yüksek basınçlı bir ortamda yıllarca geliştikten sonra , kod incelemelerinin zaman kaybı olmadığını kesin olarak söyleyebilirim . Kod kalitesi artar, hata sayısı azalır, bilgi aktarımı / paylaşımı artar.
Demian Brecht

@Demian, yine kod incelemesi olan pp ile karşılaştırıyoruz, ancak sürekli oluyor. Bu benim deneyim resmi kod değerlendirmeleri daha iyi yapar. Hakem değerlendirmesi önemlidir, ancak bunları yapmanın birkaç yolu vardır.
Martin Wickman

1

Pratikte hiç çift programlama yapmadım (sadece bunu umuyordum), bu yüzden iki uygulamayı doğrudan karşılaştıramıyorum. Ancak, resmi kod incelemeleri ile deneyimlerimi söyleyebilirim.

Eski bir kod üzerinde daha önceki bir projede resmi kod incelemelerine öncülük ederdim. Proje tam bir karmaşa içindeydi ve yönetim, kargaşayı düzene sokma umuduyla herhangi bir girişimi memnuniyetle karşıladı. O zaman resmi kod incelemesinin iyi bir fikir olduğunu düşündüm. Biz hatalar buldunuz ve taze yazılmış kod kalitesinin eski kodunkinden daha iyi olduğunu gördük. Bunu kanıtlamak için istatistikler, hata sayıları vb. Topladım.

Haftada ortalama 3-5 seans olmak üzere bir seans yaptık. Her seans kişi başına yaklaşık 3-4 saat sürdü (hazırlık dahil) ve 200-300 satır kod (LOC) * gözden geçirildi. Bu hızda, 6 aydan uzun bir süre boyunca, yaklaşık 50 bin üzerinden 5 bin LOC'u incelemeyi başardık.

Geçmişe baktığımda bunun çok maliyetli olduğunu hissediyorum. Bu hızda, eski kod tabanının tamamını incelemek 5 yılımızı alacaktı. Haftada birden fazla seans geçiren OTOH, kaynakları gelişimden uzaklaştırırdı. Tabii ki, eski kodlu tipik ikilem budur. Ancak tüm yeni yazılan kodların resmi olarak gözden geçirilmesi bile çok zaman alacak ve gelişimi önemli ölçüde yavaşlatacaktır.

Benim sonucum, resmi kod incelemelerinin en iyi kodun en kritik kısımlarına odaklanan yeni yazılmış kod üzerinde yapılmasıdır. Geri kalanı, muhtemelen çift programlama yoluyla, daha gayri resmi bir şekilde daha iyi ele alınmaktadır. Bu sadece şu anki düşüncem, değişebilir. Kod inceleme gurusu ya da başka bir şey olduğunu iddia etmiyorum.


* Bu resmi kod incelemelerinin normal hızıdır.

Tipik kod inceleme oranları, saatte yaklaşık 150 satırlık koddur. Kritik yazılımlar (güvenlik açısından kritik gömülü yazılımlar gibi) için saatte birkaç yüz satırdan fazla kodun incelenmesi ve gözden geçirilmesi hata bulmak için çok hızlı olabilir.

Vikipedi'den alıntı (benim tarafımdan vurgu).


1

Temel neden kodu incelemeleri vardır, çünkü izole edilmiş programcıların kodlarını karşılamaları ve tartışmaları ve standartlarına uygun olup olmadığını kontrol etmeleri gerekir.

Herhangi bir kalite probleminden bahsetmiyorsunuz, bu yüzden ekibiniz zaten çift programlama yoluyla yeterli kod incelemeleri yapıyor gibi görünüyor. Müthiş!

Doğru şekilde yapılan çift programlama, resmi kod incelemelerini gereksiz kılar . Ancak birkaç hafta deneyin ve nasıl çalıştığını görün, ancak herhangi bir gelişme fark etmeyeceğinizden şüpheleniyorum.

Kod incelemelerinin yorucu, pahalı bir süreç olduğunu ve hafife alınacak bir şey olmadığını unutmayın. Temelde projenizde maliyetli ve her şeyi yavaşlatan bir devir teslimi sunar . Daha sonra sorun bulmaya çalışmak yerine, kodun ilk başta doğru olduğundan emin olmak çok daha iyidir.


0

Olabilir. Kod incelemeleri zaman alır. Yalnızca, incelemenin aldığı zaman sürecin başka bir noktasında kaydedilmişse faydalıdır. Kod incelemelerinden ne gibi tasarruflar bekliyorsunuz? Kod incelemeleriyle önlenebilecek zorluklar mı yaşıyorsunuz?


0

Çift programlama yapıyorsanız, bir kod inceleme ihtiyacı önemli ölçüde azalır, ancak kesinlikle bir akran incelemesinden faydalanırsınız. Bunun faydalı olabilmesi için ikili üyelerden daha kıdemli ve deneyimli bir kişi tarafından yapılması gerekir.

Avantajları nelerdir? Bunu yapmama risklerini düşünürseniz daha iyi olur.

  • Parite yanlış bir şey yapıyor olabilir ya da belki de optimal olmayan bir şekilde yapıyor olabilir
  • Belki kodlama standartlarına uymuyorsunuz veya kodu düzgün bir şekilde belgelemiyorsunuzdur. Akran incelemesi bunları bulmakta gerçekten iyidir
  • Çift dışında hiç kimse belirli bir kod parçasını anlamıyor. Peki, hem ikili üyeler ayrıldıysa hem de kod zayıf bir şekilde belgelenmişse ne olur? Diğerleri bir şeyleri çözmeye çalışırken zaman kaybedecek. Ne yaptığınızı bilen üçüncü bir kişiye sahip olmak riski azaltır.

Ben insanlar kod inceleme zaman kaybı olduğunu söyledi eğlenerek. Evet, zaman alıyor. Belki kodda herhangi bir değişiklik üretmeyecektir, ancak bu boşa harcandığı anlamına gelmez. Bu, yangın sisteminizi düzenli olarak kontrol etmeniz gerekmediğini söylemek gibidir, çünkü zaman kaybıdır.


0

Benim için kod incelemelerinin ana avantajı, insanların daha iyi kod yazmasını sağlamasıdır.

Kodunuzun okunup inceleneceğini bilmek, okunabilirlik ve kodunuzun "doğru" olması konusunda daha bilinçli olmanızı sağlar. Kodun doğrudan depoya gittiğini ve hata düzeltmedikçe başka hiç kimse bunu okumadığını bildiğinizde, kullanımları değiştiğinde alan adlarını yeniden çarpanlarına ayırmamak gibi kullanılmasına izin vermez ve kullanılmadığı takdirde kullanılmayan yöntemleri bırakır vb. içine geri çarpar.

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.