Wil u u LINQ-navrae omvat in uitbreidingsmetodes

In my huidige projek het ons vir ons 'n paar doelwitte gestel vir die kode-statistieke "Handhaafbaarheidsindeks" en "Siklometiese kompleksiteit". Die instandhoudingsindeks moet 60 of hoër wees en die siklometiese kompleksiteit 25 of minder. Ons weet dat die instandhoudingsindeks van 60 en hoër redelik hoog is.

Ons gebruik ook baie linq om entiteite te filter / groepeer / kies. Ek het uitgevind dat hierdie linq-navrae nie so hoog is op die instandhoudingsindeks nie. As ek hierdie navrae in uitbreidingsmetodes saamvat, kry ek 'n hoër instandhoudingsindeks, wat goed is. Maar in die meeste gevalle is die uitbreidingsmetodes nie meer generies nie, want ek gebruik dit saam met my tipes in plaas van generiese tipes.

Byvoorbeeld die volgende linq-navraag versus uitbreidingsmetode:

Linq-navraag

List.Where(m => m.BeginTime >= selectionFrom && m.EndTime <= selectionTo)

Uitbreidingsmetode:

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);

Die uitbreidingsmetode gee my 'n verbetering van die instandhoudingsindeks van 6 punte, en gee 'n mooi vloeiende sintaksis. Aan die ander kant moet ek 'n statiese klas byvoeg, dit is nie generies nie.

Het u enige idees oor watter benadering u guns sou wou hê? Of het u dalk verskillende idees oor hoe u die linq-navrae kan refaktoreer om die instandhoudingsindeks te verbeter?

5
задан ChristiaanV 8 June 2011 в 08:41
поделиться