Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan Solid programlama prensipleri hakkında kapsamlı bir eğitim serisinin ilk bölümüdür. Eğitmen, beş video içinde Solid programlamayı anlatmayı planladığını belirtmektedir.
- Video, Solid programlamanın beş temel prensibini (Single Responsibility Principle, Open-Closed Principle, Liskov Substitution Principle, Interface Segregation Principle, Dependency Inversion Principle) detaylı olarak ele almaktadır. Her prensip için soyut kavramlar açıklanmakta, örnekler verilmekte ve bu prensiplerin neden önemli olduğu, nasıl uygulanacağı ve ihlal edildiğinde ortaya çıkabilecek sorunlar anlatılmaktadır.
- Videoda özellikle Liskov Substitution Principle kapsamında inveriant, precondition ve postcondition kavramları, dependency injection'in çalışma prensibi ve unit testing için nasıl kullanılabileceği gibi konular detaylı olarak işlenmektedir. Eğitmen, ilerleyen videolarda daha somut örnekler sunulacağını belirtmektedir.
- 00:01SOLID Programlama Serisi Tanıtımı
- Bu video serisi, SOLID programlama prensiplerini anlatmayı amaçlamaktadır.
- İlk video soyut kavramlar üzerine olacak, kod örnekleri gösterilmeyecek, toplam beş video içinden oluşacak.
- Sonraki videolarda daha somut örneklerle SOLID programlama anlatılacaktır.
- 00:25SOLID Programlama Prensiplerinin Amacı
- SOLID prensiplerinin amacı, bakımı ve anlaşılması kolay kod yazmaktır.
- İyi tasarlanmış kod, ileride tekrar okunması, hataların düzeltilmesi ve yeni özelliklerin eklenmesi için daha kolaydır.
- SOLID programlama, programcıların tecrübelerinden ortaya çıkan prensiplerdir ve her durumda kullanılmaları gerekmez.
- 01:31SOLID Prensiplerinin Kullanım Alanları
- SOLID prensiplerinin nerede ve nasıl kullanılması gerektiği bilinmesi gerekir.
- Prototip aşamasında SOLID programlamayı kullanmak zaman ve para kaybına neden olabilir çünkü prototip sürekli değişebilir.
- Prototip aşaması geçildikten sonra ne kadar erken SOLID prensiplerini takip edilirse, ileride o kadar rahat edilecektir.
- 02:45SOLID Prensiplerinin Açıklaması
- SOLID, beş prensipten oluşur ve prensiplerin ilk harflerinin birleşiminden gelir.
- Prensipler: Tek Sorumluluk Prensibi, Açık-Kapalı Prensibi, Değiştirme Prensibi, Arayüz Ayrımı Prensibi ve Bağımlılık Tersine Dönüşüm Prensibidir.
- Programlama ile ilgili bilgi edinmek için İngilizce bilmenin önemli bir avantajı vardır çünkü kaynaklar genellikle İngilizce'dir.
- 04:38Tek Sorumluluk Prensibi
- Tek Sorumluluk Prensibi, bir komponentin sadece bir amaç için değiştirilebilir olması gerektiğini belirtir.
- Komponent, sınıf, fonksiyon, assembly, library veya dosya olabilir ve hangi soyutlama seviyesinden bakıldığa bağlıdır.
- Bir sınıfın birden fazla amaca hizmet etmesi yerine, küçük ve tek amaca hizmet eden komponentler tasarlanmalıdır.
- 07:12Tek Sorumluluk Prensibinin Faydaları
- Tek amaca hizmet eden komponentler tasarlanması, kodun yeniden kullanılabilirliğini artırır.
- Ayrı sınıflar kullanıldığında, değişiklikler sadece ilgili sınıfa uygulanabilir ve bir merkezden yönetilebilir.
- Tek sorumluluk prensibi, kodun okunmasını ve bakımını kolaylaştırır.
- 08:51Açık-Kapalı Prensibi
- Açık-Kapalı Prensibi, bir komponentin değişime kapalı ama gelişime açık olması gerektiğini belirtir.
- Sınıfların değiştirilmesi, ona bağımlı diğer kodları bozabilir ve test sürecini tekrar başlatmak zorunda kalabilirsiniz.
- Bu prensip, kodun geriye uyumluluğunu (backwards compatibility) korumayı amaçlar.
- 11:00Open-Close Prensibi
- Open-Close Prensibi, kodunuzun çalışmasını bozmadan yeni bir ekleme yapmanıza olanak sağlar.
- Kalıtım kullanarak yeni bir sınıf oluşturarak, mevcut sınıfın metotlarını değiştirmeden yeni davranışlar ekleyebilirsiniz.
- Bu prensip uygulanması zordur çünkü geleceğinizi öngörmek ve hangi metotların override edilebilir şekilde yazılacağına karar vermek gerekir.
- 13:50Liskov Substitution Prensibi
- Liskov Substitution Prensibi, bir sınıfın kalıtım aldığı sınıfın yerine kullanılabilmesi gerektiğini belirtir.
- Sınıflarda invariance (değişmeyen değerler), preconditions (metodun çalışması için gerekli koşullar) ve postconditions (metodun çalışmasının sonucunda beklenen koşullar) vardır.
- Kalıtım alınan sınıfta invariance'lar değiştirilemez, postconditions zayıflatılamaz ve preconditions'a yeni koşullar eklenebilir.
- 21:29Interface Segregation Prensibi
- Interface Segregation Prensibi, kodların ihtiyaçlarından fazlasına ulaşmasını engellemeyi amaçlar.
- Büyük sınıfları küçük interfacelerle bölerek, kullanıcıların sadece ihtiyaçları olan metodları görmesini sağlar.
- Bu prensip sayesinde kodlar daha okunabilir, bakımı daha kolay ve yeni sınıflar oluşturulurken sadece gerekli metodları implement etmek yeterlidir.
- 23:28Dependency Injection ve Inversion Prensibi
- Dependency Injection sadece bir teknik değil, aynı zamanda bir prensip ve mantık içerir.
- Inversion prensibi, bağımlı olunan komponentlerin oluşturulması yerine istenilmesi şeklinde çalışan bir prensiptir.
- Dependency Injection'da bir sınıfa başka bir sınıfı new ile oluşturmuyor, aksine "bu sınıfa ihtiyacım var, bana bunu biri versin" şeklinde istenmesi sağlanır.
- 24:32Dependency Injection'in Avantajları
- Dependency Injection, modülleri değiştirmenin kolaylığını sağlar; istenilen zaman başka bir implementasyon kullanılabilir.
- Merkezi bir sistemden tüm sınıfların hangi implementasyonun kullanılacağını yönetmek mümkün hale gelir.
- Unit testing için yardımcı olur çünkü interface kullanılarak test amaçlı farklı implementasyonlar kolayca eklenebilir.
- 26:00Test Meselesi
- Unit testing sırasında veritabanına bağlanmak istenmediğinde, test için özel bir sınıf oluşturulabilir.
- Test sınıfında interface implemente edilir ve veritabanına gitmek yerine hard kod test verisi döndürülür.
- Bu video daha basit bir şekilde anlatıldığı için detaylar verilmemiş, ilerleyen videolarda daha somut örnekler paylaşılacaktır.