Skip to content

Latest commit

 

History

History
104 lines (81 loc) · 7.03 KB

CHANGELOG.md

File metadata and controls

104 lines (81 loc) · 7.03 KB

📜 Değişim Günlüğü (CHANGELOG)

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.


[v2.0.0] - 2026-08-22

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.

Düzeltilen hatalar

  • 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_empty yerine is_empty == False önermek çifte olumsuzluk ve == False gü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.9 hâlâ "neden 0.9?" sorusunu açık bırakıyordu. %10 indirim artık DEFAULT_DISCOUNT_RATE = Decimal("0.10") ve price * (1 - rate).
  • Invoice.calculate_tax içindeki çıplak 0.18 hem sihirdi hem oranı nesneye bağlamıyordu. vat_rate alanı + Decimal + varsayılan sabit.
  • DRY anti-örneği create_entity anlamı siliyordu (User ve Admin aynı kavram değildir). Paylaşılan teknik adım dar yardımcıya alındı; alan adları korundu.
  • get_user(id) yerleşik id'yi gölgeliyordu → user_id.
  • Kalıtım örneğindeki pass'li Animal.speak sözleşme zorlamıyordu → ABC + abstractmethod; protokol alternatifi eklendi.
  • Global sayaç için "sınıf kullanın" deyip örnek verilmiyordu → Counter dataclass'ı.
  • Çıplak except: ile except Exception: ayrımı netleştirildi (KeyboardInterrupt / SystemExit).
  • Test bölümü yalnızca add / is_even assert'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ı print iki kez) DRY örneği olarak zayıftı; bilgi tekrarı / metin tekrarı ayrımı yazıldı.

Yeniden yazılan bölümler

  • 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, suppress ile 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); @property yalanı.
  • 13. Modülerlik: src dü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.

Eklenen bölümler

  • 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 / basicConfig yasağı.
  • 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.run sı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.

Kaldırılan / birleştirilen

  • 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.

Meta

  • Sürüm rozeti ve tarih: v2.0.0 / 22 Ağustos 2026.
  • CONTRIBUTING.md yeni bölüm sözleşmesi, örnek biçimi ve dil kurallarıyla yenilendi.

[v1.2.0] - 2025-06-09

Eklendi

    1. 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

[v1.1.0] - 2025-05-11

Eklendi

    1. başlık: Sihirli Sayılardan (Magic Numbers) Kaçının
    1. 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.md bağlantısı entegre edildi

[v1.0.0] - 2025-05-06

İlk Yayın

  • 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.