Sou o único desenvolvedor de um projeto que, como em qualquer projeto de software, pode ser realizado por outra pessoa no futuro.
Digamos que usei o padrão X para implementar o recurso A. Depois de desenvolver e finalizar o recurso, percebo que poderia implementar o mesmo recurso usando o padrão Y, sobre o qual acabei de aprender. Mas o recurso A está funcionando bem e a refatoração de X para Y consome tempo e oferece pouco benefício.
Chegou a hora de implementar o recurso B. É semelhante ao A, mas desta vez quero aproveitar esta oportunidade para brincar com o padrão Y. Estou feliz com o resultado final, melhor do que ao executar o recurso A, mas agora meu código usa dois padrões diferentes, X e Y, para recursos semelhantes.
Mas não há motivo real para usar padrões diferentes, exceto pelo fato de que ao criar o recurso AI não havia habilidade suficiente para usar o mesmo padrão do recurso B.
Observe que esta pergunta não é sobre a escolha do padrão certo para um determinado problema ; trata-se de dois padrões coexistentes na base de código para resolver problemas semelhantes, que podem ser reduzidos a um dado tempo suficiente para refatorar.
- Esse código está com cheiro?
- Quais são as desvantagens de manter o código-fonte assim?
- Devo continuar usando apenas um padrão? ou seja, refator A para usar Y ou continuar usando X ao escrever B?
- Como, na fonte, posso comunicar que a razão pela qual existem dois padrões diferentes para recursos semelhantes é essencialmente nenhuma razão?
- Estou me preocupando demais com o que o próximo desenvolvedor pensa sobre o meu código?