Pergunta

Por que devo implementar interfaces e injeção de dependência em um site com quase nenhuma chance de reutilizar ou atualizar por mais alguém?

Foi útil?

Solução

Quando você aprendeu a programar um computador, estava desenvolvendo um tipo de 'memória muscular' do seu ofício. Ao longo dos anos, você continua programando nessa mesma mentalidade. A maioria das pessoas não aprende todos os princípios bacana do OOP desde o início, então parecem ser mais esforçados do que a maneira como aprenderam.

Você deve ter o hábito de usar técnicas de design OOP sempre que estiver usando uma linguagem OOP, porque isso fará de você um desenvolvedor melhor em geral. Seu objetivo deve ser treinar a memória muscular da programação para usar essas técnicas. Então você não precisará fazer essas perguntas e assumir que as técnicas estão de alguma forma "atrapalhando" a sua programação. Você se torna um programador que apenas programa dessa maneira.

Outras dicas

Muitas vezes, o teste de unidade é um pouco mais simples. Por exemplo, você pode ter um tipo que usa outro tipo que se conecta a um banco de dados. Para testar o primeiro tipo de unidade, você pode injetar uma simulação de teste no lugar do segundo tipo, permitindo que você faça uma unidade de unidade efetivamente o primeiro tipo sem se conectar indiretamente ao banco de dados através do segundo tipo.

Por que de fato?

Não acho que interfaces e injeção sejam apenas sobre reutilização ou atualização.

Pessoalmente, uso interfaces e DI para todos os projetos. Não é suficiente para torná -los um benefício.

Porque a suposição que você está fazendo é a mesma suposição que resultou em Y2K.

Acho que torna muito mais fácil reutilizar meu código de maneiras que ainda não pensei. Também facilita a alteração da maneira como o código funciona sem alterar o código -fonte.

estou usando Spring.net para injeção de dependência.

Digamos que você tenha uma classe de máquina que tenha uma função Dowork (). Em seguida, você cria uma interface iWorkAlGorithm, com implementações específicas de algoritmo para cada máquina.

Cada instância da máquina possui um iWorkAlgorithm injetado nele, e o Machine.Dowork () chama a implementação injetada.

Agora você tem as seguintes vantagens:

  1. Você pode trocar em novas implementações apenas editando um arquivo XML.
  2. Você pode alterar as propriedades de cada implementação (tempo limite, limites etc.) editando um arquivo XML.
  3. Você pode reutilizar suas implementações fora da classe da máquina.

Se você estiver fazendo a programação orientada a objetos, mesmo se você é o único desenvolvedor que examinará o código, você ainda deverá testar a unidade e isso se tornará complicado se não usar a injeção de dependência.

Não se esqueça que o "outro desenvolvedor" em seu software pode muito bem ser você. Você pode hackear uma massa de código altamente acoplado e interdependente que funciona e até entende-o enquanto está trabalhando nisso, mas no momento em que você se afasta do projeto, mesmo por alguns dias, começará Esquecer todas as pequenas coisas que impediram a bola do fio de se desvendar.

Quando você voltar a ele (e ainda tenho que ver um software que não exigia algumas mudanças no futuro), você gostaria de ter seguido todas as práticas recomendadas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top