SOLID Prensipleri

Herkese merhaba, C# yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda SOLID prensiplerinden bahsedeceğim. Hadi başlayalım !
Table of Contents
Aslında SOLID prensipleri C# diline özgü birşey değil. Spagetti koddan kaçıp daha temiz kod yazmak, herkesin uygulayabileceği genel bir kod yazma standardı oluşturmak için oluşturulmuş prensiplerdir. Ben C# kategorisi altında yazdım fakat nesne tabanlı programlama yapılabilen tüm dillerde aynı şeyler yapılabilmektedir. Zaten bu yazıda kod örneği paylaşmayacağım, daha çok her bir prensibi ayrı ayrı açıklayıp teorisini anlatacağım. Farklı yazılarda hem bu prensipleri, hemde diğer tasarım desenlerini zamanla anlatacağım inşallah.
Yazılım geliştirme süreci, son yıllarda hızla değişen ve gelişen bir alan haline geldi. Geliştirilen yazılımların kalitesi, okunabilirliği, sürdürülebilirliği ve test edilebilirliği gibi konular, yazılım geliştiricilerinin üzerinde durdukları önemli konulardan biridir. SOLID prensipleri, yazılım geliştirme sürecinde bu konulara odaklanarak, kodun daha kaliteli, daha anlaşılır ve daha sürdürülebilir hale gelmesini sağlar. Bu makalede, SOLID prensipleri hakkında daha detaylı bilgi vereceğiz.
SOLID Prensipleri Nedir?
SOLID prensipleri, yazılım geliştirme sürecinde kodun kalitesini artırmak, daha anlaşılır ve sürdürülebilir hale getirmek için kullanılan bir dizi prensiptir. SOLID, Robert C. Martin tarafından önerilmiştir ve ilk harf, her bir prensibi temsil eden bir kelimenin baş harfi ile eşleşmektedir.
- Single Responsibility Principle (Tek Sorumluluk Prensibi)
- Open/Closed Principle (Açık/Kapalı İlkesi)
- Liskov Substitution Principle (Liskov Yerine Geçme Prensibi)
- Interface Segregation Principle (Arayüz Ayrımı Prensibi)
- Dependency Inversion Principle (Bağımlılık Tersine Çevirme Prensibi)
Bu prensiplerin uygulanması, yazılım geliştirme sürecinde kodun daha kaliteli, daha anlaşılır ve daha sürdürülebilir hale gelmesini sağlar. Ayrıca, SOLID prensipleri, yazılım geliştiricilerinin daha az hata yapmalarını ve kodun bakımını daha kolay hale getirmelerini sağlar.
Tek Sorumluluk Prensibi
Tek Sorumluluk Prensibi, her bir sınıfın sadece bir sorumluluğu olması gerektiğini belirtir. Bu prensip, bir sınıfın sadece bir işlevi yerine getirmesi gerektiği anlamına gelir. Böylece, sınıfların daha okunaklı, daha sürdürülebilir ve daha kolay test edilebilir olması sağlanır.
Örneğin, bir müşteri hesap yönetimi uygulaması yazdığınızı düşünelim. Bu uygulama, müşterilerin hesap bilgilerini yönetmek, ödemeleri takip etmek, fatura bilgilerini oluşturmak, müşterilerin geçmiş siparişlerini görüntülemek ve benzeri işlevleri yerine getirmek için birden fazla sınıf kullanmanız gerekebilir. Örneğin, bir “Müşteri” sınıfı, bir “Hesap” sınıfı, bir “Fatura” sınıfı ve bir “Sipariş” sınıfı gibi.
Bu prensip uygulanmazsa, bir sınıfın çok fazla sorumluluğu olabilir ve bu durumda kodun bakımı zorlaşabilir. Örneğin, bir “Müşteri” sınıfı, hem müşteri hesap bilgilerini yönetmek hem de ödeme takibini yapmak gibi çok farklı sorumluluklar üstlenebilir. Bu durumda, kodun okunabilirliği ve sürdürülebilirliği azalır ve hataların bulunması ve düzeltilmesi daha zor hale gelir.
Açık/Kapalı İlkesi
Açık/Kapalı İlkesi, yazılım geliştiricilerinin kodlarını değiştirmeden, var olan kodu genişletebilmelerini sağlar. Bu prensip, bir sınıfın veya fonksiyonun değiştirilmeden, yeni işlevlerin eklenmesine olanak tanır.
Örneğin, bir müşteri hesap yönetimi uygulamasında, ödeme yöntemleri için bir sınıf kullanırsınız. Bu sınıf, ödeme işlemi için gereken fonksiyonları içerir. Eğer yeni bir ödeme yöntemi eklemek isterseniz, bu ilkeyi kullanarak, mevcut kodu değiştirmeden yeni bir sınıf ekleyebilirsiniz. Bu prensibin uygulanması, yazılım geliştiricilerinin kodu daha az değiştirerek yeni işlevler eklemelerine olanak tanır ve böylece, kodun daha sürdürülebilir hale gelmesini sağlar.
Liskov Yerine Geçme Prensibi
Liskov Yerine Geçme Prensibi, alt sınıfların, üst sınıfların yerine geçebilmesini sağlar. Bu prensip, alt sınıfların, üst sınıfların yerine geçtiğinde aynı şekilde davranması gerektiğini belirtir. Bu prensibin uygulanması, yazılım geliştiricilerinin, alt sınıfların, üst sınıfların yerine geçtiğinde beklenen işlevleri yerine getirdiğinden emin olmalarını sağlar. Bu sayede, yazılım geliştiricileri, kodun daha güvenilir ve daha az hata ile çalışmasını sağlayabilirler.
Arayüz Ayrımı Prensibi
Arayüz Ayrımı Prensibi, bir sınıfın, ihtiyacı olan arayüzleri kendi içinde tanımlamasını belirtir. Bu prensip, bir sınıfın sadece kendi ihtiyacı olan arayüzleri kullanması ve diğerlerini ihmal etmesi gerektir. Bu prensibin uygulanması, kodun daha modüler hale gelmesini sağlar ve bir sınıfın diğer sınıflarla daha az bağlantılı olmasını sağlar. Böylece, yazılım geliştiricileri, kodun daha sürdürülebilir ve daha az hata ile çalışmasını sağlayabilirler.
Bağımlılık Tersine Çevirme Prensibi
Bağımlılık Tersine Çevirme Prensibi, alt seviye modüllerin, üst seviye modüllerle bağımlılıklarının tersine çevrilmesini belirtir. Bu prensip, yazılım geliştiricilerinin, alt seviye modüllerin, üst seviye modüllerin isteklerine uygun olacak şekilde tasarlanması gerektiğini belirtir. Bu prensibin uygulanması, yazılım geliştiricilerinin, kodun daha esnek hale gelmesini sağlar ve bir modülde yapılan değişikliklerin, diğer modüllerdeki kodu etkilemesini önler.
Sonuç
SOLID prensipleri, yazılım geliştiricilerin, kodlarını daha okunabilir, daha sürdürülebilir ve daha az hata ile çalışacak şekilde tasarlamalarına olanak tanır. Bu prensipler, yazılım geliştirme sürecinde, yazılım mühendislerinin, kodun daha iyi kaliteye sahip olmasını sağlamalarına yardımcı olur.
SOLID prensiplerinin uygulanması, yazılım geliştiricilerin, kodun daha modüler hale gelmesini sağlar ve bir sınıfın sorumluluklarının daha iyi tanımlanmasına olanak tanır. Bu sayede, yazılım geliştiricileri, kodun daha az hata ile çalışmasını sağlayarak, daha kaliteli yazılımlar geliştirebilirler.
SOLID prensipleri, her ne kadar bir yazılımın tasarım sürecinde kullanılsa da, yazılımın son kullanıcılarını da etkiler. Çünkü, SOLID prensiplerinin uygulanması, yazılımın daha az hata ile çalışmasını sağlayarak, son kullanıcıların yazılımdan daha fazla yararlanmalarını sağlar.
Sonuç olarak, SOLID prensipleri, yazılım geliştiricilerin, kodlarını daha iyi bir şekilde tasarlamalarına yardımcı olur ve yazılımın daha iyi kaliteye sahip olmasını sağlar. Bu nedenle, SOLID prensiplerinin, yazılım geliştirme sürecinde, her zaman göz önünde bulundurulması gerekmektedir.
Tüm C# yazılarımıza buraya, SOLID prensipleri yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.