Bir yıldan az bir sürede 2 geliştiriciden 10'a büyüyen bir ekiple çalışıyorum. 3 numaraydım ve ilk kodlama standartları konusunu gündeme getirdim. İki orijinal geliştirici birkaç yıldır yan yana çalışıyorlardı ve bana yabancı görünen ortak bir standart benimsemişlerdi. Açıkladığınız sorunların aynısını yaşadık.
Yaptığımız şey:
Araştırma kodlama standartları
Oluşturulan açık kaynak projelerini kontrol etmek için birkaç gün geçirdik. Ekibin hızla genişleyeceğini biliyorduk ve bazı genel yönergelere değil, gerçek projelere dayalı gerçek çözümler arıyorduk. Ayrıca en uygun kodlama standartlarını umursamadık, ancak mantıklı olacak ve tüm kod tabanımızın yeniden düzenlenmesi için çağrı yapmayacak bir dizi kural ve yönerge için önemliyiz. Eğer sen-ecek istemek bir kodlama standartları kesmek için arıyorlardı.
Üçümüz, kurulu bir PHP projesi için en iyi kodlama standartlarının Zend Framework tarafından takip edilenler olduğuna karar verdik. Neyse ki Zend Framework çalışanları çok kapsamlı bir kodlama standartları belgesi sağlıyor .
Kendi kodlama standartlarımızı oluşturma
Tabii ki başka bir projenin kodlama standartlarını projemize uygulamak mantıklı değildi. Zend Framework belgesini şablon olarak kullanıyoruz:
- Önce projemize uymayan her şeyi kaldırdık
- Sonra bir stil meselesi olarak algıladığımız her şeyi stilimize değiştirdik
- Ve sonunda her şeyi yazdık
Bu yüzden elimizde oldukça büyük bir belge vardı, süslü wiki'mizde saklandık, hoş bir okuma oldu, hepimiz tarafından kabul edildi. Ve kendi başına tamamen işe yaramaz.
Sözümüze sadık kalmak
O zaman kod tabanımız yaklaşık 1 * 10 ^ 6 sloc idi. Resmi kodlama standartlarını benimsediğimizden beri, kodumuzu yeniden düzenlemeye başlamamız gerektiğini biliyorduk, ancak o zaman başka sorunlarla da karşılaştık. Bu yüzden sadece 5 * 10 ^ 3 sloc olan en temel kütüphanelerimizi yeniden düzenlemeye karar verdik.
Biz (biz yerine yerel küfür kodlama standartları usta olmak birimizi atanan usta kontrol ve standartları uygulayan sorumluluğuyla). Rolü her birkaç sprintte geri dönüştürüyoruz. İlk bendim ve neredeyse her işimi izlemem gerektiğinden çok işti.
Görev sürem boyunca orijinal belgeye birkaç yeni tartışma ve küçük ek yaptık ve sonunda biraz istikrarlı bir belgemiz vardı . Bunu arada bir değiştiriyoruz ama bu değişikliklerin çoğu dilin yeni özellikleri üzerindedir, çünkü PHP 5.3 adından başka önemli bir sürümdür.
Yeni adamla uğraşmak
Bir sonraki yeni adam geldiğinde, kodlama standartlarımızı test etme zamanı gelmişti. Kod tabanımıza küçük bir girişin ardından kodlama standartları dokümanımızı değerlendirmesini istedik. Neredeyse ağladı. Her şeyi farklı yaptığını gördü.
O zaman kodlama standartları ustası olduğum için, girdisini değerlendirmek ve belgeyi buna göre revize etmek bana kalmıştı. Onun önerileri:
- Kişisel tarzın meseleleri (genellikle reddedildi)
- Java geçmişi için anlamlı olan ancak PHP ile çok fazla olmayan standartlar (reddedildi)
- PHP ile kısa süreli maruz kalmasından kaynaklanan sözleşmeler (bazıları reddedildi, ancak birçoğu ilk araştırmamızda hiç düşünmediğimiz veya bulamadığımız popüler sözleşmeler olduğunu kanıtladı)
Önümüzdeki birkaç hafta boyunca kendisine basit bir görev verildi: Kod tabanımızın birkaç bölümünü standartlara uygun hale getirin. Bu kuralları birkaç kurala göre dikkatlice seçmek zorunda kaldım:
- Kod tabanımıza (ve genel olarak PHP'ye) aşina olmayan biri için kod nispeten kolay olmalıdır
- Kod ne işe alındığına dair olmalı
Sürecini izledim ve iyi bir iş çıkardı. Belgemize uyması imkansız olan ve buna göre revize edilen birkaç kod parçasını belirledik (hangisi daha mantıklıysa, kod ve / veya standartlar)
Sonra yeni bir adam daha geldi. Süreci tekrarladık (bu sefer farklı usta) ve tekrar çalıştı. Ve yeniden.
Sonuç olarak
- Bir kodlama standartları belgesi oluşturun, ancak standartlarınızın yalnızca size ait olmadığından emin olun, ancak platformunuzun daha geniş topluluğunda ortak standartları yansıttığından emin olun.
- Kodlama standartları yöneticimize benzer bir rol atayın. Birisi en azından yeni kodu ve özellikle yeni üyelerin yeni kodunu izleyecek. Son derece sıkıcı olduğu için rolü geri dönüştürün.
- Her zaman yeni bir üyenin girdisini değerlendirin. Mantıklıysa, standartlarınızı daima revize edin. Kodlama standartları belgeniz gelişiyor olmalı, ancak yavaş olmalıdır. Her yinelemede kod tabanınızı yeniden etkinleştirmek istemezsiniz.
- Her yeni üyenin standartlarınızı ve sözleşmelerinizi öğrenmesi ve bunlara uyum sağlaması için bir süre bekleyin. Bu durumlarda en iyi çalışmaları yaparak öğrenin.
- Wiki, bu tür belgeler için harikalar yaratıyor.
- Kod incelemeleri her durum için harikalar yaratıyor!
Sürecin bir noktasında standartların kontrolünü otomatikleştirmek için ön taahhüt kancası kullanmamız önerildi . Çeşitli nedenlerden dolayı buna karşı karar verdik, bu konuda StackOverflow hakkında bazı ilginç tartışmalar var:
Bazıları PHP'ye özgüdür, ancak yanıtlar tüm platformlar için geçerlidir.