Recentemente mi sono imbattuto in un dibattito con un altro sviluppatore riguardo alla classe sottostante:
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])
}
}
Credo che UpdateGroupBilling
non debba essere chiamato all'interno del metodo di salvataggio in quanto viola il principio di responsabilità singola. Ma, dice che ogni volta che viene effettuato un pagamento, la fatturazione deve essere aggiornata. Quindi questo è l'approccio corretto.
La mia domanda, viene violato qui SRP? Se sì, come possiamo rifattorizzarlo meglio in modo che entrambi i nostri criteri siano soddisfatti?