Giả sử tôi có một chức năng IsAdmin
kiểm tra xem người dùng có phải là quản trị viên hay không. Chúng ta cũng nói rằng việc kiểm tra quản trị viên được thực hiện bằng cách khớp id người dùng, tên và mật khẩu với một số quy tắc (không quan trọng).
Trong đầu tôi có hai chữ ký chức năng có thể cho việc này:
public bool IsAdmin(User user);
public bool IsAdmin(int id, string name, string password);
Tôi thường đi loại chữ ký thứ hai, nghĩ rằng:
- Chữ ký hàm cung cấp cho người đọc nhiều thông tin hơn
- Logic chứa bên trong hàm không cần phải biết về
User
lớp - Nó thường dẫn đến ít mã hơn bên trong hàm
Tuy nhiên đôi khi tôi nghi ngờ cách tiếp cận này, và cũng nhận ra rằng đến một lúc nào đó nó sẽ trở nên khó sử dụng. Ví dụ, nếu một hàm sẽ ánh xạ giữa mười trường đối tượng khác nhau thành một bool kết quả thì rõ ràng tôi sẽ gửi trong toàn bộ đối tượng. Nhưng ngoài một ví dụ rõ ràng như thế, tôi không thể thấy lý do để vượt qua trong đối tượng thực tế.
Tôi sẽ đánh giá cao bất kỳ đối số cho một trong hai phong cách, cũng như bất kỳ quan sát chung nào bạn có thể cung cấp.
Tôi lập trình theo cả hai phong cách hướng đối tượng và chức năng, vì vậy câu hỏi nên được xem là liên quan đến bất kỳ và tất cả các thành ngữ.