Tôi đang tìm hiểu về các hợp đồng mã trong .NET và tôi đang cố gắng hiểu ý tưởng của các nhà xây dựng thuần túy. Các tài liệu hợp đồng mã quy định:
Tất cả các phương thức được gọi trong hợp đồng phải thuần túy; nghĩa là, họ không được cập nhật bất kỳ trạng thái có sẵn nào. Một phương thức thuần túy được phép sửa đổi các đối tượng đã được tạo sau khi nhập vào phương thức thuần túy.
Và các PureAttribute
tài liệu nêu:
Chỉ ra rằng một loại hoặc phương thức là thuần túy, nghĩa là nó không thực hiện bất kỳ thay đổi trạng thái có thể nhìn thấy nào.
Tôi hiểu các câu lệnh này khi nói đến các phương thức, nhưng các hàm tạo thì sao? Giả sử bạn có một lớp học như thế này:
public class Foo
{
public int Value { get; set; }
public Foo(int value) {
this.Value = value;
}
}
Hàm tạo này rõ ràng không ảnh hưởng đến trạng thái của Foo
đối tượng mới , nhưng nó không có tác dụng phụ nào khác (ví dụ: nó không thao tác bất kỳ tham số nào hoặc gọi bất kỳ phương thức không thuần túy nào). Đây có phải là một ứng cử viên cho [Pure]
hay không? Tầm quan trọng của việc đặt một [Pure]
thuộc tính trên một hàm tạo và khi nào tôi nên làm điều này trong mã của riêng mình?