sto guardando la lcom metrica come mostrato qui,Perché la mancanza di coesione di metodi (lcom) Inserisci getter e setter
http://www.ndepend.com/Metrics.aspx
Così dicono alcune cose,
1) A class is utterly cohesive if all its methods use all its instance fields 2) Both static and instance methods are counted, it includes also constructors, properties getters/setters, events add/remove methods
Se guardo una classe come questa,
public class Assessment
{
public int StartMetres { get; set; }
public int EndMetres { get; set; }
public decimal? NumericResponse { get; set; }
public string FreeResponse { get; set; }
public string Responsetype { get; set; }
public string ItemResponseDescription { get; set; }
public string StartText { get; set; }
public decimal? SummaryWeight { get; set; }
}
Ottiene un punteggio negativo di 0,94 poiché ciascun getter e setter non accede a "tutti gli altri campi di istanza".
Si calcola in questo modo,
accessAverage - methodCount/1 - methodCount
(2 - 17)/(1 - 17) = 0.94 (rounded)
non sto capendo questa metrica, perché dovrebbe includere getter e setter? Un getter e setter accedono sempre a un solo campo di istanza.
Direi che la metrica LCOM dovrebbe considerare le proprietà automatiche come gli stessi campi. – Gabe
La cosa sulle metriche di tipo LCOM è che, quella cosa 'Assessment', non è davvero una classe. È solo una stupida POCO ("stupida" che ha un significato specifico e non dispregiativo), una struttura (o un registro in un linguaggio simile a Pascal). Non ha alcun comportamento (il comportamento è tipicamente rappresentato dalle relazioni tra i metodi). Ergo, è non è una vera ** classe **. Potrebbe provenire da un POV in linguaggio, ma non da un dominio POV (che è quello che ti interessa veramente). Evito di raccogliere le metriche LCOM in POJOS o nelle strutture, o di ignorarne i risultati. LCOM ha ragione - non è una classe. Basta usare le informazioni di conseguenza. –
Forse perché getter e setter stanno effettivamente abbassando la coesione della classe e devono essere evitati nella programmazione orientata agli oggetti: http://www.yegor256.com/2014/09/16/getters-and-setters-are-evil. html – yegor256