Single Responsibility Principle (SRP)— (S.O.L.I.D #1)

Saban Durna
Bilişim Hareketi
Published in
2 min readSep 19, 2018
“photo of gray and red spaceship building” by John Baker on Unsplash

Tatil zamanı! Her zaman olduğu gibi bavuları hazırlayıp Sabiha Gökçen’in yolunu tuttum. Havaalanının sıkıcı kontrollerinden sonra memleketimin güzel ve ilginç insanları ile beraber uçağı beklemeye başladım. Yanımdaki amcanın kulağıma eğilip “habı tulumlar da neyin nesi uşağım” demesiyle doğru uçağı beklediğimi anladım. Ancak başımı kaldırmam ile emicemin hiç de ironi yapmadığını fark etmiş oldum. Gerçekten de bu tulumların ne işi vardı burada. Daha durun yeni başlıyoruz.

“Bordo Mavi Uzay ve Havayolları İşletmelerinin TRB-061 sayılı Sabiha Gökçen-Trabzon seferi yolcuları. Lütfen tulumlarınızı alıp mekiğe binmek için 137 nolu kapıya gidiniz. Bu yolcularımız için son uyarıdır.” Anonsun şaka olmadığını hemşehrilerim gibi bende mekiğe binince anladım. Canım memleketimin çiçeği burnunda girişimcileri bir taşta iki kuş vuralım deyip bir mekik ile hem uzay hem de havayolu taşımacılığı işine girmişler. Karadeniz zekası işte…

Pilotun yaptığı karizmatik konuşmadan anladığımız kadarıyla mekik bir gün önce uzay seferinden gelmiş ve dış yüzey hala sıcaklığını koruyormuş. Bu yüzden Trabzon’ a daha yüksek bir irtifadan uçup uçağın dışını soğutacağını ancak daha hızlı gidip zaman kaybını en aza indireceğini söyledi. Yolculardan başlayan uğultu şeklindeki isyanlar hosteslerin kask dağıtmaları ile yerini endişeli bir ölüm sessizliğine bıraktı.

Yolculuk nasıl geçti, kaç kişi yolculuğu tamamlayabildi ya da kaç kişi evine gidebildi gibi soruları merak ediyorsunuz deği mi? Mekiğin dışında bizi yolcu sayısı kadar ambulans ve doktor bekliyordu desem cevap olarak yeterli olur sanırım. Ambulans sayısındaki artışta pilotun gaza gelip bizi yarım saat önce Trabzon’a ulaştırma fantezisinin büyük payının olduğunu da unutmamak gerekir.

Evet, yukarıda kurguladığım hikaye maalesef bir çoğumuzun canına okuduğu yazılımların somut hayata yansımasıdır. Üzerinde çalıştığımız yazılımlarda kurnazca davranıp bir taşla iki kuş vurmaya çalışınca yukarıdaki gibi absürt durumların ortaya çıktığına siz de benim gibi çokça şahit olmuşsunuzdur.

Burada SRP’ye aykırı olan durumların başında bir aracın iki farklı iş için kullanılıyor olması geliyor. Örneğin yolcu taşımacılığı için mekiğe bir koltuk daha eklemek istediğinizde ekstradan mekiğin uzay yolculuğunu da düşünmek zorundasınız ya da roketlerin itme kapasitesini artırırken yolcuların bu durumdan ne kadar etkileneceğini.

Şimdi SRP’nin asıl alanına yani yazılıma dönelim. Örneğin Login adında bir class oluşturup içine Login, LogOut, SendMail, ShowNotification, SetNotificationTime gibi metodlar koyarsak bir süre sonra bu class’ı yönetmek imkansız hale gelecektir. Bir mekiğin hem İstanbul-Trabzon arası yolcu taşıması hem de uzaya uydu götürmesi ne kadar abes ise bir class’ın birbirinden farklı işler yapan ve farklı sebepler ile değişikliğe uğrayacak olan bu metodları barındırması da bu kadar abestir. Bırakalım herkes kendi görevini yapsın. ShowNotification ve SetNotificationTime metodları Notification class’ında olsun. Eğer ShowNotification metoduna users gibi bir parametre eklenip değişiklik yapılacaksa bundan sadece Notification class’ı etkilensin.

Bana ne clean code’dan, bana ne SOLID’den ya da bana ne Single Responsibility Principle’dan diyebilirsiniz. Benim class’ların süpermen gibidir diyorsanız C debugger’ı olan Sword’u C++’a taşıyamayan şirketin nasıl battığına dair hikayeyi Uncle Bob’dan dinleyebilirsiniz.

--

--