? En mi proyecto actual, nos marcamos algunos objetivos para las métricas de código "Índice de mantenimiento" y "Complejidad ciclométrica". El Índice de Mantenibilidad debe ser de 60 o más y la Complejidad Ciclometica de 25 o menos. Sabemos que el Índice de Mantenibilidad de 60 y más es bastante alto.¿Podría abstraer sus consultas LINQ en los métodos de extensión
También utilizamos una gran cantidad de linq para filtrar/agrupar/seleccionar entidades. Descubrí que estas consultas de linq no tienen una puntuación tan alta en el Índice de Mantenibilidad. Resumiendo estas consultas en métodos de extensión me está dando un Índice de Mantenibilidad más alto, que es bueno. Pero en la mayoría de los casos, los métodos de extensión ya no son genéricos porque los utilizo con mis Tipos en lugar de los genéricos.
Por ejemplo la siguiente LINQ consulta vs método de extensión:
consulta LINQ
List.Where(m => m.BeginTime >= selectionFrom && m.EndTime <= selectionTo)
método de extensión:
public static IEnumerable<MyType> FilterBy(this IEnumerable<MyType> source, DateTime selectionFrom, DateTime selectionTo)
{
return (IEnumerable<MyType>)source.Where(m => m.BeginTime >= selectionFrom && m.EndTime <= selectionTo);
}
List.FilterBy(selectionFrom, selectionTo);
El método de extensión me da un índice de mantenibilidad mejora de 6 puntos, y da una buena sintaxis fluida. Por otro lado, tengo que agregar una clase estática, no es genérica.
¿Alguna idea sobre qué enfoque tendría su favor? ¿O quizás tenga diferentes ideas sobre cómo refactorizar las consultas de linq para mejorar el Índice de Mantenibilidad?
Las métricas son simplemente una medida, pero nunca un objetivo. –
Soy un poco escéptico con respecto a cualquier Índice de Mantenibilidad que sea una caja negra inexplicable. Al menos con la complejidad ciclomática, es posible establecer lo que realmente se está midiendo. ¿Sabe si se explica en algún lugar más allá de la (no) explicación [aquí] (http://msdn.microsoft.com/en-us/library/bb385914.aspx)? – AakashM