Khi tôi có một hàm có thể, hoặc có thể không nhận được một tham số nào đó, tốt hơn là quá tải hàm hoặc thêm các đối số tùy chọn?
Nếu mỗi người có những thăng trầm - khi nào tôi sẽ sử dụng từng?
Khi tôi có một hàm có thể, hoặc có thể không nhận được một tham số nào đó, tốt hơn là quá tải hàm hoặc thêm các đối số tùy chọn?
Nếu mỗi người có những thăng trầm - khi nào tôi sẽ sử dụng từng?
Câu trả lời:
Nếu ngôn ngữ hỗ trợ chúng đúng cách (ví dụ: an toàn loại, nếu có), tôi muốn sử dụng các đối số tùy chọn vì các lý do sau:
a
, b
và c
có những khả năng: không có gì, a, b, c, ab, ac, bc, abc. Nó 2^n
dành cho các loại khác nhau, không phảin!
Giả sử một loại tình huống của nhà xây dựng: Tôi thường chọn một mẫu xây dựng trôi chảy để ngăn chặn các tình huống có nhiều tùy chọn.
Ví dụ. Ordering.natural().onResultOf(function).reverse().compound(Ordering.natural().onResultOf(function2))
là một ví dụ về việc gọi một giao diện xây dựng thông thạo được triển khai trong Guava.
Tất nhiên bây giờ bạn cần một đối tượng riêng biệt để giữ trạng thái của trình tạo của bạn, nhưng bạn giảm độ phức tạp tổng thể bằng cách tách hành vi xây dựng khỏi hành vi của cấu trúc.