Estoy usando SonarLint para Eclipse desde hace poco, y me ayudó mucho. Sin embargo, me planteó una pregunta sobre la complejidad ciclomática.
SonarLint considera aceptable un CC de 10, y hay algunos casos en los que estoy más allá, alrededor de 5 o 6 unidades. Esas partes están relacionadas con los mapeadores donde los valores se basan en diferentes variables, por ejemplo:
- El campo A se basa en la cadena sA;
- El campo B se basa en String sB;
- El campo C se basa en String sC;
- etc ...
No tengo otra opción que poner un if
para cada campo. Esta no es mi elección (afortunadamente) sino un sistema ya existente y complejo que no puedo cambiar por mí mismo.
El núcleo de mi pregunta es: ¿por qué es tan importante no tener un CC demasiado alto en un solo método ? Si mueve algunas de sus condiciones en uno o más submétodos para reducir la complejidad, no reduce el costo de su función general, solo está moviendo el problema a otra parte, supongo.
(Perdón por pequeños errores, si los hay).
EDITAR
Mi pregunta no se refiere a la complejidad ciclomática global, sino solo a la complejidad del método único y la división de métodos (me cuesta explicar lo que quiero decir exactamente, lo siento). Me pregunto por qué es permisible dividir sus condiciones en métodos más pequeños si todavía pertenece a un 'súper método', que solo ejecutará cada submétodo, agregando así complejidad al algoritmo.
Sin embargo, el segundo enlace ( sobre el antipatrón ) es de gran ayuda.