Geçen yılki bazı ciddi kalite sorunlarının ardından şirketim son zamanlarda kod incelemeleri yaptı. Kod inceleme süreci, kurallar veya herhangi bir kontrol listesi olmadan hızlı bir şekilde uygulamaya kondu.
Başka bir geliştirici ve ben, sistemde yapılan tüm değişiklikleri, bagajda birleştirilmeden önce incelemeyi seçtik.
Ayrıca "Teknik Kurşun" olarak seçildik. Bu, kod kalitesinden sorumlu olduğumuz anlamına gelir, ancak süreçte değişiklik yapma, geliştiricileri yeniden atama veya projeleri geri tutma yetkisine sahip değiliz.
Teknik olarak birleşmeyi inkar ederek gelişime geri verebiliriz. Gerçekte bu, patronumuzun zamanında sevk edilmesini talep etmesiyle neredeyse her zaman sona erer.
Yöneticimiz, yaklaşmakta olan projelerin programlarını oluşturmakla ilgilenen bir MBA programıdır. Deneme aşamasındayken, yazılımımızın iş açısından ne yaptığı hakkında hiçbir fikri yok ve bir geliştiriciden açıklama yapmadan en temel müşteri taleplerini bile anlamakta zorlanıyor.
Halen gelişim SVN'deki geliştirme branşlarında yapılıyor, geliştirici hazır olduğunu düşündükten sonra, bilet sistemimizdeki bileti müdürümüze atar. Yönetici daha sonra bize atar.
Kod incelemeleri ekibimizdeki bazı gerilimlere neden oldu. Özellikle eski üyelerden bazıları değişiklikleri sorguluyor (yani "Biz her zaman böyle yaptık" veya "Neden yöntemin mantıklı bir adı olmalı, ne yaptığını biliyorum?").
İlk birkaç haftadan sonra meslektaşım iş arkadaşlarıyla sorun çıkarmamak için işlerin kaymasına izin vermeye başladı (bana kendisi, bir hata raporundan sonra bir müşteri tarafından dosyalandığını, böceği bildiğini söyledi; geliştirici işaret ettiği için ona kızardı).
Öte yandan, şimdi, taahhüt edilen kodla ilgili sorunları belirtmek için bir eşek olduğum bilinmektedir.
Standartlarımın çok yüksek olduğunu sanmıyorum.
Şu andaki kontrol listem:
- Kod derlenecek.
- Kodun çalışacağı en az bir yol var.
- Kod çoğu normal durumla çalışacaktır.
- Kod, birçok uç durumda çalışacaktır.
- Girilen veriler geçerli değilse, kod makul bir istisna atar.
Ancak geri bildirim verme biçimimin sorumluluğunu tamamen kabul ediyorum. Zaten bir şeylerin neden değiştirilmesi gerektiğini açıklayan, bazen de bir şeyin neden belirli bir şekilde uygulandığını bile sormak için eyleme geçilebilecek noktalar veriyorum. Kötü olduğunu düşündüğüm zaman, onu başka bir şekilde geliştireceğimi belirtiyorum.
Eksik olduğum şey, "iyi" olarak işaret edecek bir şey bulma yeteneğidir. Birinin kötü haberi iyi haberlerde yemeyi denemesi gerektiğini okudum.
Ama iyi bir şey bulmakta zorlanıyorum. “Hey, bu sefer gerçekten yaptığınız her şeyi yaptınız”, hoş ya da yardımcı olmaktan daha küçümseyici.
Örnek Kod İncelemesi
Selam Joe,
Library \ ACME \ ExtractOrderMail Class'taki değişiklikleriniz hakkında bazı sorularım var.
Neden "TempFilesToDelete" u statik olarak işaretlediğini anlamadım. Şu anda "GetMails" için ikinci bir çağrı bir istisna atar, çünkü dosyalara dosya eklersiniz, ancak silindikten sonra bunları asla kaldırmazsınız. Fonksiyonun sadece çalışma başına bir kez çağrıldığını biliyorum, fakat gelecekte bu değişebilir. Bunu sadece bir örnek değişken yapabilir misiniz, o zaman paralel olarak birden fazla nesneye sahip olabiliriz.
... (İşe yaramayan diğer bazı noktalar)
Küçük puanlar:
- Neden "GetErrorMailBody", Kural Dışı Bir İstisna alıyor? Bir şey mi kaçırdım? İstisna atmıyorsunuz, sadece iletin ve "ToString" deyin. Neden?
- SaveAndSend Yöntem için iyi bir isim değil. Bu yöntem, bir postanın işlenmesi yanlış giderse hata postaları gönderir. Bunu "SendErrorMail" olarak veya başka bir şeyle yeniden adlandırır mısınız?
- Lütfen eski kodu yorum yapmayın, tamamen silin. Hala yıkılma içinde.