Yazılım geliştirmenin temel prensipleri olarak kabul edilen solid prensipleri Robert C. Martin tarafından 2000 yılında öne sürülmüş ve Design Principles and Design Patterns adlı kitabında tanıtılmıştır. Prensiplerin kısaltılmasından oluşan isimlendirme fikri ise Michael Feathers'e aittir.SOLID Prensiplerinin amacı her yazılımcının bilmesi gerektiği düşünülen etkili, esnek, sürdürülebilir, yeniden kullanılabilir, anlaşılır, tekrarı önleyen kodlar yazılmasıdır.Bu prensiplerin kullanılması :
Uygulamalar büyürken ortaya çıkan kod karışıklığının önlenmesini,
Temiz kod yazımını,
Kodun bakımını ve kontrolünü,
Daha kolay okunmasını ve anlaşılırlığını,
Kodun esnek kullanımını,
Hata ayıklama sürecinin kısalmasını,
Değişiklik yapmadan yeni özellikler ekleyebilmeyi,
Gelişmelere uyum sağlayabilmesini,
Yeni sürümlere kolayca adapte olmasını sağlar.
İyi ve temiz bir kod yazabilmek için bu prensiplere uygun yazılım geliştirilmelidir. Bu prensiplerin daha detaylı açıklaması :
SİNGLE RESPOSİBİLİTY PRİNCİPLE - SRP (TEK BİR SORUMLULUĞA SAHİP OLMA)
Bir sınıfın veya modülün sadece bir tane sorumluluğu olmalıdır. Yani, sadece bir iş yapmalı ve bunu en iyi şekilde yapmalıdır. Herkesin kendi işini yapması, işin mümkün olduğunca basit şekilde tutulmasıdır. Yazılan kodların daha temiz ve anlaşılır olmasını sağladığı için sınıfın değişmek için bir sebebi olmalıdır. Değişiklik yapmak için birden fazla sebep varsa o yapı SRP ilkesine uymamaktadır.
Bu ilkeye göre sınıf/fonksiyonların var olan tüm özellikleri korumalı ve değişikliğe izin vermemelidir. Temel mantık herhangi bir geliştirmeye açık ancak değiştirilmeye kapalı olmasıdır. Bir geliştirme yapılacağı zaman önceki yetinin kaybedilmeden geliştirme yapılması gerekir. Sınıfa dokunmadan yeni işlevler eklemek için interfaces,abstract classes,get/set,private gibi kullanımlar prensibi yerine getirmeyi sağlar.
Sınıflar arasındaki ilişkinin düzenlenmesinden bahsedilen prensiptir. Bir programın beklenen davranışını bozmadan, üst sınıf nesnelerinin referanslarının alt sınıf nesneleriyle değiştirilebileceğini belirtir. Bir sınıf hiyerarşisinde, alt sınıfların, üst sınıfların yerine geçebilir olması gerekmektedir. Sınıf hiyerarşilerinin daha anlaşılır ve mantıklı olmasını sağlar. Ortaya çıkabilecek işlevsiz kodlardan dolayı türetilen sınıflar, türeyen sınıfların tüm özelliklerini kullanmak zorundadır. Uygulanması, kodun yeniden kullanılabilirliğini ve bakımını kolaylaştırır. Bu prensip, yazılım tasarımında esneklik ve genişletilebilirlik sağlayarak, gelecekteki değişikliklere ve genişlemelere uyum sağlamayı kolaylaştırır.
Robert C. Martin tarafından “Müşterilerin kullanmadıkları arayüzlerle ilgili bağımlı olmamaları gerektiği” şeklinde tanımlanmıştır. Tasarım prensiplerinin bir parçasıdır ve sağlam, bakımı kolay yazılımlar oluşturmayı amaçlar. Sorumlulukların hepsini tek bir arayüzde toplamak yerine özelleştirilmiş daha fazla arayüz oluşturmak gerekmektedir. Her bir arayüzün belirli bir görevi olmalıdır. Kullanılmayan arayüzlerin uygulamayı zorlamaması gerekir.
Üst seviye class'larla alt seviye class'ların bağımlı olmamasının, olanların da olabildiğince az olmasının istendiği prensiptir. Bu ilke, yazılımın esnekliğini ve sürdürülebilirliğini artırmak için tasarlanmıştır. Temel amacı değişikliklere karşı yazılımın daha dayanıklı olmasını sağlamaktır.Robert C. Martin bu prensibi 2 maddeyle şöyle açıklamaktadır;
Üst seviye (High-Level) sınıflar alt seviye (Low-Level) sınıflara bağlı olmamalıdır, ilişki abstraction veya interface kullanarak sağlanmalıdır,
Abstraction detaylara bağlı olmamalıdır. Tam tersi detaylar soyutlamaya bağlı olmalıdır.
Bu maddelerin uygulanmasıyla üst seviye sınıfın alt seviye sınıftaki değişikliklerden etkilenmesi önlenir ve yazılımın bakımını daha kolay hale gelir. Yazılımın genişletilebilirliğini ve test edilebilirliğini arttırır.
Sonuç olarak, SOLID prensipleri, yazılım geliştirme sürecinde karşılaşılan birçok sorunu çözmeye yardımcı olur. Bu prensipler, kodun daha anlaşılır, esnek ve bakımı kolay olmasını sağlar. Ayrıca, bu prensipler sayesinde kodun yeniden kullanılabilirliği artar ve hata ayıklama süreci kısalır. Bu nedenle, her yazılım geliştiricinin SOLID prensiplerini öğrenmesi ve bu prensiplere uygun kod yazmayı bir alışkanlık haline getirmesi önemlidir. Bu prensipler, yazılım geliştirme sürecini daha verimli, etkili ve keyifli hale getirecektir.
Yazılım, Internet, Kodlama ve Konseptleri
Yazılım Mühendisliği 101
Yorumlar
Kullanıcı yorumlarını görüntüleyebilmek için kayıt olmalısınız!