Desde la página de c2wiki sobre acoplamiento y cohesión :
Nombres de fuerza / nivel de cohesión (interdependencia dentro del módulo): (de peor a mejor, la alta cohesión es buena)
- Cohesión coincidente: (Peor) Los elementos del módulo no están relacionados
- Cohesión lógica: los elementos realizan actividades similares a las seleccionadas desde el módulo externo, es decir, mediante un indicador que selecciona la operación a realizar (consulte también CommandObject). es decir, el cuerpo de la función es un enorme indicador if-else / switch on operation
- Cohesión temporal: operaciones relacionadas solo por el tiempo general realizado (es decir, inicialización () o FatalErrorShutdown? ())
- Cohesión de procedimiento: Elementos involucrados en actividades diferentes pero secuenciales, cada uno con datos diferentes (por lo general, podrían dividirse trivialmente en múltiples módulos a lo largo de los límites de secuencia lineal)
- Cohesión comunicacional: operaciones no relacionadas, excepto que necesitan los mismos datos o entrada
- Cohesión secuencial: operaciones en los mismos datos en orden significativo; la salida de una función se ingresa a la siguiente (canalización)
- Cohesión informativa: un módulo realiza una serie de acciones, cada una con su propio punto de entrada, con un código independiente para cada acción, todo realizado en la misma estructura de datos. Esencialmente, una implementación de un tipo de datos abstracto. es decir, definir la estructura de sales_region_table y sus operadores: init_table (), update_table (), print_table ()
- Cohesión funcional: todos los elementos contribuyen a una tarea única y bien definida, es decir, una función que realiza exactamente una operación get_engine_temperature (), add_sales_tax ()
(énfasis mío).
No entiendo completamente la definición de cohesión lógica. Mis preguntas son:
- ¿Qué es la cohesión lógica?
- ¿Por qué tiene tan mala reputación (segundo peor tipo de cohesión)?