Я смотрю на метрику LCOM, как показано здесь,
http://www.ndepend.com/Metrics.aspx
Итак, мы говорим несколько вещей,
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
Если я посмотрю на такой класс,
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; }
}
Он получает плохую оценку 0,94, потому что каждый геттер и сеттер не имеют доступа ко «всем другим полям экземпляра».
Рассчитывается так,
accessAverage - methodCount / 1 - methodCount
(2 - 17) / (1 - 17) = 0.94 (rounded)
Я не понимаю эту метрику, почему она должна включать геттеры и сеттеры? Геттер и сеттер всегда будут иметь доступ только к одному полю экземпляра.
Assessment
на самом деле не является классом. Это просто тупой POCO (dumb
имеющий конкретное, не уничижительное значение), структура (или запись на языке Паскаля). У него нет поведения (поведение, обычно представленное отношениями состояния между методами). Следовательно, это не настоящий класс. Это может быть точка зрения языка, но не точка зрения домена (это то, что вас действительно волнует). Я либо избегаю сбора метрик LCOM в POJOS или структурах, либо игнорирую результаты для них. LCOM прав - это не класс. Просто используйте эту информацию соответствующим образом. - person luis.espinal   schedule 13.07.2012