Biến, như bạn có thể đoán từ tên, thay đổi theo thời gian. Nếu nó không thay đổi, có "không mất". Khi bạn nói với trình biên dịch rằng giá trị sẽ không thay đổi, trình biên dịch có thể thực hiện một loạt các tối ưu hóa, như trực tiếp nội tuyến giá trị và không bao giờ phân bổ bất kỳ không gian nào cho hằng số trên ngăn xếp.
Tuy nhiên, bạn không thể luôn dựa vào trình biên dịch đủ thông minh để có thể xác định chính xác liệu giá trị có thay đổi sau khi được đặt hay không. Trong mọi tình huống mà trình biên dịch không có khả năng xác định điều này với độ tin cậy 100%, trình biên dịch sẽ sai về mặt an toàn và giả sử nó có thể thay đổi. Điều này có thể dẫn đến các tác động hiệu suất khác nhau như tránh nội tuyến, không tối ưu hóa các vòng nhất định, tạo mã đối tượng không thân thiện với nhau.
Vì điều này, và vì khả năng đọc cũng rất quan trọng, nên cố gắng sử dụng hằng số rõ ràng bất cứ khi nào có thể và để biến cho những thứ thực sự có thể thay đổi.
Vì sao các hằng số được sử dụng thay cho các số theo nghĩa đen:
1) Làm cho mã dễ đọc hơn. Mọi người đều biết 3.14 là gì (hy vọng), không phải ai cũng biết rằng 3.07 là mức thuế thu nhập trong PA. Đây là một ví dụ về kiến thức về miền cụ thể và không phải ai cũng duy trì mã của bạn trong tương lai (ví dụ: phần mềm thuế) sẽ biết điều đó.
2) Nó tiết kiệm công việc khi bạn thực hiện thay đổi. Đi và thay đổi mỗi 3,07 đến 3,18 nếu thuế suất thay đổi trong tương lai sẽ gây phiền nhiễu. Bạn luôn muốn giảm thiểu các thay đổi và lý tưởng thực hiện một thay đổi duy nhất. Những thay đổi đồng thời hơn bạn phải thực hiện, nguy cơ cao hơn mà bạn sẽ quên một cái gì đó, dẫn đến lỗi.
3) Bạn tránh được các lỗi nguy hiểm. Hãy tưởng tượng rằng có hai tiểu bang có thuế suất thuế thu nhập là 3,05, và sau đó một trong số đó thay đổi thành 3,18 trong khi tiểu bang khác ở mức 3,07. Bởi chỉ cần đi và thay thế, bạn có thể kết thúc với các lỗi nghiêm trọng. Tất nhiên, nhiều giá trị hằng số nguyên hoặc chuỗi thường phổ biến hơn "3.07". Ví dụ: số 7 có thể biểu thị số ngày trong tuần và một số ngày khác. Trong các chương trình lớn, rất khó để xác định ý nghĩa của từng giá trị theo nghĩa đen.
4) Trong trường hợp chuỗi văn bản, thông thường sử dụng tên biểu tượng cho chuỗi để cho phép các nhóm chuỗi thay đổi nhanh chóng trong trường hợp hỗ trợ nhiều ngôn ngữ.
Lưu ý rằng ngoài các biến và "biến số không đổi", cũng có một số ngôn ngữ có liệt kê. Một điều tra thực sự cho phép bạn định nghĩa một kiểu cho một nhóm nhỏ các hằng số (ví dụ, các giá trị trả về), do đó, sử dụng chúng sẽ cung cấp sự an toàn kiểu.
Ví dụ: nếu tôi có một điều tra cho các ngày trong tuần và trong các tháng, tôi sẽ được cảnh báo nếu tôi chỉ định một tháng vào một ngày. Nếu tôi chỉ sử dụng hằng số nguyên, sẽ không có cảnh báo khi ngày 3 được gán cho tháng 3. Bạn luôn muốn loại an toàn, và nó cải thiện khả năng đọc. Enumerations cũng tốt hơn để xác định thứ tự. Hãy tưởng tượng rằng bạn có hằng số cho những ngày trong tuần, và bây giờ bạn muốn tuần của bạn bắt đầu vào thứ hai thay vì chủ nhật.
chiều dài cố định s bộ nhớ trường hợp xấu nhất sao chép vào mảng mới hoạt động –
Câu hỏi này chỉ yêu cầu một ví dụ phản đối: tại sao bạn sẽ biến PI thành một biến? –
@Hans Passant: Bạn có chắc Pi là hằng số không? Cho đến nay nó chỉ được đo ở gần Trái Đất. Bạn có chắc nó liên tục trong suốt thời gian không-thời gian? –