Bu belge, python-clean-code-tr rehberindeki anlamlı değişiklikleri, eklemeleri ve düzeltmeleri kayıt altına alır. Biçim Keep a Changelog ve semantik sürüme yakındır: kırıcı kapsam veya felsefe değişikliği majör, yeni bölüm minör, düzeltme yama.
Kapsamlı yenileme. Rehber 13 kısa başlıktan, gerekçeli örnekler ve çapraz referanslar içeren 24 bölümlük bir metne genişledi. Hedef okur aynı: Python yazan herkes. Hedef derinlik değişti: "ne yapın" listesi değil, neden ve nerede durun.
- Bölüm başlığı Anlamli Degisken Isimleri → Türkçe karakterlerle İsimlendirme; kapsam değişkenle sınırlı olmaktan çıktı (fonksiyon, sınıf, modül, sabit, boolean, koleksiyon).
- Yanlış boolean öğüdü kaldırıldı.
is_not_emptyyerineis_empty == Falseönermek çifte olumsuzluk ve== Falsegürültüsü üretiyordu. Doğru yol: olumlu ad +if items:/if not items:/is None. - Sihirli sayı örneği düzeltildi.
DISCOUNT_RATE = 0.9hâlâ "neden 0.9?" sorusunu açık bırakıyordu. %10 indirim artıkDEFAULT_DISCOUNT_RATE = Decimal("0.10")veprice * (1 - rate). Invoice.calculate_taxiçindeki çıplak0.18hem sihirdi hem oranı nesneye bağlamıyordu.vat_ratealanı +Decimal+ varsayılan sabit.- DRY anti-örneği
create_entityanlamı siliyordu (UserveAdminaynı kavram değildir). Paylaşılan teknik adım dar yardımcıya alındı; alan adları korundu. get_user(id)yerleşikid'yi gölgeliyordu →user_id.- Kalıtım örneğindeki
pass'liAnimal.speaksözleşme zorlamıyordu →ABC+abstractmethod; protokol alternatifi eklendi. - Global sayaç için "sınıf kullanın" deyip örnek verilmiyordu →
Counterdataclass'ı. - Çıplak
except:ileexcept Exception:ayrımı netleştirildi (KeyboardInterrupt/SystemExit). - Test bölümü yalnızca
add/is_evenassert'leriyle bitiyordu; fixture,parametrize,tmp_path, sahte nesne ve kapsam nüansı eklendi. - Biçimlendirme bölümü Black / Flake8 / isort yığınında kalmıştı. 2026 varsayılanı Ruff + uv + pyproject.toml + pre-commit; eski yığın tarihsel not olarak duruyor.
- Python rozeti 3.8+ idi. 3.8 ve 3.9 kullanım ömrünü doldurdu → 3.10+ (
list[str],X | None,match,zip(..., strict=True)). - Kaynak listesi üç bağlantıdan ibaretti; kitap, PEP, araç ve resmi belgelerle genişletildi.
- Metin tekrarı (aynı
printiki kez) DRY örneği olarak zayıftı; bilgi tekrarı / metin tekrarı ayrımı yazıldı.
- 1. Giriş: teknik borç, izci kuralı, kırık pencere; Zen of Python'un 19 özdeyişinin tam metni + Türkçe karşılık tablosu (resmi metnin İngilizce olduğu notuyla).
- 3. Fonksiyonlar: orkestrasyonun da bir sorumluluk olduğu; parametre nesnesi; koruma cümlesi; tutarlı dönüş (
find_*/get_*); görünür yan etki; komut–sorgu ayrımı. - 5. DRY: KISS, YAGNI ve AHA ile birlikte; üç kuralı; acele soyutlama uyarısı.
- 6. Yorumlar: PEP 257 docstring, neyin yoruma ait olmadığı, TODO'nun sahipliği.
- 7. İstisna: EAFP / LBYL,
else/finally,raise ... from, özel hiyerarşi,suppressile bilinçli susturma. - 9. Sihirli değerler: sayılar + dizgiler +
Enum/StrEnum+ koleksiyon seçimi + değişebilir varsayılan tuzak. Eski 11. bölüm bunun içine alındı. - 10. Pythonic: listelenip örneksiz bırakılan
zip(strict=), walrus,any/all, üçlü ifade,pathlib, unpacking, yerleşikler ve aşırı zekâ uyarısı somutlandı.datetime/ UTC eklendi. - 12. OOP: eski 9 ve 12. bölümlerdeki örtüşme kalktı. SOLID'in beş maddesi Python örnekleriyle; kompozisyon varsayılan;
@dataclass(frozen=True, slots=True);@propertyyalanı. - 13. Modülerlik:
srcdüzeni, döngüsel import,import *, yapılandırma,pyproject.toml,if __name__ == "__main__"/ import yan etkisi. Django örneği duruyor, evrensel düzen yanına geldi. - 15. Test: AAA, isimlendirme, pytest pratikleri, neyin test edilmeyeceği, coverage nüansı.
- 16. Araçlar: modern yığın, örnek
pyproject.toml, CI ve pre-commit. - 17. Anti-pattern'ler: tanrı sınıf, ilkel takıntısı, boolean bayrak,
eval/pickle, feature envy, av tüfeği cerrahisi; zayıf "anlamsız fonksiyon" örneği gerekçelendirildi.
- Bu rehberi nasıl okumalısınız? — izleyici, sözleşme, ne olmadığı.
- 4. Kontrol Akışı ve Karmaşıklık — döngüsel karmaşıklık, erken çıkış,
match, sözlük tablosu,is None. - 8. Tip İpuçları — 3.10+ sözdizimi,
Protocol,TypedDict,Any, pyright / ty / mypy. - 11. Kaynak Yönetimi ve Context Manager —
with,@contextmanager,ExitStack,closing. - 14. Loglama — seviyeler, format dizgesi, PII, kütüphanede
print/basicConfigyasağı. - 18. Refactoring — güvenli sıra, Fowler dönüşümleri, extract örneği, koku → hareket.
- 19. Kod İncelemesi — sıra, yorum dili, yazar yükümlülüğü, LGTM anti-pattern'i.
- 20. Güvenlik Temelleri — sır, parametreli sorgu,
shell=True, yol, pickle/yaml/eval, kilit dosyası (saldırı tarifi yok). - 21. Asenkron Kodda Temizlik — bloklayan I/O, zaman aşımı, iptal,
gather,asyncio.runsınırı, paylaşılmış durum. - 22. Performans ve Okunabilirlik — ölç, sonra kes; bilinçli feragat.
- 23. Kontrol Listesi — PR öncesi işaret listesi.
- Sözlük — rehber boyunca kullanılan terimler.
- Ayrı "11. Sihirli Sayılar" ve "12. Modülerlik ve Sınıf" başlıkları; içerik 9, 12 ve 13'e dağıtıldı. Sınıf teması iki kez anlatılmıyor.
- "Ekstra Not" ile biten, tekrara düşen kapanış paragrafları. Her bölüm kendi sınırını ve sapmasını metnin içinde taşıyor.
- Sürüm rozeti ve tarih: v2.0.0 / 22 Ağustos 2026.
CONTRIBUTING.mdyeni bölüm sözleşmesi, örnek biçimi ve dil kurallarıyla yenilendi.
-
- başlık: Test Edilebilir Kod & Test Pratikleri
- Birim test ve pytest kullanımına kısa giriş
- Test edilebilir fonksiyon tasarımı ve örnek kodlar
- Testlerin kurulumu ve çalıştırılması için yönergeler
- İçindekiler tablosuna ilgili bağlantı eklendi
-
- başlık: Sihirli Sayılardan (Magic Numbers) Kaçının
-
- başlık: Modülerlik ve Sınıf Yapıları (Modularity and Classes)
- README.md dosyasına versiyon bilgisi ve son güncelleme tarihi eklendi
CHANGELOG.mdbağlantısı entegre edildi
- Temel rehber yapısı oluşturuldu
- 10 ana başlık eklendi:
- Anlamlı Değişkenler
- Fonksiyonlar ve Sorumluluk
- DRY Prensibi
- Yorumlar
- Hata Yönetimi
- Kod Biçimlendirme
- Kötü Pratikler
- OOP Prensipleri
- Pythonic Kod Yazımı vb.