Trước đây, tôi thường thực hiện hầu hết các thao tác đối tượng của mình trong phương thức chính mà nó được tạo / cập nhật, nhưng gần đây tôi thấy mình có một cách tiếp cận khác và tôi tò mò liệu đó có phải là một thực tiễn xấu.
Đây là một ví dụ. Giả sử tôi có một kho lưu trữ chấp nhận một User
thực thể, nhưng trước khi chèn thực thể đó, chúng tôi gọi một số phương thức để đảm bảo tất cả các trường của nó được đặt theo những gì chúng tôi muốn. Bây giờ, thay vì gọi các phương thức và thiết lập các giá trị trường từ bên trong phương thức Chèn, tôi gọi một loạt các phương thức chuẩn bị định hình đối tượng trước khi chèn.
Phương pháp cũ:
public void InsertUser(User user) {
user.Username = GenerateUsername(user);
user.Password = GeneratePassword(user);
context.Users.Add(user);
}
Phương pháp mới:
public void InsertUser(User user) {
SetUsername(user);
SetPassword(user);
context.Users.Add(user);
}
private void SetUsername(User user) {
var username = "random business logic";
user.Username = username;
}
private void SetPassword(User user) {
var password = "more business logic";
user.Password = password;
}
Về cơ bản, việc thực hành thiết lập giá trị của một tài sản từ một phương pháp khác có phải là một thực tiễn xấu?
user
được chuyển qua tham chiếu, mã có thể lấy nó ra khỏi tay người gọi và thay thế nó bằng cách đơn giản là nói, nói , user = null;
.