SOLID program yazarken (ideal program) kullanmamız gereken bazı kuralların ya da tasarımların baş harflerinin kısaltmasıdır.5 adet standart kuralımız vardır.Bu arada tasarımın tanımını daha önceden yapmıştık ancak hatırlatmada fayda var.Tasarımla seneler boyunca bir çok programcının karşısına çıkan sorunların çözümlenmiş şekilde en ideal olarak sunulmuş halidir.Bizimde Amerikayı tekrardan keşfetmemize tabiki gerek yok.Üstadlarımızın tavsiyelerine , oluşturdukları prensiplere ve kurallara uyarak gayet düzgün programlar yazabiliriz ve bunları testable şekilde sunarız.Uzun lafın kısası konumuza geri dönüyorum.
Single Responsibility - Her kullanılan modülün tek bir işlevi olmalı ve olası bir değişiklikte tek bir nedene dayanmalıdır.
Open/Closed - Kodumuz geliştirmeye açık yeniden yapılanmaya kapalı olmalıdır.Refactoring ve ya metodun tekrardan yazılması gibi bir durum söz konusu olmamalıdır.
Liskov's Substitution - Türeyen sınıf üyeleri ile temel sınıfın üyelerinin aralarında değişimi mümkün olmalıdır.Bu aynı zamanda Design Patternlerden Design by Contract yapısıyla aynı işlevdedir.
Interface Segregation - Kullanıcan interfaceler mümkün oldukça birbirinden ayrı yazılmalıdır.Bir interface bir çok iş için kullanılabilir.Ancak gereksiz metod yüklemesine neden oluyor ise bu durumda birden fazla interface oluşturmak daha mantıklı olacaktır.
Dependency Inversion - High level classlar , low level classlara direkt olarak bağımlı olmamalıdır.Böyle bir durumda classlar arası düzenleme gerektiğinden birden fazla sorunla karşı karşıya kalınabilir.Arada bir abstract yada interface (duruma göre hangisi gerekiyorsa) kullanılmalıdır.
Single Responsibility - Her kullanılan modülün tek bir işlevi olmalı ve olası bir değişiklikte tek bir nedene dayanmalıdır.
Open/Closed - Kodumuz geliştirmeye açık yeniden yapılanmaya kapalı olmalıdır.Refactoring ve ya metodun tekrardan yazılması gibi bir durum söz konusu olmamalıdır.
Liskov's Substitution - Türeyen sınıf üyeleri ile temel sınıfın üyelerinin aralarında değişimi mümkün olmalıdır.Bu aynı zamanda Design Patternlerden Design by Contract yapısıyla aynı işlevdedir.
Interface Segregation - Kullanıcan interfaceler mümkün oldukça birbirinden ayrı yazılmalıdır.Bir interface bir çok iş için kullanılabilir.Ancak gereksiz metod yüklemesine neden oluyor ise bu durumda birden fazla interface oluşturmak daha mantıklı olacaktır.
Dependency Inversion - High level classlar , low level classlara direkt olarak bağımlı olmamalıdır.Böyle bir durumda classlar arası düzenleme gerektiğinden birden fazla sorunla karşı karşıya kalınabilir.Arada bir abstract yada interface (duruma göre hangisi gerekiyorsa) kullanılmalıdır.
Yorumlar
Yorum Gönder