Применяется ли закон Деметры только к методам?

Описание 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;
}

Я бы не стал делать первые два (будь то «официальные» нарушения или нет), хотя не совсем уверен насчет перечисления.

5
задан Grant Crofton 21 October 2010 в 16:44
поделиться