Описание LOD, которое я видел (например, Wikipedia , C2 Wiki ) говорят о не вызывающих методах. Процитирую Википедию:
- Сам О
- Параметры M
- любые объекты, созданные / экземпляры в M
- объекты прямого компонента O
- глобальная переменная, доступная для O, в рамках M
Но как насчет доступа к свойствам, переменным или перечислениям? Например, учитывая это:
class FirstClass {
public SecondClass GetRelatedClass() {
return new SecondClass();
}
public enum InnerEnum {
Violated,
NotViolated
}
}
class SecondClass {
public int Property {get; set;}
public string _variable = "Danny Demeter";
}
Есть ли какие-либо / все эти нарушения LOD? (Если можете, пока не обращайте внимания на прямой доступ к переменной ..)
void Violate(FirstClass first) {
SecondClass second = first.GetRelatedClass();
var x = second.Property;
var y = second._variable;
var z = FirstClass.InnerEnum.Violated;
}
Я бы не стал делать первые два (будь то «официальные» нарушения или нет), хотя не совсем уверен насчет перечисления.