Pregunta

Estoy tratando de decirle a alguien su código no es "coherente" en el sentido de que sirve para múltiples propósitos. No creo que lo puedo explicar muy bien, así que estoy buscando una buena referencia y / o definición.

¿Fue útil?

Solución

Creo que el término correcto es cohesión .

  

En la programación informática, cohesión es una medida de lo relacionado fuertemente y se centró las diversas responsabilidades de un módulo de software son. Cohesión es un tipo ordinal de medición y se expresa generalmente como "alta cohesión" o "baja cohesión" cuando se discute.

     

Los módulos con alta cohesión tienden a ser preferible debido a alta cohesión se asocia con varios rasgos deseables de software incluyendo robustez, fiabilidad, capacidad de reutilización, y comprensibilidad mientras que baja cohesión se asocia con rasgos indeseables tales como ser difíciles de mantener, difícil de probar, difícil reutilizar, e incluso difícil de entender.

Otros consejos

tuve código completo de Steve McConnell junto a mi equipo (es decir, los programadores biblia) con la página de la cohesión explicar abierto, así que pensé en compartir,

  

Cohesión surgió de diseño estructurado   y por lo general se discute en la misma   contexto como acoplamiento. Cohesión refiere   a cómo de cerca todas las rutinas en una   clase o todo el código en una rutina   apoyar un centro propósito de cómo se centró   es la clase. Las clases que contienen   fuertemente funcionalidad relacionada son   descrito como que tiene una fuerte cohesión,   y el objetivo es hacer heurística   cohesión tan fuerte como sea posible.

Yo uso el término “separación de intereses” para explicar esto mientras refactorización. A menudo, cuando el código es bastante nuevo, las cosas se pondrán agrupados en conjunto como las preocupaciones por separado no son claros al principio.

Una forma fácil de ilustrar esto a su compañero de trabajo sería pedir a escribir casos de prueba para el código. Esto debería ilustrar que el código no está claro o coherente.

Otra buena frase para usar es que las funciones / objetos “deben hacer una cosa, y hacerlo bien”, esto tiene implicaciones en todo, desde los nombres de objeto / método para la arquitectura general del sistema.

Además de las respuestas dadas hasta ahora, una forma simple de pensar en alta cohesión es la falta de duplicación de la funcionalidad y la separación clara de la funcionalidad relacionada en distintos módulos, componentes o clases. Por lo tanto si desea una función similar a otra función, y cortar y pegar y posteriormente se modifica una copia del código, que están reduciendo la cohesión. Si modifica el original para manejar el nuevo caso, en el que el nuevo caso es claramente relacionado con la funcionalidad existente, que están aumentando la cohesión. Dicho de otra manera, si el programa tiene que hacer una cosa determinada, no importa cómo los tiempos o en la forma en muchos lugares, para obtener la máxima cohesión sólo debe haber una pieza de código que hace esa cosa. Al mismo tiempo, una clase, módulo o componente determinado deben tener una sola área de responsabilidad. Agrupar funcionalidad no relacionada en una sola clase o componente que también reduce la cohesión.

Como dice CodeWiki, la cohesión suele ser discutido con acoplamiento, donde los dos pueden actuar en la oposición el uno al otro, sobre todo cuando no son planeadas cuidadosamente las interfaces estrictas. Muchos de los artículos en Google sobre la cohesión se refieren al diseño orientado a objetos, pero la cohesión y el acoplamiento no se limitan a OO.

Marcado por una relación ordenada, lógica y estéticamente consistente de partes; "Un argumento coherente" - de http://www.websters-online-dictionary.org / definición / coherente

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top