- Büyük kod tabanlarında çalışmak, yazılım mühendisleri için en zor işlerden biridir. Bu deneyimi kişisel projelerden veya açık kaynak projelerinden edinmek zordur
- Milyonlarca satır kod, aynı anda çalışan 100-1000 mühendis ve en az 10 yıllık bir kod tabanı
- Birikmiş karmaşıklığı ve zaman içinde oluşmuş durumu anlamaya yönelik ayrı bir yetenek gerektirir
En büyük hata: tutarlılık eksikliği
- En yaygın hata, mevcut kod tabanını görmezden gelip kendi özelliğini uygulamaktır. Bu, tutarlılığın korunmasını engeller ve kod tabanındaki karmaşayı artırır
- Genellikle mevcut kod tabanıyla etkileşimi en aza indirerek kendi temiz kodunu korumaya ve mevcut "legacy" koddan kaçınmak için bağımsız bir uygulama geliştirmeye çalışırlar
- Tutarlılık, kod tabanının karmaşıklığını azaltır ve gelecekteki iyileştirme çalışmalarını kolaylaştırır
- Örneğin, bir API endpoint'i uygularken mevcut kimlik doğrulama yöntemini takip etmek önemlidir. Bu, kod tabanındaki mayın tarlasından güvenle geçebilmenizi sağlar
- Tutarlı kalıplar yoksa tüm kodu elle güncellemek gerekir ve bu zamanla giderek zorlaşır
Diğer önemli unsurlar
- Servisin gerçekte nasıl kullanıldığını anlamak
- En sık kullanılan ana API endpoint'lerini ve kritik yolları (hot path) belirleyin
- Sık kullanılan koddaki değişiklikleri dikkatle ele alın
- Test ve izlemenin önemi
- Büyük projelerde tüm durumları test etmek mümkün olmadığından yalnızca ana yollar test edilir
- Kodu savunmacı biçimde yazın ve kademeli dağıtım ile izlemeye güvenin
- Bağımlılık ekleme konusunda çekimser olun
- Bağımlılıklar güvenlik sorunlarına ve artan bakım maliyetlerine yol açar
- Zorunluysa, güvenilir bağımlılıklar seçin
- Kodu kaldırırken dikkatli ama proaktif olun
- Production verilerini analiz ederek çağrıları güvenle kaldırdıktan sonra kodu silin
- Gereksiz kodu kaldırmak kod tabanının bakımını kolaylaştırır
- Bu, büyük kod tabanlarında yapılabilecek en değerli işlerden biridir
- Küçük PR'larla çalışın ve diğer ekiplerin kodunu etkileyen değişiklikleri önce ele alın
- Bu, alan uzmanlarının sorunları fark etmesine ve kazaları önlemesine yardımcı olur
Büyük kod tabanları neden önemlidir?
- Büyük kod tabanlarının değeri
- Çoğu teknoloji şirketi gelirini büyük kod tabanlarından elde eder
- "Legacy kod tabanı" üzerinde çalışmak, şirketin gerçek işini yapmak anlamına gelir
- Kodu ayırmadan önce anlamak gerekir
- Büyük bir kod tabanını ayırmak istiyorsanız önce onun genel çalışma biçimini yeterince anlamanız gerekir
- Yeterli anlayış olmadan büyük ölçekli yeniden tasarım mümkün değildir
Özet
- Büyük kod tabanları önemli iş değeri taşır
- En önemli şey tutarlılığı korumaktır
- Yeni özellikleri uygulamadan önce mevcut kodu inceleyin ve kalıpları takip edin
- Mevcut kalıpları izlemiyorsanız bunun için çok iyi bir nedeniniz olmalıdır
- Kodun production ortamında nasıl kullanıldığını anlayın
- Her durumu test etmek mümkün olmadığından testlere aşırı güvenmeyin; izleme ve kademeli dağıtıma güvenin
- Kod kaldırma fırsatlarını aktif biçimde değerlendirin ama dikkatli davranın
- Alan uzmanlarının inceleyebilmesi için küçük PR'lar halinde çalışın
8 yorum
Tutarlılık önemli ama bu, kod iyileştirmelerini ertelemek ya da mevcut hatalı kalıpları tekrarlamak anlamına gelmemeli... Zor bir mesele. Çünkü tutarlılığı koruyalım derken aynı teknik borcu biriktirmeye devam etme durumuna da düşülebilir.
Her şeyden önce kodlama kurallarına uyulmalı.
Özellikle girinti kuralları...
Bunu otomatik olarak yakalayan araçları uygulayamadığınız bir alanda mı çalışıyorsunuz..? hıçkırık hıçkırık
Evet.... hıçkırık hıçkırık
Ağlayacağım.. hıçkırık hıçkırık
Projenin ölçeği != olgunluğu
Tutarlılığın çok önemli olduğuna katılıyorum, ancak bunu bahane ederek kod tabanını iyileştirmenin önceliğini düşük tutmaktan kaçınmak gerektiğini düşünüyorum.
Projeler her zaman yaşayan, nefes alan ve büyüyen yapılardır; bu yüzden uygun zamanda iyileştirme yapılamazsa, sonradan bunu geri çevirmek için çok daha fazla zaman ve emek gerekecektir.
Ben de katılıyorum. 20 yılı aşkın bir projeyle çalışıyorum ve bugünün standartlarına kıyasla gerçekten çok olgunlaşmamış birçok yönü var.
Tutarlılığın kodun anlaşılabilirliğini artırma gibi bir avantajı olsa da, yapısal sınırlamalar işlevsel sınırlamalara yol açıp hizmetin gelişimini engellediği için bazen cesur bir yeniden yapılanmanın da gerekli olduğunu düşünüyorum.
Hacker News görüşleri
Mevcut kod tabanı tutarsız olduğunda, yeni bir yaklaşım benimsemek, bunu belgelemek ve geri bildirim almak önemlidir. Mevcut kodla tutarlılığı korumaya çalışmak gerekir.
Mevcut kod tabanının araçlarını kullanmak gerekir, ancak yeni bir kod tabanı kurmak daha keyifli olabilir.
Büyük bir kod tabanını bölmek için önce onu anlamak gerekir; deneyimsiz bir ekip bunu denerse başarısız olma olasılığı yüksektir.
Büyük kod tabanlarında rastgele iyileştirme yapma girişimleri çok olur.
Kod tabanının evrimini sürdürmek zordur.
Kod tabanı büyük ve insan kaynağı yetersizse, yeni bir kişinin üretken hale gelmesi uzun zaman alır.
Kod tabanını düzenli tutmak, özellik yayınlamak için gereken asgari işi yapmak anlamına gelir.
Tutarlılık en önemli şey değildir; kod tabanının bazı bölümlerini iyileştirmek daha iyidir.
"Tutarlılık eksikliği ölümcül bir hatadır" sözü %100 doğrudur.
Mühendis olarak üç özdeyiş: