Pregunta

Yo estaba leyendo un código limpio de Robert Martin y en la que menciona sobre el código siendo altamente cohesivo:

Las clases debe tener un pequeño número de variables de instancia. Cada una de las métodos de una clase deben manipular una o más de esas variables. En en general el método de una más variable manipula la más coherente que método consiste en su clase. Una clase de que cada variable es utilizado por cada método es máximamente cohesivemethod es como máximo cohesiva

Pero cuando estamos tratando de escribir código concurrente, nos esforzamos para limitar el alcance de las variables a un único método para evitar las condiciones de carrera. Pero esto resulta en código que es menos cohesivo.

En el diseño de una aplicación / clase, lo que si usted prefiere - Cohesión o de concurrencia?

¿Fue útil?

Solución

como un buen número de conceptos de Martin, pero sus necesidades de código se ejecute correctamente y si no es así, todas las bellas métricas en el mundo no se va a hacer que se vea mejor.

A esto se añade que los problemas de threads están entre los peores que hay que depurar, y no deben comprometer su diseño para la concurrencia de conformarse con su idea de lo que alguien escribió en un libro sobre la cohesión. De nuevo, no estoy atacando a Martin ... Estoy seguro de que te lo diría lo mismo. Después de todo, reconoce que casi todo está en un continuo en la mayor parte de su escritura.

No estoy seguro de que está poniendo el énfasis en todo el lugar correcto, aunque (podría ser la forma en que estoy leyendo tu pregunta). Martin no está diciendo que usted debe hacer tantas variables que viven a nivel de clase como sea posible. Él está diciendo que una de las variables de nivel de clase, ¿cuántos están usando? Si promover variables que no es necesario, no puede estar recibiendo mayor cohesividad ... que podría estar recibiendo más estrechos.

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