Temiz Kod (Clean Code) Yazma Nasıl Öğrenilir? İlkeler, Örnekler, Öğrenme Yolu
Beceri rehberi

Temiz Kod (Clean Code) Yazma Nasıl Öğrenilir? İlkeler, Örnekler, Öğrenme Yolu

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 4 dk okuma

Temiz kod ilkeleri: isimlendirme, küçük fonksiyonlar, hata yönetimi, refactoring ve kod incelemesiyle okunabilir, sürdürülebilir yazılım geliştirme yolu.

Temiz kod nedir?

Temiz kod, yalnızca çalışan değil, başka bir geliştirici tarafından kolayca okunabilen, anlaşılabilen ve değiştirilebilen koddur. Temel varsayım şudur: kod, yazıldığından çok daha sık okunur. Bir hatayı ararken, yeni bir özellik eklerken ya da koda yeni katılan biri ilk kez bakarken, okunabilirlik doğrudan zaman ve hata maliyetine dönüşür.

Temiz kod süslü kod değildir. Amaç zekice çözümler değil, sade ve niyeti belli çözümlerdir. Bir fonksiyonu okuyan kişi ne yaptığını yorum satırlarına bakmadan anlayabiliyorsa, kod amacına ulaşmıştır.

Temiz kodun temel ilkeleri

  • Anlamlı isimlendirme: Değişken, fonksiyon ve sınıf adları niyeti anlatmalıdır. "d" yerine "siparisTeslimTarihi" gibi.
  • Küçük ve tek amaçlı fonksiyonlar: Bir fonksiyon tek bir işi yapmalı, adı o işi tam olarak söylemelidir.
  • Tutarlı düzen: Girinti, boşluk ve dosya düzeni ekip genelinde aynı olmalıdır; otomatik biçimlendirme araçları bu işi kolaylaştırır.
  • Tekrarın azaltılması: Aynı mantığın birkaç yerde kopyalanması, değişiklik geldiğinde bir yerin unutulması riskini doğurur.
  • Açıklayıcı hata yönetimi: Hatalar sessizce yutulmaz, anlamlı mesajlarla ve uygun noktada ele alınır.
  • Yorum satırlarını sınırlı kullanmak: Yorum, kodun "neden" böyle yazıldığını anlatır; "ne" yaptığını anlatmak için kodun kendisi yeterince açık olmalıdır.

Bu ilkeler birbirini destekler. Anlamlı isim, küçük fonksiyonun gerekçesini açıklar; küçük fonksiyon tekrarı azaltmayı kolaylaştırır; tekrarın azalması da hata yönetimini tek noktada toplamaya imkân verir. Tek bir ilkeyi kusursuz uygulayıp diğerlerini ihmal etmek genellikle beklenen okunabilirliği getirmez.

Bir örnekle önce ve sonra

Örneğin bir sipariş indirimi hesaplayan şu fonksiyonu düşünün: adı "hesapla", parametreleri "a", "b" ve "c", içinde birbirine geçmiş üç ayrı koşul zinciri var. Okuyan kişi neyin neyle çarpıldığını anlamak için fonksiyonun tamamını zihninde çalıştırmak zorunda kalır.

Aynı mantık şöyle düzenlenebilir: fonksiyonun adı "siparisIndirimiHesapla" olur, parametreler "siparisToplami", "segment" ve "kuponKodu" diye adlandırılır; her koşul zinciri ayrı bir küçük fonksiyona taşınır ("segmentIndirimi", "kuponIndirimi"), ana fonksiyon yalnızca bunları birleştirir. Davranış aynı kalır, ama okuyan kişi yapıyı bir bakışta kavrar ve bir kural değiştiğinde yalnızca ilgili küçük fonksiyona dokunur.

Refactoring ile mevcut kodu nasıl iyileştirirsiniz?

Refactoring, davranışı değiştirmeden kodun iç yapısını iyileştirmektir. Güvenli yapmanın ön koşulu, mevcut davranışı doğrulayan testlerin bulunmasıdır; testler olmadan yapılan yeniden düzenleme, farkında olmadan hata eklemenin yaygın yoludur.

Pratik yaklaşım küçük adımlarla ilerlemektir: bir ismi düzeltmek, uzun bir fonksiyonu parçalamak, tekrar eden bloğu ortak bir fonksiyona taşımak ve her adımdan sonra testleri çalıştırmak. Böyle ilerleyince bir adım hata verdiğinde nedenini bulmak kolaydır. Takım içinde "izcinin kuralı" gibi bir alışkanlık da işe yarar: bir dosyaya dokunduğunuzda onu bulduğunuzdan biraz daha temiz bırakmak.

Refactoring'e başlamadan önce kodun hangi bölgesinin sorun çıkardığını bulmak gerekir. Sık değişen, sık hata çıkaran ve yeni gelenlerin çekindiği dosyalar öncelikli adaylardır; nadiren dokunulan çalışan bir bölgeyi güzelleştirmek çoğunlukla yatırımın karşılığını vermez. Her refactoring adımı ayrı bir küçük değişiklik olarak kaydedilirse, incelemeyi yapan kişi davranış değişmediğini kolayca görür.

Kod incelemesi ve takım pratiği

Temiz kod bireysel bir beceri olmaktan çok takım disiplinidir. Kod incelemesi (code review) bu disiplinin en etkili araçlarından biridir: yazan kişi göremediği belirsizlikleri, okuyan kişinin sorularından fark eder.

İyi bir incelemede yorumlar kişiyi değil kodu hedef alır, "neden" sorusu açıklamayla birlikte sorulur ve tartışma tekrarlanan konularda ekip standardına bağlanır. Biçimlendirme gibi mekanik konuları araçlara bırakmak, insan incelemesini tasarım, isimlendirme ve mantık hatalarına odaklar.

Öğrenme yolu ve sık hatalar

Başlangıçta isimlendirme ve küçük fonksiyonlar üzerinde çalışmak en hızlı gelişimi sağlar. Ardından hata yönetimi ve modüler yapı gelir; ileri aşamada refactoring, performans ve tasarım ilkeleri üzerinde derinleşilir. Kendi eski kodunuzu birkaç ay sonra okumak, iyi bir geri bildirim kaynağıdır.

Sık yapılan hatalar: • Kuralları amaç sanmak ve her yere uygulamaya çalışmak; ilkeler bağlama göre uygulanır. • Erken soyutlama: henüz ihtiyaç doğmadan karmaşık yapı kurmak. • Test olmadan büyük çaplı yeniden düzenleme yapmak. • Yorum satırıyla kötü kodu açıklamaya çalışmak yerine kodu iyileştirmemek.

Geliştirilecek alanları görmek için bilinen kod kokularını kontrol listesi olarak kullanabilirsiniz: çok uzun fonksiyonlar, uzun parametre listeleri, birbirine çok bağlı sınıflar, anlamı belirsiz sihirli değerler, ve her biri bir öncekinin kopyası gibi duran koşul bloklarıdır. Bir kokuyu fark ettiğinizde hemen büyük bir düzenlemeye girişmek yerine, onu bir sonraki değişiklikte küçük bir adımla gidermek daha sürdürülebilirdir.

Hata yönetiminde de somut bir alıştırma yapılabilir: bir fonksiyondaki sessizce yutulan hataları bulup her birine ya anlamlı bir mesaj ya da çağıran koda ulaşan açık bir hata verin. Böylece hatanın nerede ve neden oluştuğu, üretimde değil geliştirme sırasında görünür olur.

Bu beceriyi Mindset programlarında nerede çalışırsınız?

"Clean Coding Uzmanlığı Eğitimi: Yazılımda Kalite, Okunabilirlik ve Verimlilik" programının modülleri genel bilgi, clean coding temelleri, fonksiyonel ve modüler kod yazımı, isimlendirme ve kod düzeni, hata yönetimi ve istisna işleme, refactoring ve performans optimizasyonu ile uygulamalı proje ve kod incelemesidir.

İlgili Mindset programı

Clean Coding Uzmanlığı Eğitimi: Yazılımda Kalite, Okunabilirlik ve Verimlilik

Sık sorulanlar

Sık sorulan sorular

Temiz kod yazmayı öğrenmek için hangi dil gerekir?

Belirli bir dil gerekmez. Anlamlı isimlendirme, küçük fonksiyonlar, tekrarın azaltılması ve hata yönetimi gibi ilkeler farklı programlama dillerinde geçerlidir. Dilin kendi geleneklerini ve biçimlendirme standartlarını öğrenmek ise ilkeleri o dile uygulamayı kolaylaştırır.

Clean code ile refactoring aynı şey midir?

Aynı değildir. Clean code, hedeflenen kod kalitesini ve ilkeleri anlatır. Refactoring ise mevcut kodu davranışını değiştirmeden bu hedefe yaklaştırmak için yapılan düzenleme faaliyetidir. Temiz kod yazmak refactoring ihtiyacını azaltır, refactoring ise eski kodu iyileştirir.

Yorum satırı yazmak temiz kodun neresinde durur?

Yorum, kodun neden öyle yazıldığını, bir kısıtı ya da bir kararın gerekçesini anlatmak için faydalıdır. Kodun ne yaptığını anlatmak için yorum gerekiyorsa isimlendirme ya da yapı iyileştirilmelidir. Güncel tutulmayan yorum, hiç yorum olmamasından daha yanıltıcıdır.

Temiz kod proje hızını yavaşlatır mı?

Kısa vadede ilk yazım biraz daha özen gerektirebilir. Ancak okunabilir kod, hata ayıklama ve yeni özellik ekleme süresini kısaltır, ekibe yeni katılanların uyumunu kolaylaştırır. Bu yüzden maliyet ilk yazımda değil, daha sonra kodu değiştirirken ortaya çıkar.

Temiz Kod (Clean Code) Yazmayı Nasıl Öğrenirsiniz