Giả sử bạn có các hàm có số lượng tham số tùy chọn ngày càng tăng (và ngôn ngữ giả không cho phép tham số tùy chọn và số lượng tham số tùy ý) như sau:
function doStuff(Param a)
function doStuff(Param a, Param b)
function doStuff(Param a, Param b, Param c)
Một cách tốt để thống nhất chúng với một cuộc gọi là gì? Tôi có thể tưởng tượng hai thiết kế:
Rơi qua mọi thứ:
function doStuff(Param a)
doStuff(a, defaultB)
function doStuff(Param a, Param b)
doStuff(a, b, defaultC)
function doStuff(Param a, Param b, Param c)
// magic goes here
- Ưu điểm: Không trùng lặp nhiều mã, dễ dàng thay đổi một tham số mặc định.
- Nhược điểm: Nhiều lệnh gọi hàm, có thể khiến Stacktraces khó đọc hơn hoặc vô dụng.
Hoặc gọi trực tiếp chức năng 'cuối cùng':
function doStuff(Param a)
doStuff(a, defaultB, defaultC)
function doStuff(Param a, Param b)
doStuff(a, b, defaultC)
function doStuff(Param a, Param b, Param c)
// magic goes here
- Ưu điểm: Không có nhiều chức năng gọi, không phải lo lắng nếu một chức năng mới được thêm vào chuỗi.
- Nhược điểm: Sao chép nhiều mã, đặc biệt là các giá trị mặc định.
Tôi đã không nghĩ gì?
avàbhay không), nhưng người đầu tiên vẫn thắng để giảm thiểu sự trùng lặp lỗi. BTW, lỗi đánh máy: Việc thực hiện quá tải giữa phải giống hệt nhau giữa các ví dụ.