Không, không có hướng dẫn tiêu chuẩn
Nhưng có một số kỹ thuật có thể làm cho một hàm với nhiều tham số dễ chịu hơn.
Bạn có thể sử dụng tham số list-if-args (args *) hoặc tham số dictionary-of-args (kwargs **
)
Chẳng hạn, trong python:
// Example definition
def example_function(normalParam, args*, kwargs**):
for i in args:
print 'args' + i + ': ' + args[i]
for key in kwargs:
print 'keyword: %s: %s' % (key, kwargs[key])
somevar = kwargs.get('somevar','found')
missingvar = kwargs.get('somevar','missing')
print somevar
print missingvar
// Example usage
example_function('normal parameter', 'args1', args2,
somevar='value', missingvar='novalue')
Đầu ra:
args1
args2
somevar:value
someothervar:novalue
value
missing
Hoặc bạn có thể sử dụng cú pháp định nghĩa bằng chữ
Ví dụ: đây là lệnh gọi JavaScript jQuery để khởi chạy yêu cầu AJAX GET:
$.ajax({
type: 'GET',
url: 'http://someurl.com/feed',
data: data,
success: success(),
error: error(),
complete: complete(),
dataType: 'jsonp'
});
Nếu bạn xem lớp ajax của jQuery, có rất nhiều (khoảng 30) thuộc tính khác có thể được đặt; chủ yếu là vì truyền thông ajax rất phức tạp. May mắn thay, cú pháp đối tượng làm cho cuộc sống dễ dàng.
C # intellisense cung cấp tài liệu tham số tích cực cho các tham số để không thấy các sắp xếp quá phức tạp của các phương thức quá tải.
Các ngôn ngữ được gõ động như python / javascript không có khả năng như vậy, do đó, rất phổ biến để xem các đối số từ khóa và định nghĩa nghĩa đen của đối tượng.
Tôi thích các định nghĩa bằng chữ của đối tượng ( ngay cả trong C # ) để quản lý các phương thức phức tạp vì bạn có thể thấy rõ các thuộc tính nào đang được đặt khi một đối tượng được khởi tạo. Bạn sẽ phải làm thêm một chút công việc để xử lý các đối số mặc định nhưng về lâu dài mã của bạn sẽ dễ đọc hơn rất nhiều. Với các định nghĩa theo nghĩa đen của đối tượng, bạn có thể phá vỡ sự phụ thuộc vào tài liệu để hiểu mã của bạn đang làm gì ngay từ cái nhìn đầu tiên.
IMHO, phương pháp quá tải được đánh giá cao.
Lưu ý: Nếu tôi nhớ điều khiển truy cập chỉ đọc đúng sẽ hoạt động cho các hàm tạo đối tượng theo nghĩa đen trong C #. Về cơ bản chúng hoạt động giống như cài đặt các thuộc tính trong hàm tạo.
Nếu bạn chưa bao giờ viết bất kỳ mã không tầm thường nào bằng ngôn ngữ dựa trên javaScript được gõ động (python) và / hoặc chức năng / nguyên mẫu, tôi khuyên bạn nên dùng thử. Nó có thể là một kinh nghiệm khai sáng.
Điều đáng sợ trước tiên là phá vỡ sự phụ thuộc của bạn vào các tham số cho cách tiếp cận cuối cùng, tất cả để khởi tạo chức năng / phương thức nhưng bạn sẽ học được nhiều hơn nữa với mã của mình mà không phải thêm độ phức tạp không cần thiết.
Cập nhật:
Tôi có lẽ nên cung cấp các ví dụ để chứng minh việc sử dụng ngôn ngữ được nhập tĩnh nhưng hiện tại tôi không suy nghĩ trong ngữ cảnh được nhập tĩnh. Về cơ bản, tôi đã làm quá nhiều việc trong bối cảnh được gõ động để đột nhiên chuyển trở lại.
Những gì tôi làm biết là đối tượng cú pháp định nghĩa đen là hoàn toàn có thể bằng các ngôn ngữ tĩnh đánh máy (ít nhất là trong C # và Java) bởi vì tôi đã sử dụng chúng trước. Trong các ngôn ngữ được nhập tĩnh, chúng được gọi là 'Đối tượng khởi tạo'. Dưới đây là một số liên kết để hiển thị việc sử dụng chúng trong Java và C # .