Imagine el siguiente método que convierte un booleano en un int:
def bool_to_int(bool) bool ? 1 : 0 end bool_to_int(false) # => 0 bool_to_int(true) # => 1Debido al condicional, la puntuación de complejidad ciclomática es dos. ¿La puntuación baja a uno al utilizar refinamientos en Ruby?:
module Extension refine FalseClass do def to_int; 0; end end refine TrueClass do def to_int; 1 end end end using Extension false.to_int # => 0 true.to_int # => 1En otras palabras; ¿El despacho dinámico reduce el puntaje de complejidad ciclomática o simplemente estamos ocultando la complejidad al dejar que Ruby haga el "trabajo pesado"?
La complejidad ciclomática se basa en los nodos y aristas disponibles en ellos. Al implementar el despacho dinámico, solo está implementando condiciones de una manera diferente.
Entonces, la complejidad ciclomática se mantiene constante.
Editar basado en los comentarios a continuación .
Sí, el concepto ciclomático está estrechamente ligado a las declaraciones condicionales. La reducción de las sentencias if/else da como resultado una menor complejidad ciclomática. Pero los caminos son constantes. Pero ahora están más aislados y no en función de las condiciones.
Así que creo que la respuesta debería ser: sí, la complejidad se reduce si tiene éxito en eliminar las declaraciones condicionales. Pero los caminos son constantes.