Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SOLID and STUPID Principles (Turkish)

SOLID and STUPID Principles (Turkish)

Ulugbek Miniyarov

February 15, 2017
Tweet

More Decks by Ulugbek Miniyarov

Other Decks in Programming

Transcript

  1. STUPID kod nedir? Singleton (Tek nesnelik) Tight Coupling (Sıkı bağlılık)

    Untestability (Test edilemezlik) Premature Optimization (Erken optimizasyon) Indescriptive Naming (Tanımı eksik isimlendirme) Duplication (Kopyalama)
  2. Singleton (Tek nesnelik) Global nesnelere bağlı olan programların testi zordur.

    Çünkü global değerlerin hangi durumlarda kullandığını gizlerler.
  3. Singleton anti-desen (anti-pattern) İkinci bir veri tabanı bağlantısı için aynı

    sınıfı kopyalamanız gerek veya DB::getSecondInstance() gibi gereksiz bir metot daha eklemeniz gerek. Veri tabanı nesnesine her yerden ulaşabilir kolaylığı gözükse de aslında bir global değer olmuş oluyor ve bunu kullanan kodun testi zor hale geliyor.
  4. Kapı ve pencereyi arayüzlerini (interface) çıkarttığınızda değiştirmeniz ve bu kodu

    test etmeniz çok daha kolay olur. Sıkı bağlılıktan da kurtulmuş olursunuz.
  5. Untestability Test edilebilirlik zor olmaması gerek. Çoğunlukla unit testi yazılmayan

    kodların sebebi zaman kısıtlı olduğundan dolayı olur ama sonucunda yazdığınız kod çirkinleşir ve bunu fark etmezsiniz.
  6. Premature Optimization Erken optimizasyon tüm kötülüklerin anasıdır Premature optimization is

    the root of all evil - Donald Knuth Hiçbir getirisi olmayabilir, sadece zaman harcamış olursunuz.
  7. Erken optimizasyon örnekleri • “ (çift tırnak) veya ‘ (tek

    tırnak) hızı • Regex’in yavaş çalışması ve bunun için yapılan mikro optimizasyonlar • Isset vs array_key_search hız testleri • [] veya array() hızları vs….
  8. PHP Örnekleri • Strpbrk fonksiyonu ◦ Belirtilen karakterleri bir dizge

    içinde arar ◦ Bulunan karakterle başlayan dizgeyi döndürür, aranan hiçbir karakter bulunamazsa FALSE döner. • Strcspn fonksiyonu ◦ Maske ile eşleşMEyen ilk parçanın uzunluğunu bulur ◦ Parça uzunluğunu bir tamsayı olarak döndürür.
  9. Duplication Yazdığınız kodu kopyalamayın. DRY (Don’t repeat yourself) prensibini benimseyin.

    KISS (Keep It Simple, Stupid): yazdığınız kod basit olsun, öz olsun.
  10. SOLID kod nedir? Single Responsibility Principle (Tek sorumluluk prensibi) Open/Closed

    Principle (Açık/Kapalı prensibi) Liskov Substitution Principle (Liskov değişebilirlik prensibi) Interface Segregation Principle (Arayüz ayrılabilirlik prensibi) Dependency Inversion Principle (Bağımlılık Tersleme prensibi)
  11. Single Responsibility Principle • Her sınıf sadece bir görevi üstlenmelidir

    • Sınıf içinde bir şey değişecekse birden fazla sebep için değiştirilmemeli
  12. Protip: • Büyük sınıfları ufak sınıflara bölün • Sınıfları katmanlara

    ayırın • Sınıflara açıklamalar yazın • Tek sınıflılığa, başkaniyete HAYIR :)
  13. Dependency Inversion Principle Üst sınıf modüller alt sınıf modüllere bağımlı

    olmamalıdır. İkisi de soyut nesnelere bağımlı olmalıdır. Soyut nesneler detaylara bağımlı olmamalıdır. Detaylar soyut nesnelere bağımlı olmalıdır.
  14. Sonuç Test edilebilir kod yazmak ve sıkı bağlılığın olmaması sağlam

    kod için anahtar prensiplerdir Diğer prensipler: • Kiss Principle (Keep it simple, stupid) • Yagni Principle (You aren’t gonna need it) • Dry Principle (Don’t repeat yourself)