Por que o design por contrato não é tão popular em comparação com o desenvolvimento orientado a testes?

Você pode pensar que esta pergunta é comoesta pergunta feita no StackOverflow anteriormente. Mas estou tentando ver as coisas de maneira diferente.

No TDD, escrevemos testes que incluem diferentes condições, critérios, código de verificação. Se uma turma passa em todos esses testes, estamos prontos. É uma maneira de garantir que a classe realmente faça o que deveria fazer e nada mais.

Se você seguirBertrand Meyers' livroConstrução de software orientado a objetos palavra por palavra, a própria classe possui contratos internos e externos, de modo que apenas faz o que deveria fazer e nada mais. Não são necessários testes externos porque o código para garantir que o contrato seja seguido é a parte da classe.

Exemplo rápido para esclarecer as coisas

TDD

Crie um teste para garantir que, em todos os casos, um valor varie de (0 a 100)

Crie uma classe que contenha um método que passe no teste.

DBC

Crie uma classe, crie um contrato para esse membrovar para variar de (0 a 100), definir contrato por quebra de contrato, definir um método.

Eu pessoalmente gosto da abordagem DBC.

Existe uma razão pela qual DBC puro não é tão popular? São as linguagens ou ferramentas ou ser ágeis ou sou eu quem gosta de ter o código responsável por si mesmo?

Se você acha que eu não estou pensando direito, eu estaria mais do que disposto a aprender.

questionAnswers(9)

yourAnswerToTheQuestion