tenemos este código, sortof: análisis¿Cómo puede la complejidad ciclomática ser 27 en un método con 13 suscripciones de controlador de eventos?
private void InitializeEvents()
{
this.Event1 += (s,e) => { };
this.Event2 += (s,e) => { };
this.Event3 += (s,e) => { };
this.Event4 += (s,e) => { };
this.Event5 += (s,e) => { };
this.Event6 += (s,e) => { };
this.Event7 += (s,e) => { };
this.Event8 += (s,e) => { };
this.Event9 += (s,e) => { };
this.Event10 += (s,e) => { };
this.Event11 += (s,e) => { };
this.Event12 += (s,e) => { };
this.Event13 += (s,e) => { };
}
Código de VS10 último dice "complejidad ciclomática de 27". La eliminación de una de las líneas aumenta la complejidad ciclomática 25.
No hay ramificaciones, ¿cómo es posible?
+1 para "Recuerde que el Análisis de código está mirando el IL en su ensamblaje, no su código fuente. No hay nada en el IL que admita originalmente expresiones lambda" – Lijo
Lambdas/delegados SOLO SE CACHEDAN si no hay cierre sobre ellos. De lo contrario, no lo son. Esta es una de las razones (de varias) que las lambdas son costosas. También hay JIT, asignación y GC involucrados, pero eso es para otra discusión. He solucionado más problemas de rendimiento relacionados con lambdas con cierres en métodos "calientes" que puedo contar. –