Endişeler basit ama güçlü bir kavramdır. Kodun yeniden kullanılabilirliği için mevcuttur. Temel olarak fikir, modelleri temizlemek ve çok şişman ve yönetilemez hale gelmelerini önlemek için ortak ve / veya bağlama özgü kod parçalarını çıkarmaktır.
Belirli bir nesneyi ilgilendirmeyen işlevsellik sağlamak için hizmet nesnelerini kullanmanız gerektiğini açıkça belirtmek isterim. Örneğin, bir kuruluşun birçok kullanıcısı vardır. Artık kuruluş yöneticisinin bu kuruluş için tüm kullanıcıların bir CSV'sini dışa aktarması gerekir. Bu kod organizasyon modeline yerleştirilebilir, ancak organizasyon nesnesinin sorumluluğu olmadığı için, bu kod sadece organizasyon nesnesini geçtiği ve tüm kullanıcıların CSV'sini döndürdüğü bir sınıfa yerleştirilmelidir.
class Services::GenerateCsv
def self.get_users org
#add logic the fetch users for the org and generate the CSV and return the CSV data
end
end
CSV oluşturmaya ihtiyaç duyduğunuzda, yukarıdaki sınıfa bu mantığı yerleştirebilirsiniz. Bu yaklaşım nesneyi (bu durumda, organizasyon modelini) sorumluluğu olmaması gereken koddan temiz tutar. İzlediğim genel bir ilke şudur: eğer kod öz nesneyi değiştiriyorsa, kodu bir hizmet nesnesine taşıyın.
Not: Sorunuz endişelerle ilgiliydi, ancak kod tabanını temiz ve yönetilebilir tutmak için takip ettiğim bazı ekstra şeyler eklemeyi düşündüm, çünkü bu diğer programcılara yardımcı olabilir. Yukarıdaki yaklaşım tartışmalıdır.