Sau nhiều năm viết mã cao bồi, tôi quyết định chọn một cuốn sách về cách viết mã chất lượng tốt. Tôi đang đọc Clean Code của Robert Cecil Martin. Trong chương 3 (chức năng) có một phần về chức năng dyadic. Đây là một đoạn trích từ cuốn sách.
Ngay cả các chức năng dyadic rõ ràng như
assertEquals(expected, actual)
là có vấn đề. Đã bao nhiêu lần bạn đặt thực tế nơi dự kiến sẽ được? Hai đối số không có trật tự tự nhiên. Thứ tự dự kiến, thực tế là một quy ước đòi hỏi phải thực hành để học hỏi.
Tác giả làm cho một điểm hấp dẫn. Tôi làm việc trong máy học và bắt gặp điều này mọi lúc. Ví dụ: tất cả các hàm số liệu trong thư viện sklearn (có thể là thư viện python được sử dụng nhiều nhất trong trường) yêu cầu bạn phải cẩn thận về thứ tự của các đầu vào. Như một ví dụ sklearn.metrics.homogeneity_score lấy làm đầu vào labels_true
và labels_pred
. Những gì chức năng này không quá liên quan, những gì có liên quan là nếu bạn chuyển đổi thứ tự của các đầu vào, sẽ không có lỗi nào được đưa ra. Trong thực tế, việc chuyển đổi các đầu vào tương đương với việc sử dụng một chức năng khác trong thư viện.
Tuy nhiên, cuốn sách không nói rằng một sửa chữa hợp lý cho các chức năng như assertEquals
. Tôi không thể nghĩ ra cách khắc phục cho assertEquals
hoặc cho các chức năng mà tôi thường gặp như cách mô tả ở trên. Thực hành tốt để giải quyết vấn đề này là gì?