Mã của bạn được các nhà phát triển sử dụng như thế nào? Nói cách khác, chính xác họ làm gì để xác định nên sử dụng đối số nào và làm thế nào?
Nếu họ dựa vào tài liệu được tạo tự động từ mã của bạn và trình tạo không biết phải làm gì **kwargs
, thì đây thực sự là vấn đề. Thay vì tìm danh sách các đối số và ý nghĩa của chúng trong tài liệu, chúng hoàn toàn không có thông tin nào ngoại trừ việc mơ hồ, nó cần một số đối số.
Vấn đề này có thể được giải quyết bằng cách ghi lại phương pháp theo cách thủ công, thay thế tài liệu được tạo tự động. Điều này đòi hỏi công việc bổ sung từ người thực hiện phương thức, nhưng hãy nhớ rằng, mã (và tài liệu của nó) được đọc thường xuyên hơn nhiều so với nó được viết.
Nếu mã là tài liệu của họ, các nhà phát triển sử dụng phương thức **kwargs
cần hai bước bổ sung: họ không chỉ cần nhìn vào chữ ký của phương thức mà còn cả việc triển khai thực tế của nó, để tìm phương thức khác mà nó thực sự gọi. Sau đó, họ cần phải đi đến phương pháp khác này để cuối cùng tìm thấy những gì họ đang tìm kiếm.
Điều này không liên quan đến nhiều nỗ lực, nhưng vẫn vậy, nỗ lực nên được lặp đi lặp lại nhiều lần. Điều tồi tệ nhất là bạn không thể giúp họ bằng cách thêm tài liệu: nếu bạn nhận xét phương pháp của mình, liệt kê các đối số thực tế, có một rủi ro lớn là phiên bản tiếp theo của thư viện mà các cuộc gọi phương thức của bạn sẽ có các đối số khác nhau và tài liệu của bạn sẽ đã lỗi thời, vì không ai sẽ nhớ rằng nó cần được cập nhật.
Đề nghị của tôi là chỉ dựa vào **kwargs
các phương pháp có phạm vi giảm. Các phương thức riêng tư (và riêng tư trong ngữ cảnh của Python, ý tôi là các phương thức bắt đầu bằng _
) được sử dụng ở một vài nơi trong lớp là những ứng cử viên tốt, chẳng hạn. Mặt khác, các phương thức được sử dụng bởi hàng tá các lớp trên cơ sở mã là các ứng cử viên rất xấu.
Rốt cuộc, không nên mất quá nhiều nỗ lực để viết lại các đối số của một phương thức bạn gọi trong phương thức bạn viết. Hy vọng rằng, hầu hết các phương thức không mất hơn sáu đến tám đối số và nếu có, hãy tự hỏi liệu bạn có nên tái cấu trúc mã không. Trong tất cả trường hợp:
Làm cho các đối số rõ ràng trong phương thức của bạn không đòi hỏi nhiều nỗ lực,
Sau này, bạn có thể muốn xác thực các đối số (mặc dù nếu bạn chỉ dựa vào điểm này để làm cho các đối số rõ ràng, bạn đã vi phạm YAGNI).