O que é um “objeto rico em comportamento” e por que seria vantajoso?

5

Estou me referindo ao artigo Mocks não são Stubs por Martin Fowler . Ao nomear casos quando ele pensa que o "mockista" TDD será vantajoso, ele disse

It's particularly worth trying if you are having problems in some of the areas that mockist TDD is intended to improve. I see two main areas here. [...] The second area is if your objects don't contain enough behavior, mockist testing may encourage the development team to create more behavior rich objects.

Minha pergunta, o que ele quer dizer com "objetos ricos em comportamento", objetos que "contêm comportamento suficiente", etc? E por que importa se um objeto contém muitos comportamentos ou não, se funciona corretamente?

    
por Louis Rhys 23.08.2012 / 10:47
fonte

1 resposta

7

Eu acho que a citação está se referindo a objetos que são (principalmente) desprovidos de lógica, representando apenas dados. Isso é chamado de Modelo de Domínio Anêmico e geralmente é um antipadrão na POO. Do artigo da Wikipédia:

Anemic domain model is a term used to describe the use of a software domain model where the business logic is implemented outside the domain objects.

Então, basicamente, sua citação parece estar dizendo que TDD (e especificamente, zombaria) encoraja as pessoas a mover sua lógica para o objeto (onde deveria ter sido, em primeiro lugar). Eu mesmo percebi isso, mas não tenho dados reais para fazer o backup.

Editar:

Para esclarecer, estou simplificando aqui apontando um fim do espectro, o modelo de domínio anêmico. Fowler provavelmente está se referindo a um "ponto doce" mais suave, onde seu objeto contém uma quantidade "ótima" de lógica (por alguma medida). Esse objeto seria complicado o suficiente para justificar sua existência, mas não tão complicado, de modo que ainda deveria ser dividido em múltiplos. Claro, isso é muito difícil de definir, então eu tenho uma explicação simples.

    
por 23.08.2012 / 11:31
fonte