¿Por qué las clases de datos se consideran un olor de código?

12

Este artículo afirma que una clase de datos es un "olor de código". La razón:

  

Es algo normal cuando una clase recién creada contiene solo unos pocos   campos públicos (y tal vez incluso un puñado de getters / setters). Pero el   El verdadero poder de los objetos es que pueden contener tipos de comportamiento o   operaciones sobre sus datos.

¿Por qué es incorrecto que un objeto contenga solo datos? Si la responsabilidad principal de la clase es representar los datos, ¿no agregarían los métodos que operan en los datos y que rompen el Principio de Responsabilidad Única ?

    
pregunta Sipo 15.12.2016 - 12:17

2 respuestas

18

No hay absolutamente nada de malo en tener objetos de datos puros. Francamente, el autor de la pieza no sabe de qué está hablando.

Tal pensamiento se deriva de una idea antigua y fallida de que "verdadero OO" es la mejor manera de programar y que "verdadero OO" se trata de "modelos de datos ricos" donde se mezclan datos y funcionalidad.

La realidad nos ha demostrado que, en realidad, todo lo contrario es cierto, especialmente en este mundo de soluciones de subprocesos múltiples. Las funciones puras, combinadas con objetos de datos inmutables, es una manera mejor de codificar.

    
respondido por el David Arno 15.12.2016 - 12:23
5

No hay absolutamente nada de malo en tener objetos de datos puros. El autor tiene una opinión no compartida por los desarrolladores de software que conozco.

Especialmente para la asignación de bases de datos, en general, tiene clases de entidad que solo contienen los campos almacenados en la base de datos y los captadores y definidores. Wikipedia Hibernate (marco)

La idea del agujero de los beans Java utilizados por muchas herramientas / frameworks se basa en clases de datos llamadas beans que solo contienen campos y los captadores y definidores relacionados. Wikipdia JavaBeans

Fazit:
Si alguien afirma que algo es 'malo' o 'un olor a código', siempre debe buscar las razones dadas. Si las razones no lo convencen, pregunte a otra persona por razones mejores o por una opinión diferente. (Como hiciste en este foro)

    
respondido por el MrSmith42 15.12.2016 - 12:37

Lea otras preguntas en las etiquetas