Klasik Nesneye Yönelimli Tasarımda (Object Oriented Design) 3 tane önemli ilke var. Bunlar
Encapsulation, Inheritance, Polymorphism (virtual methods)
Nesneye Yönelik Tasarımın bence en büyük etkisi daha karmaşık problemleri çözmek için soyutlama katmanları getirmesi olmuştur. Yani complexity, abstraction ile çözülmeye başlandı
Her şeyi parametre alan ve hiyerarşik sınıflar şeklinde tasarlamak belki mümkün. Ancak bu işe ne zaman kalkışmak lazım. Açıklaması şöyle. Buna The Rule of Three'de deniliyor. Yani aynı şeyi üçüncü kere yapıyorsak veya değiştiriyorsak bu kodu soyutlamak gerekir.
Encapsulation, Inheritance, Polymorphism (virtual methods)
Nesneye Yönelik Tasarımın bence en büyük etkisi daha karmaşık problemleri çözmek için soyutlama katmanları getirmesi olmuştur. Yani complexity, abstraction ile çözülmeye başlandı
If you look at the end of the "Lecture 3a: Henderson Escher Example" of SICP, Hal Abelson proposes that complexity is managed not by breaking the task into smaller subtasks, but by creating layers of abstraction. At the highest level, you express the solution to the complicated problem in terms of the the solution to the lower level of abstraction.Ne Zaman Soyutlama Seviyesi Artırılır
Her şeyi parametre alan ve hiyerarşik sınıflar şeklinde tasarlamak belki mümkün. Ancak bu işe ne zaman kalkışmak lazım. Açıklaması şöyle. Buna The Rule of Three'de deniliyor. Yani aynı şeyi üçüncü kere yapıyorsak veya değiştiriyorsak bu kodu soyutlamak gerekir.
In other words, when a certain algorithm/pattern is being used for a third time, it should be abstracted so that it is reusable (= usable many times).SOLID Niye Lazım
Çünkü yazılımlar değişmeye devam etmek zorundalar. Lehman Kanunu şöyle söyler
Now, in disciplined development, we use principles such as SOLID to attempt to reduce this problem. However, we are continually fighting Lehman's laws of two summarized general concerns:1. systems need to continually add new functionality to stay relevant2. new functionality increases complexity reducing ability to change the system
SOLID
SOLID nesneye yönelik tasarımdan çok sonraları, yani 2000'li yıllarda ortaya çıkan kurallar dizisi. Açıklaması şöyle
SOLID nesneye yönelik tasarımdan çok sonraları, yani 2000'li yıllarda ortaya çıkan kurallar dizisi. Açıklaması şöyle
The SOLID principles were first conceptualized by Robert C. Martin in his 2000 paper, Design Principles and Design Patterns. These concepts were later built upon by Michael Feathers, who introduced us to the SOLID acronym.
SOLID prensibinde 5 tane kural var.
SOLID karmaşık problemleri çözmek için değildir. Kodlama seviyesindeki kurallardır.
Aslında Robert C. Martin yani Uncle Bob genellikle kodlama seviyesindeki şeylerle ilgili eserler vermiş. Clean Code kitabındaki bazı başlıklar şöyle
Mimari seviyedeki eseri ise şöyle
1. Single Responsibility Principle - Tek Sorumluluk Kuralı
Single Responsibility Principle yazısına taşıdım. Sınıfın Tek Bir Sorumluluk Olmalıdır
2. Open-Closed Kuralı
Open-Closed Kuralı yazısına taşıdım. Mevcut Kod Değiştirilmeden Kalıtım Yapılabilmelidir
3. Liskov Kuralı
Liskov Kuralı yazısına taşıdım. Kalıtım Varsa A ve B Yer Değiştirebilmelidir
4. Interface Segregation Kuralı
Interface Segregation Kuralı yazısına taşıdım. Küçük Arayüzler İyidir
5. Dependency Inversion Kuralı
Dependency Inversion Kuralı yazına taşıdım. Modüller Arasında Soyutlama Katmanı Olmalıdır