Tôi đang thảo luận với đồng nghiệp về việc một nhà xây dựng có thể làm được bao nhiêu công việc. Tôi có một lớp, B mà bên trong yêu cầu một đối tượng khác A. Đối tượng A là một trong số ít thành viên mà lớp B cần để thực hiện công việc của mình. Tất cả các phương thức công khai của nó phụ thuộc vào đối tượng bên trong A. Thông tin về đối tượng A được lưu trữ trong DB vì vậy tôi cố gắng xác thực và lấy nó bằng cách tìm kiếm nó trên DB trong hàm tạo. Đồng nghiệp của tôi đã chỉ ra rằng hàm tạo không nên thực hiện nhiều công việc khác ngoài việc nắm bắt các tham số của hàm tạo. Vì tất cả các phương thức công khai sẽ thất bại nếu không tìm thấy đối tượng A bằng cách sử dụng các đầu vào cho hàm tạo, tôi lập luận rằng thay vì cho phép một cá thể được tạo và sau đó thất bại, tốt hơn là nên ném sớm vào hàm tạo.
Người khác nghĩ gì? Tôi đang sử dụng C # nếu điều đó làm cho bất kỳ sự khác biệt.
Đọc Có bao giờ có lý do để thực hiện tất cả công việc của một đối tượng trong một hàm tạo không? Tôi tự hỏi tìm nạp đối tượng A bằng cách truy cập DB là một phần của "bất kỳ khởi tạo nào khác cần thiết để làm cho đối tượng sẵn sàng sử dụng" bởi vì nếu người dùng chuyển sai giá trị cho hàm tạo, tôi sẽ không thể sử dụng bất kỳ phương thức công khai nào của nó.
Các nhà xây dựng nên khởi tạo các trường của một đối tượng và thực hiện bất kỳ khởi tạo nào khác cần thiết để làm cho đối tượng sẵn sàng sử dụng. Điều này thường có nghĩa là các nhà xây dựng là nhỏ, nhưng có những kịch bản trong đó đây sẽ là một khối lượng công việc đáng kể.