Gần đây tôi đã có một cuộc tranh luận với một nhà phát triển khác về lớp dưới đây:
public class GroupBillingPayment
{
public void Save(IGroupBillingPayment model)
{
if (model == null || UserInfo.UserID == 0)
{
throw new Exception("GroupBillingPayment object or Current User Id is NULL , Please Contact Administrator.");
}
Data.GroupBillingPayment groupBillingPayment = RepositoryManager.GroupBillingPaymentRepository.GetById(model.GroupBillingPaymentID);
Mapper.Map(model, groupBillingPayment);
ServiceManager.GroupBilling.IsBillAlreadyCancelled(groupBillingPayment.GroupBillingID, THROW_ERROR);
groupBillingPayment.UpdatedBy = UserInfo.UserID;
groupBillingPayment.UpdatedOn = DateTime.Now;
RepositoryManager.GroupBillingPaymentRepository.Update(groupBillingPayment, false);
UpdateGroupBilling([Parameters])
}
}
Tôi tin rằng UpdateGroupBilling
không nên được gọi bên trong phương thức lưu vì nó vi phạm nguyên tắc trách nhiệm duy nhất. Nhưng, ông nói rằng mỗi lần thanh toán được thực hiện, hóa đơn cần được cập nhật. Do đó đây là cách tiếp cận chính xác.
Câu hỏi của tôi, SRP có bị vi phạm ở đây không? Nếu có, làm thế nào chúng ta có thể tái cấu trúc tốt hơn để cả hai tiêu chí của chúng ta được đáp ứng?