O instinto usual é remover qualquer duplicação de código que você vê no código. No entanto, eu me encontrei em uma situação em que a duplicação é ilusória .
Para descrever a situação com mais detalhes: Estou desenvolvendo um aplicativo Web e a maioria das visualizações é basicamente a mesma - elas exibem uma lista de itens pelos quais o usuário pode rolar e escolher, uma segunda lista que contém itens selecionados e um "Salvar "para salvar a nova lista.
Pareceu-me que o problema é fácil. No entanto, todas as visualizações têm suas próprias peculiaridades - às vezes você precisa recalcular algo, às vezes é necessário armazenar alguns dados adicionais etc. Isso eu resolvi inserindo ganchos de retorno de chamada no código lógico principal.
Existem tantas diferenças minuciosas entre as visualizações que estão se tornando cada vez menos sustentáveis, porque eu preciso fornecer retornos de chamada para basicamente todas as funcionalidades, e a lógica principal começa a parecer uma enorme sequência de chamadas de retorno de chamada. No final, não estou economizando tempo ou código, porque cada exibição tem seu próprio código que é executado - tudo em retornos de chamada.
Os problemas são:
- as diferenças são tão pequenas que o código se parece quase exatamente em todas as visualizações,
- existem tantas diferenças que, quando você olha para os detalhes, codificar não é nem um pouco parecido
Como devo lidar com essa situação?
Ter uma lógica principal composta inteiramente de chamadas de retorno de chamada é uma boa solução?
Ou devo duplicar o código e diminuir a complexidade do código baseado em retorno de chamada?