Câu trả lời muộn, nhưng tôi nghĩ rằng nó thêm một cái gì đó mới cho chủ đề này.
Không có câu trả lời trước đã trả lời câu hỏi ban đầu. Một số đã cố gắng biện minh cho việc thiếu hằng số, trong khi những người khác đã chỉ ra những cách mà chúng ta có thể đối phó với việc thiếu hằng số. Nhưng không ai đưa ra một lời biện minh thuyết phục cho lợi ích của hằng số, vì vậy sự thiếu sót của nó vẫn chưa được giải thích chính xác.
Một hằng số sẽ hữu ích vì nó sẽ ngăn các lỗi mã nhất định không được chú ý.
Giả sử bạn có một cơ sở mã lớn với hàng trăm tham chiếu đến "". Ai đó sửa đổi một trong những điều này trong khi cuộn qua mã và thay đổi nó thành "". Một sự thay đổi như vậy sẽ có khả năng cao không được chú ý vào sản xuất, tại thời điểm đó nó có thể gây ra một số vấn đề mà nguồn của nó sẽ khó phát hiện.
OTOH, hằng số thư viện có tên EMPTY, nếu có cùng lỗi, sẽ tạo ra lỗi trình biên dịch cho một cái gì đó như EM PTY.
Xác định hằng số của riêng bạn vẫn tốt hơn. Ai đó vẫn có thể thay đổi khởi tạo do nhầm lẫn, nhưng do sử dụng rộng rãi, tác động của lỗi như vậy sẽ khó được chú ý hơn nhiều so với lỗi trong một trường hợp sử dụng.
Đây là một trong những lợi ích chung mà bạn nhận được từ việc sử dụng hằng số thay vì giá trị theo nghĩa đen. Mọi người thường nhận ra rằng việc sử dụng hằng số cho một giá trị được sử dụng ở hàng chục nơi cho phép bạn dễ dàng cập nhật giá trị đó chỉ trong một nơi. Điều ít được thừa nhận là điều này cũng ngăn giá trị đó vô tình bị sửa đổi, bởi vì một thay đổi như vậy sẽ hiển thị ở mọi nơi. Vì vậy, vâng, "" ngắn hơn EMPTY, nhưng EMPTY an toàn hơn khi sử dụng so với "".
Vì vậy, quay trở lại câu hỏi ban đầu, chúng ta chỉ có thể suy đoán rằng các nhà thiết kế ngôn ngữ có thể không nhận thức được lợi ích này của việc cung cấp các hằng số cho các giá trị theo nghĩa đen thường được sử dụng. Hy vọng rằng, một ngày nào đó chúng ta sẽ thấy các hằng chuỗi được thêm vào trong Java.
outputBlah = ""
, và anh ấy có lẽ cũng thíchsomething == String.Empty
hơnsomething.Length > 0
(bạn bỏ qua một kiểm tra null.)