Tek sorumluluk ilkesi

Tek sorumluluk ilkesi (TSİ), "Bir birimin sadece bir etkene karşı sorumlu olması gerektiği" şeklinde bir bilgisayar programlama ilkesidir. Etken terimi, birimde değişiklik gerektiren bir küme (en az bir paydaş veya kullanıcıdan oluşan) için kullanılır.

Terimin yaratıcısı Robert C. Martin ilkeyi, "Bir sınıfın değişmek için bir tek nedeni olmalıdır" şeklinde ifade eder. "Neden" deyişindeki karışığa "ilke, insanlarla ilgilidir" diyerek açıklık getirdi. Bazı konuşmalarında bu ilkenin, özellikle görevler veya etkenler hakkında olduğunu da savunuyor. Örneğin, aynı kişi olabilseler de bir saymanın görevi, bir veri tabanı yöneticisininkinden ayrıdır. Bu nedenle her bir görevden bir tek birim sorumlu olmalıdır.

Tarihçe 
Terim, Robert C. Martin tarafından "NYT'nin İlkeleri" makalesinde tanıtılmıştır. Bu, 2003 yılında yayınlanan Atik Yazılım Geliştirme, İlkeler, Desenler ve Uygulamalar kitabıyla yaygın hale gelen Nesne Yönelimli Tasarımın İlkeleri bölümünün bir parçasıdır. Martin, Tom DeMarko'nun Yapılandırılmış Çözümleme ve Düzen Özelleştirme kitabında ve Meyir Pajcons'un Yapılandırılmış Düzenlerin Tasarımına İlişkin Uygulamalı Rehber kitabında açıkladığı gibi tutarlılık ilkesine dayandığını açıklamıştır. 2014 yılında, Martin, değişiklik nedeni ifadesinin ne anlama geldiğini açıklamak için "Tek Sorumluluk İlkesi" adlı bir ağ günlüğü yazısı yayınladı.

Örnek 
Martin; sorumluluğu, değişiklik sebebi olarak tanımladı ve bir sınıfın veya birimin değiştirilmesi (örneğin yeniden yazılması) için bir tek sebep olması gerektiği sonucuna vardı.

Örneğin, bir yazanağı derleyip yazdıran bir birimi ve bu birimin de iki nedenle değiştirilebileceğini düşünün. İlk olarak, yazanağın içeriği değişebilir. İkincil olarak, yazanağın biçimi değişebilir. Bu iki şey farklı nedenlerle değişir. Tek sorumluluk ilkesi, bu iki sorunun, iki ayrı sorumluluk olduğunu ve bu nedenle de ayrı sınıflarda veya birimlerde olması gerektiğini söyler. Farklı nedenlerle, farklı zamanlarda değişen iki şeyi birbirine bağlamak kötü bir tasarım olur.

Bir sınıfı tek bir etkene odaklamanın önemi, sınıfın daha dayanıklı hale getirilmesidir. Önceki örnekle devam edersek, yazanak derleme işleminde bir değişiklik olursa, aynı sınıftaki yazdırma kodu daha yüksek olasılıkla bozulur.

Kaynaklar 

Yazılım tasarımı
Yazılım ilkeleri