Tại sao tôi không thể chỉ cần đặt tất cả mọi thứ trong các nhà xây dựng và tại sao mẫu bên dưới gọi phương thức khởi tạo?
Bạn có thể đặt tất cả trong hàm tạo. Trong trường hợp đơn giản này, bạn nên. Constructors là để khởi tạo đối tượng của bạn.
Đôi khi bạn có một cái gì đó phức tạp hơn mặc dù:
- Đôi khi bạn sẽ muốn có một phương pháp riêng biệt
Initialize
bởi vì bạn muốn gọi nó là tại một thời điểm riêng biệt từ xây dựng.
- Đôi khi bạn muốn một vì bạn đang viết nhiều hàm tạo và bạn muốn chia sẻ một số việc triển khai giữa chúng.
- Đôi khi việc khởi tạo của bạn phức tạp và bạn muốn cung cấp cho các phần của tên tốt để bạn biết mã của mình đang làm gì. Vì vậy, bạn chia những miếng thành các phương pháp riêng biệt.
Không có trường hợp nào trong số này là trường hợp của mã này, vì vậy tôi chỉ bỏ qua và ném mã vào hàm tạo.
Có quy ước thường được sử dụng không?
Không. Mọi người làm mọi thứ dễ đọc và dễ hiểu nhất, bất kỳ điều gì yêu cầu mã ít nhất phải viết và bất kỳ điều gì gây ra sự trùng lặp mã nhất.
Tuy nhiên, nếu bạn đang thực hiện phương thức Initialize
công khai và không gọi phương thức đó từ hàm tạo, tôi khuyên bạn nên gọi nó là Initialize
. Thiết kế nó để chỉ được gọi một lần.
Trong ví dụ này, tôi cần từ "this". trong phương thức Initialize?
Không. Bạn không bao giờ cần phải sử dụng this
để truy cập thành viên của lớp trừ khi bạn có một biến địa phương khác có cùng tên. Dưới đây là một trường hợp như vậy:
public class Something
{
private string someValue;
public class Something(string someValue)
{
// must use "this" to access the member variable,
// because a local variable has the same name
this.someValue = someValue;
}
}
Nguồn
2011-12-13 11:49:18
Bằng cách này, mã có thể được gọi từ một nơi khác khác với hàm tạo. – Megacan
Đối với cả hai câu hỏi của bạn, một câu trả lời phổ biến: Khả năng đọc tốt hơn. Và đối với phương pháp riêng biệt, một điểm cộng nữa là giúp theo nguyên tắc DRY. – Maheep
Có thể trùng lặp: http://stackoverflow.com/questions/4414471/initialize-vs-constructor-method-proper-usage-on-object-creation –