Tüm programcıların programlama tarzı vardır. Ama bazı stiller diyelim ... diyelim. Bu nedenle, iyi tasarım ve iyi programlama teknikleri için belirli kurallar uygulamaya çalışmak için kod incelemeniz var.
Ancak programcıların çoğu kod incelemesini sevmez. Diğer insanların çalışmalarını eleştirmesini sevmezler.
Kendilerini benden daha iyi düşüneceklerini ve bana bunun kötü tasarım olduğunu söyleyeceklerini düşünüyorlar, bu başka bir şekilde yapılabilir. Doğru çalışıyor mu? Sorun nedir? Bu onların yapabileceği bir şey deyin (ya da düşünün ama hangisinin daha kötü değilse hangisi kadar kötü olduğunu söylemeyin).
Peki insanların savaşa başlamadan kod incelemesini kabul etmelerini nasıl sağlıyorsunuz?
Onları bunun iyi bir şey olduğuna nasıl ikna edebilirsiniz; sadece programlama becerilerini geliştirecek ve daha sonra milyonlarca kez düzeltmek ve düzeltmek için çok fazla işten kaçınacak.
İnsanlar size kod incelemesi (akran programlama, resmi denetimler vb.) Bir kod incelemesinde neleri arayacaklarını söyleyecek, yazılım üretime başlamadan önce keşfedilebilecek kusur sayısını göstermek için çalışmalar yapılmıştır. programcıları kod incelemesini kabul etmeye ikna ediyor musunuz?
Kod incelemelerini sevmeyenlerin, yerine koyduğunuz her şeyi çözmek için elinden gelenin en iyisini yapacağını gördüm.
Çalıştığınız kodun düzgün bir şekilde gözden geçirildiğinden emin olmanın en iyi yolu, bunu normal kodlama yolu olarak gören ve yalnızca bu ortama iyi uyum sağlayabilecek geliştiricileri işe alan bir yerde çalışmaktır.
Birlikte çalıştığınız kişiyi değiştiremezseniz, önce kendi kodunuzu incelemek için belki başarılı olur. Onları onunla hata bulmaya teşvik edin (birkaç kasıtlı hata eklemeyi önerebilir miyim?) Böylece değil söz konusu geliştiriciyi eleştirmenin bir yolu olduğunu gösterebilirsiniz. Ana sorun bu, IMO: insanlar kod incelemelerini çok kişisel olarak alıyorlar.
Basit: Kod incelemelerini kabul eden programcılara önemli projeleri atayın. Bu açık bir mesaj: bu proje amatörlere gitmek için çok önemli.
İşbirliği yapmayacak programcılar bakım işi yapabilirler. Kod incelemeleri yaygın olarak yapılmadıysa, şirketinizde bu kadar çok şey olacaktır. Bunun çıkmaz bir sokak olduğunu açıkça belirtin. Bu ürünlerin önemi azalacak, düşürülecek veya bunların yerine kod incelemesi yapılmış daha yeni ürünler gelecektir.
İşe alırken kod incelemelerinin şirketinizdeki norm olduğunu açıkça belirtin. Kod incelemelerini kabul eden yeni işe alımları yeni projelere atayın.
Genel olarak, bu geliştiricilere şirketin kod incelemelerini benimsediğini söyleyecektir. Seçebilirler: devam et ya da çık. Şirketle savaşan insanlar için hiçbir şirkette gelecek yoktur.
Biri reddederse ve patronları siz değilseniz, gerçekten yapamazsınız.
Ancak başka bir stili benimsemenin ana nedeni ...
Kıvam
Bence, çılgın tarz ne olursa olsun, tutarlı olmalı. Dolayısıyla, eğer bir proje bu tarzda inşa edilmişse, istisnai derecede zorlayıcı bir sebep olmadığı sürece tipik olarak bu tarzda kalmalıdır. Yani stilleri uyuşmuyorsa; eşleşmesi gerektiği bir gerçektir. Burada soru yok.
Sadece düzelen yanlış olan başka problemler de var. Güvenlik, genel 'yanlışlık', vb. Bunlar tartışılmaz ve değiştirilmelidir.
Birisi bir şeyi kötü bir tasarım olarak kabul etmeyi reddederse, onlara doğru yolu gösterdikten ve yaptıklarıyla ilgili tüm riskleri ve sorunları gösterdikten sonra, nasıl davranacağınıza kendiniz karar vermeniz gerektiğini düşünüyorum. Ama umarım bu kadar mantıksız insanlarla çalışmıyorsunuzdur.
Programcıyım ve kod incelemelerinden hoşlanıyorum. Deneyimlerime göre iyi kod incelemelerinin anahtarı, kodu daha iyi yapmaktır.
Bir meslektaşım ile bir kod inceleme yapmak ve o potansiyel gelişmeler veya gizlenen hataları işaret zaman, ben mutluyum. Kod gelişir ve muhtemelen ikimiz de biraz daha zeki oluruz. Bunu neden istemeyeyim?
Ne yazık ki, bazı kişiler kod incelemelerini, kodunuzun 3 boşluk girintisi veya bazı diğer hayati olmayan ayrıntılar yerine 4 boşluk girintisine sahip olması gerektiğini vurgulamanın bir yolu olarak görürler.
Kod incelemesi yapan kişilerin faydalı bilgiler verebileceğinden ve vereceğinden emin olun. Sağlanan tek giriş kodu incelemeleri, bir araç kullanılarak kolayca gerçekleştirilebilecek bir şeyse, kod incelemeleri zaman kaybıdır.
Kod incelemelerinin zaman kaybı olmadığından ve çoğu geliştiricinin bunlardan hoşlanacağından emin olun.
Bir projeyi yönettiğimde, kod incelemeleri yapacağımızı söylersem, kod incelemeleri yapacağız. Elbette bunları yapmak için iyi nedenler sunacağım, ancak günün sonunda bunları uygulamak benim sorumluluğum ve kararım.
Ve programcılar bundan hoşlanmazlarsa, alternatif istihdam bulabilirler. Çoğu başarısız proje, geliştiricilerin yarısından kurtularak yararlı bir şekilde geliştirilebilir ve benim deneyimime göre, en fazla incelemeyi kodlamaya itiraz eden en yoksul geliştiricilerdir.
Kod inceleme sürecini satın almamın tek nedeni, bir yıl kadar önce onları empoze etmeye çalışan kişinin üstünlük kartını çıkarması ve belirli bir proje için birbirimizin kodunu gözden geçirmemizi sağlamasıydı. Bu projenin sonunda muazzam bir fayda gördüm ve şimdi projelerime kod incelemeleri yapmaya çalışıyorum.
"Çalışıyor" yeterli değil. Kod sadece makinelerin yürütmesi için değil, aynı zamanda insanların okuması, uyarlaması ve geliştirmesi için de yazılmıştır. İnsanlar kod yoluyla yolunu bulamazlarsa, programlamanın belediye başkanı olan tüm bu görevleri yapamazlar.
Joe Programmer şöyle diyorsa: "Koduma bakma, anlaması gereken tek kişi benim." Bundan şüphe duyarım. Sadece nadir durumlarda her biri sadece bir kişi tarafından dokunulur. Ve durum böyle olsa bile: Joe gelecek hafta, gelecek ay, gelecek yıl kendi kodunu anlıyor mu? Muhtemelen değil.
Hemen hemen her ticari kuruluşta (ve ticari olmayanların çoğunda buna gelirler) programcılar yazdıkları koda sahip değildir, işverenleri de öyle.
Hemen hemen her ticari kuruluşta (ve çoğu ticari olmayan kuruluşta), çoğu programcı kendilerinin yap yazdıkları koda sahip olmak.
Bu, kod incelemesinin bir tasarım geliştirme tekniği olarak kabul edilmesinde çok fazla soruna neden olur ...
Direnci azaltmanın yolları şunları içerebilir:
Yukarıda özellikle herhangi bir (iyi, belki de ilk) tavsiye etmiyorum.
Önemli olan, gözden geçirmeye itirazların real gerçekte ne olduğunu anlamak, yüzeyde duyduklarınızı değil. Belki derinleşmek için 5 Whys uygulayın?
Bir geliştirici olduğumda kod incelemesini sevmiyorum.
Ama ben bir lider iseniz gerçekten kod inceleme istiyorum. Nedenini biliyoruz.
Ancak, bazı geliştiriciler de benim gibi kod incelemesini sevmeyeceklerinden emin olacaklar.
Nasıl tring anonim kod inceleme hakkında?
Kod incelemesinden sonra neyin daha iyi bir yol olduğunu anlamak için örnek kod parçaları veya ipuçları yazabiliriz.
Basit bir örnek:
orijinal parça:
s=objGotFromSomewhere.doSomething()
daha iyi parça:
if(objGotFromSomewhere!=null){ s=objGotFromSomewhere.doSomething() }
not:
Bazı projelerde, ... sebep, neden ... var
ipuçları:
daima kontrol et ...
Bunu wiki'ye veya bir yere koyabiliriz, daha sonra haftalık ekip toplantısında konuşabiliriz. Teknoloji Lideri bunu yapacak ve üst düzey geliştiricileri ve her ekip üyesini de yapmaya teşvik edecektir.
Bence anonim önemlidir, bu kötü kodun kimin üretildiğini bilmediği anlamına gelir.
İnsanlar kod incelemesini sevmeyebilir, ancak neyin daha iyi bir yol olduğunu bilmek isteyecektir.
Çift değerlendirmeleri ile iyi deneyimler yaptım. Her ikisi de aynı monitörün önünde otururken iki kişi birbirlerinin kaynak kodlarını inceliyor. Her zaman aynı insanlar olmadığından ve her ikisinin de aradıklarının net ve üzerinde anlaşmaya varıldığından emin oluruz.
Ancak yine de - kod incelemeleri yapmak, eleştiriyi kabul etmeye istekli açık fikirli insanlar gerektirir.
Daha yüksek otoriteye sahip olmak için bir inceleme süreci işe yaramalıdır. İlk başta bu fikre isyan edenler bile faydalarını görmek için etrafta dolaşmalıdır. Eğer yapmazlarsa ... iyi, gerçekten yardım edemezler.
Eğer ilgisiz akranlar arasında yalnız bir dövüşçüyseniz çok daha zor zamanlar geçireceksiniz. Her iki senaryoda da anahtar, gözden geçirenlerin becerilerine kişisel bir saldırı olmadığını, daha ziyade bir takımın efor sarfetmesini anlamasıdır herkes = hataları daha verimli.
İnsanların kod incelemenizi kabul etmelerini nasıl sağlıyorsunuz?
Yapamazsın, yani yapamazsın. Ve sizden sorumluluk almanız istenene kadar kimsenin işinden sorumlu değilsiniz.
'Yorumunuza' yaklaşabilirsiniz, böylece daha çok 'geri bildirim'e benzer. Başkasının yanlış yaptığı şeyleri arayan patron siz değilsiniz, aynı soruna farklı yaklaşımları tartışan iki profesyonel.
IMO, herhangi iki programcı bir sorunu çözmek için farklı yollar bulur ve ikisi de haklı olabilir.
İncelemeye, 'Bu yaklaşımı kullanmanın avantajı olarak ne görüyorsunuz?' Ayrıca gördüğünüz dezavantajları ve alternatif yaklaşımınızın avantajlarını da sağlayın. Belirttiğiniz DA'ların onayını isteyin - 'bunun kodunuzla ilgili bir sorun olabileceğini kabul ediyor musunuz?'
Programlama çatışmalarının çoğunun değer farklılıklarından ve gelecekte ne olacağını tahmin etmekten kaynaklandığını düşünüyorum. İnsanlar tamamen belirsiz bir şey üzerinde tartışarak saatler geçirebilirler. Şimdi gerçek sorunlara odaklanın, daha sonra olabilecek şeylere daha az (ancak kaçınmayın).
En iyi yol, bunu yapan programcılardan alınma kararıdır.
Bazı insanların becerilerini kullanmanızı ve grubun birlikte çalışabileceğinden nasıl emin olacağınıza dair bir tartışma ile başlamayı öneririm, ayrıca programcıların işyeri becerilerinin güncel kalmasını sağlamanın yolları hakkında konuşacağım.
İlerlemenin bir yolu elbette kod incelemeleri yapmaktır, ancak başarılı olabilecek başka yollar da vardır, örneğin, nasıl programlanacağı hakkında bir kitap okumak ve tartışmak. "Temiz Kod: Çevik Yazılım İşçiliği El Kitabı" ( http://www.Amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882 ) öneririm.
Başka bir şey, her programcının bir şey yapmayı bitirdiğinde projelerini grup önünde sunmasına izin vermektir. Bu doğal olarak en çirkin şeylerin yazılmadığından emin olur ve herkes bir şey başardıkları için gurur duyar.
Şahsen, kod incelemesinden hoşlanmayan bir programcının sadece çok kötü bir programcı olduğunu düşünüyorum. İyi bir kod yazarsanız, bir derlemeden korkacak hiçbir şeyiniz yoktur. Aslında tarzınız için övülebilirsiniz. Ama kötü kod yazma alışkanlığı yaparsanız o zaman neden bir inceleme sevmiyorum hayal edebiliyorum. Ancak tarzınızdaki hataları başka birisine işaret etmek, kendi deneyiminizi geliştirmek için yararlıdır! Bir derlemeden öğrenmelisiniz, ondan uzak değil. Kod kalitesini artırmak için muazzam bir artış.
Kod incelemeleri yaptığınızda, kötü geliştiricileri cezalandırmak için değil, kod kalitesini artırmak için bunu yaptığınızı açıkça belirtin. Programcılarınızın bu değerlendirmeleri, performanslarını ölçmenin bir yolu olarak değil, eğitici olarak değerlendireceğinden emin olun.
Kod değerlendirmeleri bol vardı ve böylece benim kod diğerleri için biraz karmaşık bakmak eğilimindedir karmaşık algoritmalar konusunda uzmanım. Diğer programcılar, yaptığım işte çok iyi olduğumu düşünüyorlar ve sadece eğitsel değeri nedeniyle kodumu incelemeyi çok seviyorlar. Ve tabii ki, bazen kodumda bazı küçük hatalar buluyorlar, ancak genel olarak bu kod yorumları kodu inceleyen kişinin çalışma kalitesini artırıyor!
Yorum yapmak için ReviewBoard kullanıyoruz. Şirketimizde incelemeler isteğe bağlıdır: eğer ilgilendiğiniz herhangi bir şey (önemli ilaveler veya değişiklikler) yapıyorsanız, ekibinizdeki meslektaşlar tarafından yapılacak bir inceleme talebi oluşturmanızı bekliyoruz. Seçilen ekip üyeleri daha sonra incelemeyi onaylayabilir veya başka değişiklikler isteyebilir.
Bir programcı birlikte oynamadığı için incelemeleri zorlamanız gerekiyorsa, SCM'ye yapılan tüm taahhütlerin kabul edilmeden önce onaylanmış olarak işaretlenmiş bir inceleme kimliğiyle gelmesi gerekebilir.
Sorunun her zaman sona erdiğini varsaymayın. Belki de yanlış yapıyorsun.
Neden beğenmediklerini öğrenin ve otomatik olarak 'kötü bir programcı' olduklarını varsaymak yerine, öncelikle bir noktaya sahip olup olmadıklarını ve kötü bir kod inceleyici olup olmadığını veya sadece kötü iletişim kurabileceğinizi düşünün. Mümkün.
Kod inceleme/stil kurallarınız öznel, keyfi veya çılgın değilse, o zaman onlar için mantığı herhangi bir yetkili, profesyonel programcıya açıklamak kolay olacaktır. Yapamıyorsanız, belki de ne yaptığınızı veya nasıl sunduğunuzu yeniden düşünmeniz gerekir.
Aksi takdirde, sorun sadece bir veya iki kişiyle ilgiliyse, bu kişilerle daha derin bir İK problemi olabilir ve özellikle kod incelemesi ile ilgisi yoktur, kod inceleme sorunu sadece bu daha büyük sorunun bir belirtisidir.
Başlangıçtan projeden sorumluysanız veya baş geliştiriciyseniz, proje metodolojinizin bir parçası olarak bunları yürüterek kod incelemeleri yapabilmeniz gerekir. Gerekirse, incelemelerin kendiniz yönlendirilerek gerçekleştirildiğinden emin olun. Sorumluysanız ve bazı kişiler liderliğinizi takip etmiyorsa, onları programa katılmaya ikna etmeniz veya yerine koyacağınız insanlarla değiştirmeniz gerekir.
Sorumlu değilseniz, ekip üyelerini kod incelemeleri yapmanın kendileri için bir fayda olduğu konusunda ikna etmeniz gerekir. Diğer ekip üyelerini kodunuzu incelemeye ikna ederek başlayın. Tasarımınızı ve arayüzlerinizi belgeleyin ve kodunuzda gezinin. Ardından, kendiniz için bir inceleme inceleme özeti ve işlem öğeleri yazın ve ekip üyelerinize dağıtın. Bundan bir faydası varsa, takıma hızlı bir şekilde görünecektir.
Direniş varsa, insanların itirazlarının ne olduğunu bulmanız gerekir. Geçerli olabilirler. Örneğin, proje yeterince küçük olabilir ve tüm ekip, projedeki herkes resmi incelemeler olmasa bile projedeki tüm kodları etkili bir şekilde gözden geçirecek kadar deneyimli olabilir.
Kod incelemelerini, kodlama ve analitik becerilerini geliştirmek için geri bildirime ihtiyaç duyan veya kodlama olmayan yerlerde, bir kişinin tüm kodu gerçekten almasının mümkün olmadığı çok büyük projelerde en yararlı olduğunu düşünüyorum. tasarımı ve kodu anlaması gereken ekip üyeleri. Yasal sonuçlar olduğunda veya kodun başarısız olması durumunda daha da kötüsü (örn. Uçak uçuş kontrol sistemleri) incelemeleri gerekli veya hatta zorunlu buluyorum. Takımdaki herkesin kod ürettiği, projenin küçük olduğu ve ekip üyelerinin her zaman kodu her zaman okuduğu ve eleştirdiği tecrübeli programcılar ile çalışırken onları gereksiz buluyorum.
Kullanıcıların kod incelemesini "yapamayacağını" kabul etmeniz gerekir.
İstediğiniz şeyi bir derleyici yapabilirsiniz, ancak insanlarla hedefleyebileceğiniz en iyi şey:
"Başka bir kişinin kodunu incelerken nasıl daha etkili olabilirim?"
... ve bu tamamen başka bir soru.
Kod değerlendirmeleri ile en büyük sorun bazı insanlar onları doğru yapamam olduğunu düşünüyorum. Örneğin, sınıfın/yöntemin/parametrenin/herşeyin önüne final koymak önemli değildir ve bir kod incelemesinde olmamalıdır. Başka bir örnek, yalnızca foreach tamam olduğu için yanlış döngüyü kullanmaktır. Her şeye yorum yapmayı gerektirir. String +/StringBuilder/StringBuffer optimizasyonları. Bu şeylerden herhangi biriyle kod incelemesi var, ben bu adam bir aptal olduğunu düşünürdüm ve kod değiştirmek zorunda değildi, ben olmaz.
Ayrıca bazen kod inceleme araçları sadece yanlıştır, örneğin varsayılan PMD (Java) sınıfın çok fazla yöntemi olduğunu söylemeyi sever, bu yüzden yaptığım şey soyut ebeveyn sınıfı ve bazı yöntemleri itin. Sınıfı 2 sınıfa ayırmış olabilirim, ancak API'nin tek bir sınıfta tüm bu yöntemlerle kullanımı daha kolay olacağını düşünüyorum (küçük bir lib ve tasarım kararım). Bazı insanlar her zaman varsayılanı kullanır, bu yüzden berbat olmamalıdır.
1-3-2 prensibi Burada geçerlidir (1. sırayı, sonra 3. kişiyi, sonra 2. sırayı - bu sırayla konuşurum).
İlk öncelik vaaz ettiğimi pratik yap, yani ben ilk "Ben" kod değerlendirmeleri (ve bunları yapıyor) gerekir demek endişe duyuyorum.
Sonra sadece atmosfer kod değerlendirmeleri için kendini adapte değilse, "insanlar" kod değerlendirmeleri gerekir (ve iyi nedenleri listelemek) söylemeye başlar.
Ancak bundan sonra, eğer her şey başarısız olursa (ve ben yetkiliyim :)), yasayı koydum ve kod yorumlarına ihtiyacınız olduğunu söylüyorum. Bu, insanların doğru şekilde numaralandırdığı bölümdür, ancak sadece 3. kişinin zihniyeti son olmadığında seğiririm. Eğer ilk kişi yumruk konuşamaz ve vaaz ettiğim şeyi pratik yapmazsam, ben sadece "etkisiz" bir ikna edici değil, aynı zamanda daha fazla sarsıntılıyım.
ps. Bunların hepsini ilk kişide nasıl söylediğime dikkat edin :)
Başka bir bakış açısı sunmak için, bazen kod incelemelerinin bile tartışmak için mantıklı olmayan şeylere sürüklendiğini keşfettim. Ben kod ekledi yorumlardan birinde doğru noktalama (bir durak) yok diyerek kodumu gözden geçiren bu adam vardı gibi. Böyle bir şeyin önemli olup olmadığı öznel olsa da (örneğin, serbest bırakılan belgelere çekilecek satır içi belgeler yazıyorsanız, önemli olabilir), benim durumumda açıkça değildi.
Kod incelemelerinin zorunlu olduğunu düşünüyorum, neredeyse her zaman kod inceleme yorumları tarafından yardım edildim ve bazen yeni bir ekip üyesinin neden önemli olduğunu anlamaları biraz zaman alıyor. Ancak, tarafsızlığın korunması, her önerinin nesnel bir nedeni olması ve gözden geçirenin öznel tercihleri nedeniyle yapılmaması da önemlidir.
Bu nedenle soruyu cevaplamak için - yeni ekip üyelerine, kod incelemesinin önemi ve amacı hakkında, dinlemeleri muhtemel bir aşamada rehberlik etmek iyidir. Ve deneyimle, bunun kişisel olmadığını öğrenecekler. Ayrıca, öznel görüşlerini başkalarına dayatanlar değil, doğru kişilerin yorumcu olması önemlidir.
Komutlarla değil, sorularla inceleyin
İnceleme sürecinizle ilgili temel bir problemin, boğazlarını bir şeyleri zorlamanız gerektiği fikriniz olduğunu düşünüyorum. Bunun yerine, "Neden Y yerine X yaklaşımıyla gitmeye karar verdiniz?"
Bu, kodlama sürecinizi kabul etmeye zorlamak yerine, kendi kodlama süreçleri hakkında düşünmelerini sağlayacaktır. Ve hey, sen de bir şeyler öğrenebilirsin.
Kod incelemesinde yer alma şansım olmadı, ama kesinlikle mükemmel bir uygulama olduğunu düşünüyorum.
Kod incelemesinin iyi kabul edilebilmesi için, "olumlu eleştirilerin" nasıl yapılacağı konusunda bazı eğitimler düzenleyebilirsiniz.
Ve bu arada, böyle bir eğitim insanlara şirketi/proje geliştirme prensiplerini hatırlatmak ve bazı takım oluşturma yapmak için bir fırsat olabilir.
Öncelikle, tüm problemlerde olduğu gibi, bunu kendiniz çözmeye başlayın. Kod incelemelerini olabildiğince verimli ve çatışmasız yapmak için her şeyi yaptığınızdan emin olun.
Deneyimlerime göre, pair programming sadece incelemelerden çok daha fazla faydaya sahiptir. Sadece daha fazla hata bulmakla kalmaz, aynı zamanda daha yaratıcı çözümleri, bilgi paylaşımını, ekip oluşturma, açık iletişimi teşvik eder ve bir ekibin doğal bir programlama stilini sürekli olarak geliştirmesini sağlar.
Her seferinde, incelemeleri deneyen bir ekipte oldum, çatışmaya giriyor ve zor bir son tarih belirdiğinde fışkırıyor.
Deneyimli bir geliştiricinin inceleme fikrine uyum sağlaması zor olabilir, ancak tıkladığında ivme gerçekten yükselir. Birkaç hafta deneyin ve sizin için işe yarayıp yaramadığını görün.
Onları öğrenme boyutunda satmaya çalışın. Tanıştığım hemen hemen her programcı öğrenmekten hoşlanıyor ve kişisel olarak her kod incelemesinde bir şey öğrendim (gözden geçiren veya inceleme yapan).
İncelemelere başladıktan sonra, değerli olduklarından emin olmak sizin işiniz. Küçük biçimlendirme argümanlarında bataklığa kapılmayın (bunları çevrimdışına alın). Statik analiz araçlarını kullanın ( FindBugs Java için), TODO'ları arayın, her derleyici uyarısını inceleyin, eksiksizlik için belgelere bakın, vb.
İncelemede ne kadar değerli bilgi bulunursa, incelemeler o kadar başarılı olur.
Kod incelemeleri, büyük bir felaketi erken önlemenin önemli bir parçasıdır. Büyük geliştirme mağazalarının birçoğu projelerinde kod incelemeleri GEREKTİRİR.
İnsanların kabul etmesini kolaylaştırmak için, gözden geçirenin izlemesi gereken kurallar olmalıdır. Birey, seçildiklerini veya gözden geçirenin kin içerebileceğini düşünüyorsa, incelemeden geçmek istemeyebilir. Önceden herkes yönergeler ve gözden geçirenin ne arayacağı konusunda bilgilendirilirse, daha iyi resepsiyon alabilirsiniz. Kimse kariyerlerine veya performanslarına yansırsa öznelliği sevmez.
Deneyimden bahsetmişken, anti-kod incelemesi olan yüksek profilli hükümet sözleşmeleri üzerinde birkaç geliştirici ile çalıştım. Bu bizi nereden buldu? Zamanlamanın ve bütçenin üzerinde. Saklanacak bir şeyleri olan geliştiriciler, kısa gelişlerinin farkında oldukları için işlerinden geçen insanlara karşı dirençli olacaklar.
Benim deneyimlerime göre, istekli olmayan veya incelemelere karşı dirençli olanlar aynı zamanda, düşünme tarzlarını öğrenmek ve eldeki probleme uyarlamak istemeyen aynı kişilerdir. kişi karar verme rolündedir.
Düşünülecek başka bir şey; Bütçe ve şirket bunu kullanılabilir hale getirebiliyorsa, yalnızca kod incelemeleriyle görevlendirilmiş birisine sahip olun, hatta incelemeyi yapmak için başka bir projeden birini getirin. Önceden bir ilişki yoksa, her iki taraf için de daha kolay olabilir.
Eğer her şey başarısız olursa ve kişinin tutumu genel olarak proje için problemler yaratıyor olabilir, belgeyi belgeleyebilir ve saygılı bir şekilde meseleyi bir üst seviyeye yükseltebilir. Birinin peşinden gitmek veya kısa geleceğini göstermek sizin için kötü görünecek ve kendi çalışmanıza dikkat çekebilir.
Kimse henüz Çekirdek Protokoller bir parçası olan "Mükemmellik Oyunu" adlı Agile uygulamadan bahsetmemiştim. Çekirdek Protokoller, programcılar için kabul edilmesi daha kolay bir tür kod incelemesi önerir.
Özetle şu şekilde çalışır:
Tabii ki bu, programcı mükemmelliği aramayı bırakana kadar tekrarlanabilir veya gözden geçiren daha fazla yardım edemez (düşük bir değerlendirme yapar ve programcı orada durur).
Bu, Temel Protokollerden geldiği için biraz resmi, ancak programcı her zaman kod değişikliklerinden sorumludur ve bir hizmet olarak gözden geçirilmesini istiyor. Genellikle bu tür bir incelemeyi sorumluluğu reddetmek için kullanmaz, aksine programcı verilen bir kişinin yardım edemeyeceğini başka bir incelemeye sormalıdır.
Mükemmellik Oyunu gönüllü olarak çalıştığı için her durum için geçerli olmayabilir (zorunlu kod incelemeleri hakkında soru sormayı anlıyorum). Ayrıca, "kod incelemesi" etiketinin altında yatan birçok farklı uygulamayı kapsadığını da ortaya koydu (sadece Agile World Perfection Game and Pair Programming'de iki farklı kod inceleme türü vardır).
Bazı uygulamaların kabul edilmesi diğerlerinden daha kolaydır ve ayrıca ekibe ve bireysel programcıya da bağlı olabilir. Bir son söz olarak, bir ekibin üyeleri arasında güven olduğunda kod incelemelerinin daha kolay olduğunu söyleyerek orijinal soruya da cevap verirdim.
Hangi uygulamalar seçilirse seçilsin, Takım arkadaşlarına güven kesinlikle programcılar tarafından yapılan kod inceleme kabulünün merkezinde yer alır ..
Bir seçenek daha: Bir projedeki tüm programcılar ile süreçlerimize periyodik olarak "yansımalar" sunuyoruz. Bu uygulamanın bir kısmı, son zamanlarda ortaya çıkan hatalar üzerinde bir "kök neden analizi" yapmaktır. Buna ne sebep oldu? Bu bir gerileme miydi? Bu IE6 testi eksikliği miydi? Joe'ya bunu sormak yardımcı olur muydu? Amaç, neden bu hataları yaşadığımızı ve bunları önlemek için neleri değiştirebileceğimizi bulmaktır.
Kod incelemeleri uygun bir araçsa, bu tartışma sırasında ortaya çıkacaktır. Ve onu tanıtan programcıların kendileri olacak ve böylece en başından çok daha fazla katılım alacaksınız. Tüm kodların check-in yapılmadan önce gözden geçirilmesi gerektiğine karar verdik. Geliştiriciler genellikle bunu istiyorlar, ancak unuturlarsa, koyunca itiraf ediyorlar ... sadece "yönetime" karşı gelmediklerini, ancak takımın anlaşmasına aykırı olduklarını biliyorlar. .
(Veya uygun bir araç değilse, insanlar nedenini açıklama şansına sahip olurlar.)
Farklı bir durumum var. Çok deneyimli bir geliştirici olmadığım için, her sürümden önce kodum için kod incelemesi yapmak istiyorum. Ancak çoğu zaman, kod incelemesi sıkı programımıza uymuyor. Ya da şirketim bunu yapmanın yeterince önemli olduğunu düşünmüyor. Test odaklı geliştirme için de aynı şey geçerli. Gerçekten sorularım varsa, koduma bakmak için üst düzey bir geliştirici alacağım. İdeal değil ama bunu yapmak kodlama becerimi geliştirmeme yardımcı oluyor.
Kod incelemeleri yapmayacaklarsa, basit ... sadece onları bırak. Açıkçası iyileşmekle fazla ilgilenmiyorlar. Etrafında ölü ağırlık tutmaya gerek yok.
Kod incelemesini, ana veri havuzuna kod vermenin zorunlu bir parçası haline getirin.
Bu benim ekibim var ne ve kod kalitesini artırır ve neredeyse tamamen şüpheli kod özel olarak "teknik borç" işaretlenmeden kod tabanı haline yapma olasılığını ortadan kaldırır.
Kod tabanlarımızı ve depolarımızı yönetmek için Git ve Gitorious kullanıyoruz.
Bir mainline deposu var, kimse doğrudan buna bağlı değil, ondan Gitorious sunucusundaki özel klonlarına çekiyor.
Çalışma ve Push, kendi özel sunucu tarafı klonunu taahhüt eder ve değişikliklerinin ana hattına dahil edilmesi için başvurmak üzere birleştirme istekleri gerçekleştirir.
Başka biri birleştirme isteğine, tercihen ekip/proje teknik liderine cevap verir ve değişiklikleri kodu inceler, uygular, derler ve testleri çalıştırır ve her şey yolundaysa değişiklikleri mainline havuzu birleştirir ve birleştirme isteğini kapatır.
Takım/Proje Teknik liderleri, birleştirme taleplerini ekipteki bir başkasına yanıtladılar, bu da bir akran bulunmuyorsa genç üyeler için harika bir öğrenme deneyimi.
Her iki durumda da mainline deposuna işlenen ve ekibin geri kalanını ve şirketin tamamını bir bütün olarak etkileyen kötü kod nedeniyle birden fazla kişi kancada. Ekibin daha kıdemli bir üyesi, birleştirme isteklerinin çoğuna yanıt verirse, kod tabanının tamamını etkilemeden önce kötü uygulamaları veya tasarımları düzeltme veya reddetme konusunda daha kalifiye olurlar.
Bu mini kod incelemeleri genellikle zaman kaybı olan geleneksel kod incelemelerinden çok daha kullanışlıdır. Tasarım incelemeleri çok daha değerlidir, çünkü a ** kötü tasarımın doğru uygulanması zayıf uygulama/ uygun tasarım.