SRP, SOLID ilkelerinden ilki olup, her varlığın (modül, hizmet, sınıf) değişim için sadece bir nedeni olması gerektiğini ifade eder. Mimaride bu, sistemi sorumluluk alanlarına göre hizmetlere/modüllere bölerek gerçekleştirilir. Örneğin, ayrı bir hizmet kullanıcıları kaydeder, diğeri ödemeleri yönetir, üçüncüsü – bildirimleri gönderir.
Node.js Örneği:
// userService.js module.exports = { registerUser(data) { /* kayıt işlemi */ } } // paymentService.js module.exports = { processPayment(order) { /* ödeme işlemi */ } } // notificationService.js module.exports = { sendEmail(user, content) { /* e-posta gönderimi */ } }
Anahtar Özellikler:
SRP, bir hizmetin diğer hizmetlerle etkileşime girmemesi anlamına mı gelir?
Hayır. Hizmetler, kendi iş operasyonları içindeki sorumluluklarını koruyarak, net bir şekilde tanımlanmış API'ler üzerinden etkileşime girebilirler.
SRP, ayrı dosyalara veya projelere bölmeden uygulanabilir mi?
Teknik olarak mümkündür, ancak ölçeklenebilirlik ve kod okunabilirliği için fiziksel birimlere ayırma önerilir: ayrı dosyalar, paketler, hizmetler.
SRP sadece kod için mi yoksa genel mimari için mi geçerlidir?
SRP, hizmetlerin/modüllerin tasarımından belirli sınıflar ve fonksiyonlar yazımına kadar tüm seviyelerde geçerlidir.