Geliştiricilerin kod incelemelerini zamanında yapmalarını sağlama


12

Çalıştığım şirket, taahhüt edilmeden önce tüm kodların diğer geliştiriciler tarafından incelenmesini gerektiriyor. Ekibimin üyeleri genellikle hayal kırıklığına uğradı çünkü diğer geliştiriciler, özellikle çok uzunsa, bir inceleme yapmak için çok fazla kodlama yapıyorlar. Diğer geliştiricileri zamanında kod incelemeleri yapmaya nasıl teşvik edersiniz?

(Git-svn kullanıyoruz, bu yüzden bir inceleme beklerken kodlamaya devam edebiliyoruz. Ancak, kodumu işlemeden önce uzun süre beklemek zorunda kaldığımda hala sinir bozucu buluyorum.)

Yanıtlar:


12

Facebook'un phabricator adlı kendi uygulamasıyla nasıl yaptığına bakın: http://phabricator.org/

Temel olarak her konu için ayrı ayrı taahhüt ederler ve her sayı için, biri tarafından incelenecek olan kod gösterilir. İnceleyici bunu yapmak için Tamam olduğunu söyleyene kadar kod ana depoya gitmez.

Sanırım daha eğlenceli hale getiriyor.

Ayrıca, belki de iki kişi için bir kod atanmalıdır: biri yapan ve gözden geçiren biri.

Belki de takım arkadaşlarınız bu gözden geçirme şeye inanmıyorlar.

Şahsen, gözden geçirenlerin yokluğunda, alt düzey işlevler için birim testleri ve geri kalanlar için "hademe testi" kullandım: hademe testi bu şekilde çağrılır, çünkü hademe bile kodunuzu anlayabilmelidir.

Genellikle blok / fonksiyon kapsamı parantezleri, görünürlük gösterimleri, hatta bazen türler gibi bazı küçük bölümleri kaldırdım ve kodu isteyen herkese yöneticilere, alan uzmanlarına, arkadaşlara gösterdim: "İstediğiniz bu mu?"

Ayrıca, kişisel olarak oraya gitmek ve inceleme yapılıncaya kadar ayrılmamak yardımcı olur.

Ya da, takımda iyi olmamanız ya da sizinle iyi olmamaları durumunda, bilirsiniz, "şirketi değiştirebilirseniz, şirketi değiştirebilirseniz" ...


9

Bunu birkaç varsayım üzerine dayandıracağım:

  1. Herkes kod yazmak istiyor gibi görünüyor (Değilse, gitmesi gereken insanlar var.).
  2. Herkes kendi kodunun iade edilmesini istiyor.

İncelemelerini tamamlayanların yalnızca kodlarını teslim etmelerine izin ver.

Belki belirli bir zaman bloğu, kesintiye uğramama sorununu önleme umuduyla kod incelemelerine tahsis edilebilir.

Amaç kalite kodunu kontrol etmek olmalıdır. İncelemeleri herkesin "lastik damga" onayı verdiği noktaya kadar cezalandırmak / zorlamak istemezsiniz.

Farklı seviyeleriniz varsa (jr., Sr., Vb.), Bir unvanın tanıtımı ve sürdürülmesi işinizi yapmaya bağlı olmalıdır.


1

Önceki işverenlerden birkaçında, günlük olarak Kod İncelemesi'nde bulunanları döndürdük. Genellikle 3 kişi bir CR gününü paylaştı ve her bir CR'nin iki hakem tarafından imzalanması gerekiyordu. Bu, gününüzdeyken, diğer projelerinizden bağımsız olarak CR'nin sizden beklendiğini biliyorsunuzdur. Yani her beş günde bir, sıra sizde ve geliştirme görevlerinizi buna göre ayarlayabilirsiniz.

Şu anda, bir Takım Lideri ekibinin kodunda bir cursory CR yapıyoruz. Uygulamanın hangi alanının güncellendiğine bağlı olarak, CR tamamlandıktan sonra, uygulama (lar) üzerinde küresel bir etkisi olan şeyleri kontrol etmek için yaptığımız Küresel İnceleme Ekibi'ne yükseltilebilir. tek bir özellik ile ilgili. Yapılacak büyük bir İnceleme olduğunda, genellikle birkaç kişi arasında bölünüyoruz, bu yüzden hiç kimse gülünç sayıda dosyadaki değişikliklerle uğraşmak zorunda kalmıyor.

Bununla birlikte, yalnızca şu anki Dev dalına / varyantına bağlı olan kodu inceliyoruz. Kod, bir sonraki (ör. Alpha) ortamına yükseltilmeden önce Kod İncelemesi, Genel İnceleme, DB İncelemesi ve UI İncelemesi'ni (her biri gerektiği gibi) geçirmelidir.

Son olarak, İncelemelerin ne kadar hızlı döndüğü konusunda bir SLA kabul ediyoruz. 48 saatten fazla bir süredir kuyruğa giren ve çoğu inceleme 24 saatten daha kısa bir sürede yapılıyor.


1

Çalıştığım şirket, taahhüt edilmeden önce tüm kodların diğer geliştiriciler tarafından incelenmesini gerektiriyor. Ekibimin üyeleri genellikle sinirli oluyor ...

Görev kritik yazılım veya üretim sürümü aday koduna kritik yamalar yapmadığınız sürece, belirli türdeki kod incelemelerine sıkı sıkıya bağlı kalmak için zorlayıcı bir neden yoktur.

  • Şirket gereksiniminizin arkasındaki fikir bir yüzeyde makul görünüyor (% 100 gözden geçirilmiş kod), ancak kullanmaya karar verdikleri araçlar verimsiz - çünkü belirttiğiniz gibi, bunlar geliştiricilerin hayal kırıklığına uğramasına neden oluyor.

Ayakkabılarınızda yürürken, önce yönetim sonrası kod incelemelerinin ön taahhütlü kişiler kadar saygın olduğu düşünülür . Bu terimler web'de aranabilir - gerekirse bunu yedeklemek için referanslar bulun. % 100 gözden geçirilmiş kod almak için mutlaka ön işlem incelemelerine gerek yoktur .

Yukarıdakilere dayanarak, daha sonra onlara mikro yönetim tutumunu bırakmalarını ve geliştiricilerin kendileri için daha uygun hissettiklerini denemelerini öneriyorum . Programcıların seçmesi için önceden veya sonradan yapılan incelemeler en iyi şekilde bırakılır. Eğer şirket programcılardan daha iyisini biliyorsa, neden kodu kendileri yazmıyorlar?


1
"Eğer şirket programcılardan daha iyisini biliyorsa, neden kodu kendileri yazmıyorlar?": Çok iyi yorum! Ancak, geliştirme yöneticilerinin eski geliştiriciler olduklarını umuyorum.
Giorgio

3
Sonradan taahhüt, tecrübemde kod kalitenizi çok incitiyor. Programcılar tembel ve eğer işlenebilirlerse yapıldıklarını hissedecekler: "evet, bu mükemmel değil, ama f.ck kimin umurunda, hayatta mükemmel olan nedir? " tek iyi cevap HAYIR ve belki de yöneticiler programcıların kendileri hakkında olduğundan daha gerçekçi bir imajına sahiptirler, bu yüzden ön taahhüt (veya en azından birleştirme öncesi) kod incelemeleri gerektirirler.
Aadaam

@Aadaam, deneyiminiz kesinlikle benimkinden farklı - sadece taahhüt sonrası ile ilgili olarak değil, aynı zamanda (ve özellikle) "Programcılar tembel ..." bölümünün bir parçası olarak takımlarım; sadece hangi tür incelemeyi zorlamak konusunda anlamsız fikirlerle çalıştığım yöneticileri yönlendirmedi
gnat

Dış kaynak kullanımında çalıştım. Dış kaynak kullanımında, programcıların çoğu programlamanın eğlenceli olduğu için değil, programlamanın en iyi iş / ücret oranına sahip olması, oranları her şeyden çok daha yüksek olduğu için ... diğer işlerden olduğu gibi ondan nefret ediyorlar .. ve Ne demek istediğimi biliyorsanız, bu oranı daha da "optimize etmek" için her şeyi yapmaya çalışın ...
Aadaam

1

Ele alacağınız bir takım sorunlar var - kalpleri ve zihinleri kazanmak zorundasınız ve kod incelemeleri için zamanın mevcut olduğundan emin olmalısınız.

İkinci bölüm muhtemelen en kolay - bir anlaşmanın her sabah yaptığı ilk şey onların kod incelemeleri olduğunu kabul edersiniz (toplu olarak ve yönetimi içermelidir) - bu basit, anlaşılabilir, etkili ve insanları yenmek için güzel bir açık sopa veriyor eğer uymazlarsa. Daha iyi, hiçbir şey kesintiye uğratmıyorsunuz, onlardan kodları üzerinde çalışmalarını durdurmalarını istemiyorsunuz, insanlardan yapılacaklar listesine bir şey sıkmalarını istemiyorsunuz ...

İlk bölüm asıl sorun - inceleme sürecindeki katılımcılar bunu değere sahip olarak görmelidirler, aksi takdirde kod yazarken veya hataları ( kesinlikle daha önemli ...?).

İkisini bir araya getirebilirseniz - öncelikle herkesin kod incelemelerinde değer olduğuna inandığını (veya anladığını) temin ediyorsanız - en temelde, daha az hata anlamına gelmelidir, bu da genellikle daha eğlenceli olan daha yeni kod anlamına gelir - ve sonra ikinci olarak kod incelemelerinin yapılması için programda net bir alan olması için umarım iyi şeyler olur ... kültürün bir parçası olacak.

Kültürün bir parçası haline geldiğinde artık "her gün ilk şey" demek gerekli olmayabilir - ama bunun muhtemelen bir geliştiricinin çalışmasını istediği kalıba uyduğunu düşündüğümü söyledikten sonra.


“Her gün ilk şey” kuralını ilk etapta gerçekten kabul edemezsiniz . Birisi şirkete saatte X dolara mal olan bir hata bulursa (veya önemli bir son tarihi saatte yüzde X puan oranında kaybetme riskini artırır) ve içeri girmeden beş dakika önce bunu yaparsa, kod incelemesi sizin öncelikli. Temel olarak sorun, basit kurallar koyma arzusu ile önceliklerin her zaman basit olmadığı gerçeği arasındaki çatışmadır. Risk, herkesin yürekli bir şekilde kuralı kabul etmesi ve 24 saat içinde bugünün kuralın bir istisnası olmasının bir nedenini bulmasıdır.
Steve Jessop

Ve çözüm zor, ama IME zaman alıcı ama değerli yeni bir çalışma uygulaması tanıtmak için yeterli "boşluk" bulmak zorunda. Bu, gevşek zamanı tanımlamak için öngörü, değerli bir değişiklik getirmenin bedeli olarak son tarihlerin kaymasına izin verme isteği veya her ikisini de gerektirir. TANSTAAFL. Dediğiniz gibi, herkes kalıba yerleştiğinde istisnalar yapabilir. Umarım bunu genel örüntünün değerinin doğru bir şekilde takdir edilmesine dayanırlar.
Steve Jessop

"Son teslim tarihlerinin kaymasına izin ver" diyorum, "son teslim tarihlerini taşı" demeliydim. "kayma", işlendikten sonra hareket etmeyi, yani başarısız olmayı ima eder, ancak bu şekilde olması gerekmez. Bunun yerine, esnek olmayan yeni kural (ve herhangi bir yeni süreci takip etmeye çalışan insanların neden olduğu kaçınılmaz verimsizlikler) nedeniyle biraz daha az üretkenlik planlayabilirsiniz - ilk önce kod incelemesi yapıyorsanız sabah scrumunu kaçırırsınız kod incelemesinin çok uzun sürdüğü günlerde veya kuruluşunuzun karışıma atabileceği benzersiz ayarlamalar). İyi bir kuralsa, yakında başladığınız yerin üstüne çıkacaksınız.
Steve Jessop

@SteveJessop elbette bunu kabul edebilirsiniz. Ve elbette istisnalar olacak (Scrum gözleminin aptalca olduğunu düşünüyorum - özellikle cevap açık olduğu için (-:) Bence anahtar "tek bir boyuta tüm çözümlere uyuyor" Ben sadece basit ve anlaşılması kolay bir şey önerdi ve birinin programına çarpması nispeten zor (yine çevreye bağlı olarak)
Murph

1

Çalıştığım çoğu şirkette, bir incelemeyi tamamlamak için 3 gününüz var. Değerlendirmeleri yapmamak kabul edilemez. Bu işinizin bir parçası. Zamanında iyi incelemeler yapmazsanız performans değerlendirmeniz etkilenir. Ve evet, incelemeler her zaman en uygunsuz zamanlarda gerçekleşiyor gibi görünüyor. Çok kötü, inceleme sürenizi tahminlerinize eklemeyi öğrenin. Her neyse, eğer yönetim gerçekten gözden geçirmelerin önemli olduğuna inanıyorsa (yani tüm kodların gözden geçirilmesini zorunlu kılarsa) benzer bir politika uygularlar. Buna ek olarak, insanlar ayrılan zamanda incelemeyi tamamlamazlarsa, bu materyali kabul ederler.


0

İnceleme Tahtası gibi bir araç kullanmayı düşünün . Özellikle uzun yorumlar için çok yararlıdır.

Farklarınızı yükleyebilir ve bir yorumcunun incelemelerini bitirmesini bekleyebilirsiniz. Çalışmanıza devam etmenizi engelleyen açık incelemeleriniz varsa, bunu günlük toplantılarınız sırasında bildirebilirsiniz (ekibiniz yeni özelliklerin mümkün olan en kısa zamanda test edilebilmeleri için check-in yapmasını ister, değil mi?).


0

Eklemek için birkaç nokta diğer cevaplarda değil.

İncelenecek kod kontrol edilmelidir

  • böylece kararlı bir sürümü inceliyorsunuz.
  • Bir sürüm yeterince uzaktaysa ana geliştirme dalında olabilir
  • Ana kirliliği olmamak için iyi bir neden varsa şube olabilir

Engelleme görevleri önceliklidir, bu nedenle kod incelemeleri diğer çalışmalara göre öncelikli olmalıdır (ancak akışınızı kesmemeye çalışmalıdır). Bir geliştirici olarak başkalarının kodunuzu incelemesini istemelisiniz (daha iyi hale getirmeyi hedeflediğiniz için). Bu bilgide derhal başkaları için inceleme yapmalısınız.

Daha zor sorular, kod incelemelerinin ne zaman ve nasıl yapılacağıdır.

Ne zaman bizim için işe yarayan bir kural, paylaşılan kodun daha geniş etkiye sahip olması nedeniyle gözden geçirilmesi gerektiğidir, ancak tek bir uygulamanın kodunda (özellikle test odaklı geliştirme kullandığımız göz önüne alındığında) daha az önemlidir.

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.