Pratik Temiz Kod: Bakımı Kolay Kod İçin Kapsamlı Bir Rehber
4 dk okuma
Bu yazı makine çevirisidir. İngilizce aslını oku
İçindekiler

Bu yazı, “Pratik Temiz Kod” yazı serisinin ilk yazısıdır.
1. Giriş: İnsanların Anlayabileceği Kod Yazma Sanatı
“Bilgisayarın anlayabileceği kodu her aptal yazabilir. İyi programcılar insanların anlayabileceği kod yazar.” — Martin Fowler.
Temiz kod, daha okunabilir, bakımı daha kolay ve daha sade kod elde etmeye yönelik bir zihniyet ve bir dizi pratiktir.
Doğru uygulandığında daha iyi bir kod tasarımına ve kolay anlaşılır bir kod yapısına götürmelidir; bu yapı sayesinde değişiklikleri daha verimli yapabilir ve gerektiğinde performansı iyileştirebilirsiniz. Bunun dışında pek çok faydası daha vardır.
Geliştiriciler için önemlidir, çünkü kod tabanının bakımını kolaylaştırır ve hataların üretim ortamına ulaşmadan önce yakalanmasını sağlar.
Ekipler için önemlidir, çünkü ekibin her üyesi temiz kod üretirse ekibin hızı artar; hatalardan ve değişikliklerden kaynaklanan operasyonel maliyetler azalır.
İşletmeler için önemlidir, çünkü daha verimli ve uyum sağlayabilen ekipler ortaya çıkarır; bu da maliyetleri düşürüp kârı artırır.
Programcılık kariyerim boyunca temiz kodun faydalarını bizzat yaşadım. Temiz kod eksikliğinden kaynaklanan sayısız zorlukla da karşılaştım. Küçücük bir değişiklik için bile dokunulması imkânsız, gereksiz yere şifreli kodlar gördüm. Sistemin doğruluğunu garanti etmesi beklenen ama kendilerinin doğru olup olmadığı şüpheli, berbat testler gördüm. Akıl almaz kalıtım hiyerarşileri gördüm.
Kariyerimin belli bir döneminde ben de düşük kaliteli kod ürettim. Ancak kendimi bilinçli olarak geliştirmeye çalıştım ve hatalarımdan olabildiğince ders çıkardım.
2. Temiz Kodun Önemi
Temiz kod pratiklerinin birçok faydası var. Bu konu başlı başına bir yazıyı hak ediyor, ama şimdilik birkaç kategori altında özetleyelim:
- Okunabilirlik: Temiz kod pratiklerini uyguladığınızda, hem bugünkü kendiniz, hem gelecekteki kendiniz, hem de takım arkadaşlarınız ya da kodun bakımını üstlenecek başka biri için daha okunabilir kod üretirsiniz.
- Bakım kolaylığı: Kodunuzun bakımı kolaylaşır. Değişikliklerden ve düzeltmelerden kaçınamazsınız; ama sisteminizi değiştirmek kolaysa değişiklikleri ve düzeltmeleri daha hızlı uygulayabilirsiniz.
- Verimlilik: Kodu daha iyi anlayabiliyorsanız gereksiz kısımları ayıklayabilirsiniz. Kodunuzun performansını iyileştirmeniz gerektiğinde de işiniz kolaylaşır.
Bu faydaları, eski bir uygulamayı monolitik kod tabanından mikroservis kod tabanına taşıdığımız bir projede çalışırken bizzat yaşadım. Monolitik uygulamanın bakımı tam bir kâbustu. Beş yılı aşkın süredir bekleyen kullanıcı hikâyeleri ve özellik talepleri vardı, ama kod tabanına dokunulamadığı için bunları hayata geçiremiyorduk.
Neden? Çünkü o dönemde, stresli bir start-up ortamında bir an önce bir şeyler yayınlama telaşı yüzünden temiz kod öncelik değildi. Bunu anlıyorum ve kendimi o durumda hayal edebiliyorum. Yine de temiz kodun önemini ve temiz kod eksikliğinin gerçek dünyadaki etkisini vurgulamak istiyorum. Kodun temiz olmayan yapısının, yüzlerce geliştirici saatini yiyen pek çok hataya yol açtığından ve bunun da işleri fiilen yavaşlattığından eminim.
Daha temiz bir kod tabanı olan mikroservise geçtikten sonra ekip verimliliğini ciddi biçimde artırdık. Çok daha hızlı teslimat yapıyoruz. Yeni takım arkadaşlarımız bile yeni kod tabanında görevleri kısa sürede tamamlayabiliyor. Artık özel bir uzmanlık gerekmiyor! Artık kodun geçmişini bilmek gerekmiyor! Üzerinde çalışmaya başlamak için domain'i bilmek yeterli.
3. Seriden Neler Beklemelisiniz
Bu seride temiz kod üzerine deneyime dayalı görüşlerimi anlatmayı planlıyorum. Her yazı, temiz kod şemsiyesi altındaki tek bir yaklaşımı ele alacak. Resmi daha net çizmek için uygulanabilir, pratik öneriler ve karşı örnekler olacak. Serinin adı da buradan geliyor: Pratik Temiz Kod.
Ele alınan konuyla ilgili hikâyelerimi, özellikle de acı verici olanları paylaşacağım. Okuyucuyu aşırı teknik ayrıntılarla ve pratik olmayan tartışmalarla sıkmamak için hikâye anlatır bir üslup tutturmaya çalışacağım.
Gösterim amacıyla Java/Kotlin kullanmayı planlasam da seri büyük ölçüde dilden ve deneyim seviyesinden bağımsız olacak. Dolayısıyla, özellikle C ailesinden bir dil kullanıyorsa, yeni başlayandan kıdemli geliştiriciye kadar her geliştirici bu seriden bir şeyler kazanmalı.
4. Gelecek Konular
Önemli olduğunu düşündüğüm ve sıkça yanlış yorumlandığını ya da gözden kaçırıldığını gözlemlediğim konuları ele almayı planlıyorum. İşlemeyi planladığım bazı konulardan bir ön izleme:
- Adlandırma
- Kod içi yorumlar
- Yalnızca assertEqual içeren testler
- Kalıtımdan kaçınmak
- Statik kod analizi kullanmak
- İyi birim testi
- İyi dokümantasyon
- static ve non-static
- final ve non-final
- private ve non-private
- İdeal sınıf alanı sayısı
- Daha iyi arayüzler
Bu liste tam değil; ileride konu ekleyip çıkarabilirim. Listeden ya da liste dışından belirli bir konuyu okumak isterseniz lütfen yorumlarda bana bildirin.
5. Sohbete Katılın: Düşünceleriniz Önemli
Serinin sonraki yazılarını ve diğer yazılarımı kaçırmamak için abone olun.
Konuyla ilgili yorumlarınızı ve düşüncelerinizi duymaya ihtiyacım var. Lütfen yorum yapın ve fikirlerinizi paylaşın. Bu seri hakkında ne düşünüyorsunuz? Sonraki yazılarda hangi konuları ele almamı istersiniz? Lütfen bana bildirin.
Beni burada listelenen diğer platformlarda da takip edebilirsiniz: Hakkımda
6. Sonuç
Pratik temiz kod, bir geliştiricinin beceri setinde bulunması gereken bir zihniyet ve beceridir. Bilinçli öğrenme ve pratikle geliştirilebilir. Haydi birlikte keşfedelim!