.NET의 코드 계약에 대해 배우고 있으며 순수한 생성자의 아이디어를 이해하려고합니다. 코드 계약의 문서 상태 :
계약 내에서 호출되는 모든 메소드는 순수해야합니다. 즉, 기존 상태를 업데이트해서는 안됩니다. 순수한 메소드는 순수한 메소드에 입력 한 후 작성된 오브젝트를 수정할 수 있습니다.
그리고 PureAttribute
설명서는 다음 과 같이 말합니다.
유형 또는 메소드가 순수함을 나타냅니다. 즉, 표시되는 상태를 변경하지 않습니다.
메소드와 관련하여 이러한 문장을 이해하지만 생성자는 어떻습니까? 다음과 같은 클래스가 있다고 가정하십시오.
public class Foo
{
public int Value { get; set; }
public Foo(int value) {
this.Value = value;
}
}
이 생성자는 분명히 새 Foo
객체 의 상태에 영향을 주지만 다른 부작용은 없습니다 (예 : 매개 변수를 조작하거나 순수하지 않은 메소드를 호출하지 않음). 이 후보 [Pure]
입니까? [Pure]
생성자에 속성을 배치하는 것의 중요성은 무엇이며 내 코드에서 언제해야합니까?