이름에서 알 수 있듯이 변수는 시간에 따라 다릅니다. 변화가 없다면 "손실 없음"이 있습니다. 값이 변경되지 않는다고 컴파일러에 알리면 컴파일러는 값을 직접 인라인하고 스택 상에 상수를위한 공간을 할당하지 않는 등의 최적화를 수행 할 수 있습니다.
그러나 컴파일러에서 값이 설정되면 올바르게 변경되는지 정확하게 판단 할 수있는 것은 아닙니다. 컴파일러가 100 % 신뢰도로이를 결정할 수없는 상황에서는 컴파일러가 안전 측면에서 오류를 범하고 변경 될 수 있다고 가정합니다. 이로 인해 인라인을 피하고 특정 루프를 최적화하지 않고 병렬 처리에 익숙하지 않은 객체 코드를 작성하는 등 다양한 성능 영향을 미칠 수 있습니다.
가독성도 중요하므로 가능하면 명시 적 상수를 사용하고 실제로 변경할 수있는 변수는 남겨 두어야합니다.
상수 리터럴 숫자 사용하는 이유에
:
1) 그것은 코드를 읽기 수 있습니다. 3.14가 무엇인지는 누구나 알고있다. (잘하면), 모두가 3.07이 PA의 소득 세율이라는 것을 아는 것은 아니다. 이것은 도메인 별 지식의 예이며 앞으로 귀하의 코드를 관리하는 모든 사람 (예 : 세금 소프트웨어)이 알 수있는 것은 아닙니다.
2) 변경하면 작업이 저장됩니다. 장래에 세율이 바뀌면 3.07에서 3.18로 변경됩니다. 항상 변경 사항을 최소화하고 이상적으로 단일 변경을 원합니다. 보다 많은 동시 변경이 이루어질수록 무언가를 잊어 버릴 위험이 높아져 오류가 발생합니다.
3) 위험한 오류는 피하십시오. 소득 세율이 3.05 인 두 주와 그 중 하나가 3.18로 변경되고 다른 하나는 3.07로 변경된다고 상상해보십시오. 그냥 가서 바꾸면 심각한 오류가 발생할 수 있습니다. 물론 많은 정수 또는 문자열 상수 값이 "3.07"보다 일반적입니다. 예를 들어, 숫자 7은 요일의 숫자와 다른 것을 나타낼 수 있습니다. 대규모 프로그램에서는 각 리터럴 값의 의미를 파악하는 것이 매우 어렵습니다.
4) 문자열 텍스트의 경우 문자열에 기호 이름을 사용하여 여러 언어를 지원하는 경우 문자열 풀이 빨리 바뀔 수 있습니다.
변수 및 "상수 변수"외에도 열거 형 언어도 있습니다. 열거 형은 실제로 작은 상수 그룹 (예 : 반환 값)에 대한 유형을 정의 할 수 있으므로 유형을 사용하면 유형 안전성을 제공합니다.
예를 들어, 요일 및 월에 대한 열거 형이있는 경우 하루에 한 달을 지정하면 경고 메시지가 표시됩니다. 정수 상수 만 사용하면 3 일이 3 일에 할당되면 아무 경고도 표시되지 않습니다. 항상 유형 안정성이 필요하므로 가독성이 향상됩니다. 또한 열거 형은 순서를 정의하는 데 더 좋습니다. 상상해보십시오. 요일에 대한 상수가 있다고 상상해보십시오. 이제 일요일이 아닌 월요일에 주를 시작하겠습니다.
출처
2010-06-01 21:50:23
Uri
고정 길이 저장 : 다음 문서 중 하나를 읽을 무료 새로운 배열로 최악의 경우 복사가 작동하는 곳 –
이 질문에는 단 하나의 반대 예가 필요합니다. 왜 PI를 가변으로 만드시겠습니까? –
@ 한스 패전트 : Pi는 상수입니까? 지금까지 지구의 근접에서만 측정되었습니다. 시공간 연속성을 통해 일정하다는 것이 확실합니까? –