Che cos'è un "oggetto ricco di comportamento" e perché sarebbe vantaggioso?

5

Mi riferisco all'articolo Mock non sono Stub di Martin Fowler . Quando si nomina un caso in cui pensa che il "mockist" TDD sarà vantaggioso, ha detto

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.

La mia domanda, che cosa intende con "oggetti ricchi di comportamento", oggetti che "contengono un comportamento sufficiente", ecc.? E perché importa se un oggetto contiene molti comportamenti o meno, se funziona correttamente?

    
posta Louis Rhys 23.08.2012 - 10:47
fonte

1 risposta

7

Penso che la citazione si riferisca a oggetti che sono (per lo più) privi di logica, che rappresentano solo i dati. Questo è indicato come Modello di dominio anemico ed è generalmente un anti-pattern in OOP. Dall'articolo di Wikipedia:

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.

Quindi, in sostanza, la tua citazione sembra dire che TDD (e in particolare, beffardo) incoraggia le persone a spostare la loro logica nell'oggetto (dove avrebbe dovuto essere, in primo luogo). L'ho notato anch'io, ma non ho dati effettivi per il backup.

Modifica:

Per chiarire, sto semplificando qui sottolineando un'estremità dello spettro, il modello di dominio anemico. Fowler si riferisce probabilmente a più di un "sweet-spot" definito in modo soft, in cui il tuo oggetto contiene una quantità "ottimale" di logica (con una certa misura). Questo oggetto sarebbe abbastanza complicato da giustificare la sua esistenza, ma non così complicato da doverlo dividere in più parti. Certo, questo è molto difficile da definire, quindi mi sono attenuto alla semplice spiegazione.

    
risposta data 23.08.2012 - 11:31
fonte

Leggi altre domande sui tag