Trong các ngôn ngữ tĩnh như Java / C #, tôi thường sử dụng các hằng số cho chuỗi hoặc số, thay vì chỉ chèn chúng vào mã. Tuy nhiên, tôi có xu hướng tránh thực hành này trong JavaScript. Gần đây, vì một số lập trình viên khác xung quanh tôi đã thực hiện phương pháp này trong JS, tôi quyết định có lẽ tôi nên củng cố lý lẽ của tôi hoặc của họ.
Không có cú pháp khai báo "const" thực tế trong JavaScript. Chúng tôi thường chỉ giải quyết cho một chính sách không chính thức về việc không thay đổi thuộc tính chữ hoa. Nhưng ý kiến của tôi thường là tránh chúng hoàn toàn, bởi vì hầu hết các lợi ích của chúng bị mất trong JavaScript. Trong Java, một chuỗi sai chính tả sẽ khiến chương trình bị lỗi khi bạn cố chạy nó, tại thời điểm đó bạn sửa nó và tiếp tục. Có một trình kiểm tra tĩnh trong đó cả hai trường hợp đều trỏ đến cùng một hằng số sẽ loại bỏ vấn đề đó, vì nó có thể được tìm thấy tại thời gian biên dịch. Nhưng JavaScript đơn giản sẽ có vấn đề đó ở mọi nơi, vì bạn LUÔN sẽ khám phá tính đúng chính tả của bạn trong thời gian chạy :
Library = { doThing: function() }
setTimeout(function()
Liberry.doThing()
// No such object: Liberry
}, 0);
Cách bảo vệ tốt nhất chống lại điều này, thông thường, là "sử dụng nghiêm ngặt". Đối với các nhà phát triển thích nó, tôi ổn với họ bằng cách sử dụng điều đó để tìm ra các vấn đề với các biến không được khai báo nhanh hơn. Nhưng ý kiến của tôi là việc cung cấp các hằng chuỗi cho API REST, v.v., không thực sự bảo vệ bạn trước mọi thứ. Một vi dụ khac:
CompanyAPI.constants.ENROLL_URL = "/rest/enroll";
CompanyAPI.constants.FIRST_NAME = "firstName";
ajax({url: CompanyAPI.constants.ENROLL_URL,
data: CompanyAPI.constants.FIRST_NAME
});
// vs.
ajax({url: "/rest/enroll",
data: "firstName"
});
... Bạn có nghĩa là viết ở trên, nhưng sau đó đã mắc lỗi chính tả. Rất tiếc.
ajax({url: CompanyAPI.constants.ENROL_URL,
data: CompanyAPI.constants.FIRS_NAME
});
// vs.
ajax({url: "/rest/enrol",
data: "firsName"
});
Cái dựa trên hằng số vẫn sẽ cung cấp không xác định , trong khi "FirsName" thì không tốt hơn. Cuối cùng, tôi có xu hướng chỉ xem đây là một lợi ích của ngôn ngữ tĩnh và không bận tâm đến việc có một hệ thống để sửa nó (bên cạnh đó có thể bắt đầu sử dụng "sử dụng nghiêm ngặt" để gỡ lỗi). Một số người khác có thể cho tôi biết thực hành ưa thích của họ đối với hằng số chuỗi / số nguyên là gì không?
EDIT: Để làm rõ, sở thích của tôi thường là đặt các chuỗi như "FirstName" trực tiếp nội tuyến mà không có khai báo liên tục cấp cao nhất - các hình phạt cho việc viết sai chính tả cũng giống như vậy. Các chuỗi có thể dài, như URL REST, tôi sẽ có xu hướng xác định ở đầu tệp.
FIRST_NAME
đặc biệt khiến tôi băn khoăn - nó không thay đổi trên mỗi người dùng?
FIRST_NAME
? Có vẻ như nó đến từ một thứ gì đó phía máy chủ và được truyền vào javascript. Và điều đó kết hợp với việc bạn nói rằng bạn đến từ Java / C #, tôi có cảm giác bạn đang đọc sai các biến này để làm gì: Tách dữ liệu khỏi mã, để.js
trình duyệt có thể được lưu vào bộ nhớ cache ...