Método .update() do controller de cliente não respeita SRP (Princípio de Responsabilidade Única)
Opened this issue · 0 comments
Método update ao receber objeto sem código de chave primária está chamando método controller.create()
. Além de fugir do modelo MVC padrão (model <-> controller <-> view, um controller jamais fala com outro controller, se voce precisa reaproveitar comportamento, voce faz a partir de métodos privados, mas uma rota nunca chama outra.), não respeita o conceito S de _S_OLID.
// linha 65 ~ 68
if(!req.body.cli_cd_cliente){
controller.create(req, res);
return;
}
Single Responsibility Principle (Princípio da Responsabilidade Única)
The single responsibility principle states that every module or class should have responsibility over a single part of the functionality provided by the software, and that responsibility should be entirely encapsulated by the class.
Imagine such a module can be changed for two reasons. First, the content of the report could change. Second, the format of the report could change. These two things change for very different causes; one substantive, and one cosmetic. The single responsibility principle says that these two aspects of the problem are really two separate responsibilities, and should therefore be in separate classes or modules. It would be a bad design to couple two things that change for different reasons at different times.
Proposta de solução:
O método .update(req, res)
deve ser responsavel, exclusivamente, e somente para atualização de clientes já cadastrados. Se é necessário esse tipo de comportamento, um método .upsert(req, res)
deverá ser criado, e ter uma rota onde essa responsabilidade seja encapsulada somente para este metodo.