Bu yazımızda SOLID prensiplerinden ilki olan Single Respoinsibility Principle(Tek Sorumluluk İlkesi) üzerinde duracağız. Daha önceki yazılarımdan birinde bu prensibi giriş seviyesinde inceleme şansı bulmuştuk. Bu yazıda biraz daha farklı bir yöntemle prensibe yaklaşmak istedim. Bir örnek kod üzerinde yapılmış ihlalleri ortaya koyup, bu soruna SRP ile çözüm bularak ilerlemeye çalışacağız.
public class StringCalculator { public int Add(string number) { if (number.Length==0) { return 0; } return int.Parse(number); } }
Bu sınıfa ait Add() metoduna baktığımızda metodun, Single Responsibility Principle bakımından bazı problemleri olduğu görüyoruz. Bu metodun çok fazla bilgiye sahip olduğu ortada. Metodun sahip olduğu bilgiler:
- Ne zaman “0” döndüreceğini biliyor.
- Döndürülecek default değerin “0” olduğunu biliyor.
- Sayıların dönüştürme(parse) detaylarını biliyor.
public class StringCalculator { private const int DefaultValue = 0; public int Add(string number) { if (isNumberEmpty(number)) { return DefaultValue; } return parseSingleNumber(number); } private static bool isNumberEmpty(string number) { return number.Length == 0; } private static int parseSingleNumber(string number) { return int.Parse(number); } }
Add() metodunun bilmemesi gereken durumları metodun dışına çıkardık. DefaultValue değeri değişeceği zaman veya number parametresinin boş(empty) olduğu durum kontrolünün değişeceği zaman sadece ilgili private metoda bakmamız yeterli olacaktır.
Bu durumda Add() metodunun, sadece algoritmayı bildiğini görebiliriz. Uygulama detaylarına dair hiçbir şey ile ilgilenmiyor. Yani metodun tek sorumluluğu sadece algoritmayı takip etmektir.
Metodalarımıza baktığımızda onları kitap gibi okuyabilmeliyiz. Ne yaptığını ve niyetini anlayabilmeliyiz. Bu şekilde çalışırsak gereksiz yorum satırlarıyla kod açıklaması yapmak zorunda kalmayız.
Bir başka ipucunda görüşmek dileğiyle.