Khi làm việc, chúng tôi sử dụng jQuery. Ngay sau khi chúng tôi bắt đầu sử dụng nó, tôi thấy rằng một vài nhà phát triển đã thêm các hàm vào một tệp jquery-extensions.js. Bên trong, tôi tìm thấy một bó toàn bộ các phương thức được thêm vào $
về cơ bản là số tiền cho các phương thức tĩnh trên jQuery. Dưới đây là một vài ví dụ:
$.formatString(str, args) {
...
}
$.objectToArray(obj) {
...
}
vv Không ai trong số họ thực sự sử dụng bất cứ điều gì để làm với jQuery. Điều này làm tôi kinh ngạc.
Cuối cùng, chúng tôi cần một hàm trong thư viện của chúng tôi để bản địa hóa ngày tháng. Giải pháp của tôi là tạo ra:
Date.prototype.toLocaleDate = function() {
...
}
Date.parseLocalDate = function() {
...
}
Ngay sau khi làm điều này, tôi nhận được một nhà phát triển Sr sắp tới chỗ tôi hỏi tôi những gì tôi nghĩ tôi đang làm. Anh ấy nói với tôi rằng ở đây, nơi tôi làm việc, chúng tôi không tạo ra nguyên mẫu vì chúng là ác. Lý do duy nhất ông đưa ra là họ về cơ bản là một tính năng ngôn ngữ nghèo bởi vì họ "có thể bị lạm dụng" và rằng nó khó hiểu để xem nguyên mẫu (ví dụ như làm thế nào để tôi biết Date mới(). ToLocaleDate() là một nguyên mẫu và không phải bản địa ECMAScript). Bằng cách sử dụng $.formatString(...)
thay vì "blah blah".formatString(...)
, chúng tôi lưu ý rằng bất kỳ điều gì có $ đều không phải là một phần của JavaScript gốc.
Những lý do có vẻ hơi ngớ ngẩn, nhưng tôi đề nghị một thỏa hiệp để anh không phải nhớ dù một phương pháp là một nguyên mẫu — tiền tố tên hàm nguyên mẫu với $
:
String.prototype.$format = function() {
...
}
"blah blah".$format(...);
này đã nhanh chóng bị sa thải và bây giờ tôi phải thêm các hàm $ .myPrototypeAsAFauxStaticMethodOnjQuery() này ở mọi nơi.
Tôi có phải là người duy nhất nghĩ rằng thực hành này là ngu ngốc không?
Họ chỉ muốn '$', nếu bạn bị trôi dạt. – BoltClock
"Tôi là người duy nhất nghĩ rằng thực hành này là ngu ngốc?" Không. Nhưng ... ** làm ** biến nó thành Wiki Cộng đồng hoặc nó sẽ bị đóng. Tốt hơn, hãy hỏi điều này trên http://programmers.stackexchange.com –
@Kirk Woll: yêu cầu đại diện cho việc tạo bài đăng của riêng CW là gì? (Tôi biết 100 là cần thiết để chỉnh sửa bài viết CW khác.) – BoltClock