Tek Sorumluluk Yazılım Prensibi
Single Responsibility Principle (Tek Sorumluluk Prensibi), bağımlılık yönetiminin kötü olmasından kaynaklanan sabit (tekrar kullanılamayan) ve kırılgan (değişikliğin farklı yerleri etkilemesi) kodu daha modüler hale getirmeye yardımcı olmayı amaçlamaktadır.
Bob Amca der ki; Aynı nedenle değişenleri bir araya toplayın ve farklı nedenlerle değişenleri ayırın.
Sınıfımız ne kadar çok sorumluluk yüklenirse, o kadar fazla değişime uğramak zorunda kalır. Böylece ufak bir güncellemenin bile maliyeti katlanarak artar ve kod parçalarımız değişime direnmeye başlar.

Bizim amacımız “çalışıyorsa hiç dokunmayalım” konuşmasını yapmadan sorumluluklarımızı azaltıp, değişime kolay adapte olmayı sağlamaktır.
Peki bu aslında ne anlama geliyor ? Aşağıdaki örneği ele alalım.

public class Fatura{ public void FaturaEkle() { // İş Kuralları } public void FaturaSil() { // İş Kuralları } public void RaporHazirla() { // İş Kuralları } public void EmailGonder() { // İş Kuralları }}FaturaEkle() metodumuz yalnızca sisteme fatura eklemekten sorumludur, FaturaSil() metodu sadece faturaları silmekten sorumludur ve aynı olay RaporHazirla() ve EmailGonder() metodları için de geçerlidir.
Burada metodların tek sorumluluk prensibini karşıladığını söyleyebiliriz. Ama Fatura sınıfına bakarsanız tek sorumluluk prensibini yerine getirmeyen birden fazla sorumluluk ile ilgilendiğini göreceksiniz.
Burada yapmamız gereken nedir ?
FaturaEkle() ve FaturaSil() metodlarımız, benzer özellikte bir işlevsellik yaptıkları için tek sınıfta birleştirmemiz gerekir.
RaporHazirla() ve EmailGonder() metodları için tamamen bağımsız ve farklı işlevlere sahip oldukları ayrı ayrı sınıflar oluşturmamız tek sorumluluk prensibini yerine getirmemiz demektir.
O zaman hemen düzeltiyoruz!

public class Fatura{ public void FaturaEkle() { // İş Kuralları } public void FaturaSil() { // İş Kuralları }}public class Rapor{ public void RaporHazirla() { // İş Kuralları }} public class Email{ public void EmailGonder() { // İş Kuralları }}İşte bu kadar!
Artık her sınıfın sadece bir sorumluluğu ve değişmek için sadece tek bir nedeni oldu. Kod artık her işlevsellik için daha küçük ve yönetilebilir durumda. Böylece herhangi bir sınıf için değişiklik yapmak istediğinizde, tüm sınıfın ne yaptığına bakmak veya test etme gereksiniminiz olmayacak.
Bu şekildeki kullanımlarda hem kodumuzun kontrolü daha kolaylaşıyor hem de tekrar kullanılabilirliği (Reusability) artıyor.
ÖZET
Artık kodun nasıl yeniden düzenleneceğini ve Tek Sorumluluk İlkesine nasıl ulaşılacağını anladık. Single Responsibility Prensibi, programın karmaşıklığını azaltmamıza ve kodun bakımını daha kolay hale getirmemize yardımcı olur.
Okuduğunuz için Minnettarım.
Sağlıcakla kalın Dostlarım..
SOLID prensiplerine devam etmek için Open / Closed Prensibi**’**ne göz atabilirsiniz;
👉 Open-Closed Principle (OCP) — SOLID
Kaynakça;
What is Single Responsibility Principle (Important)

