본문 바로가기

C# 코딩 기초

C# 기초 05.1 – 상수(Const)

안녕하세요. 다시 시작하는 "투명 나비" 입니다

 

전 포스팅에서는 변수(Variable)에 대해 배웠습니다. 

변수는 정보를 담을 수 있고, 그 정의는 “변하는 수“입니다.

이것만 기억하셔도 좋을 것 같습니다.

 

이번 포스팅에서는 변수의 단점을 보완하는 방법인 상수(const)에 대해서 자세히 알아보겠습니다.

상수는 변하지 않는 수(정보)입니다.


상수(const) 기초

상수는 변수와 매우 비슷하지만, 한번 값을 넣으면 변하지 않는 특징을 가지고 있습니다.

변수처럼 정보를 담고, 상수이름을 씁니다.

 

상수를 사용하는 이유도 변수와 같이 내가 원하는 데이터(information)를 계속 사용함인데,그 데이터(정보)는 변하지 말아야 할 때 씁니다. 예로 생일이나 파이(π) 같이 "변하지 않는 정보들"을 저장할 때 사용됩니다.


상수의 기본 형태

상수는 변수와 같이 선언과 초기화를 사용하는데, 이때 키워드(Keyword)를 사용합니다.

 

키워드는 const입니다.

변수 동일한 형식에, 앞에 const(키워드)를 추가하면 됩니다.

이런 방식으로 설명하는게 맞는지?, 아니면 그냥 Keyword 쓰는 방식인지 아직 정확하게 몰라, 그렇게 볼수도 있구나 정도로만 이해해주시면 감사하겠습니다.


상수의 사용법

상수의 사용은 단순한 고정값 관리를 넘어, 설정값이나 환경 변수프로그램 전반에 걸쳐 일관된 값을 유지해야 할 경우에도 유용합니다. 예를 들어, 애플리케이션에서 사용하는 기본 폰트 사이즈색상 코드 등을 상수로 정의할 수 있습니다.

 

코드 예시:

const double DEFAULT_FONT_SIZE = 12.0;

const string PRIMARY_COLOR_HEX = "#3498DB";

 

이렇게 하면 디자인 가이드라인이 변경되어도 상수 값을 수정하는 것으로 전체 애플리케이션에 적용할 수 있습니다.

 

 

또한, 상수를 사용할 때는 값의 의미가 명확하고, 프로그램 실행 중에 변경될 이유가 전혀 없는 데이터에 한해 사용해야 합니다.

웹 개발에서 상수를 사용하여 HTTP 상태 코드를 관리하는 것은 매우 유용합니다. 이렇게 하면 코드 내에서 직관적으로 상태 코드의 의미를 이해할 수 있고, 실수로 잘못된 코드를 사용하는 것을 방지할 수 있습니다.

코드 예시:

const int STATUS_OK = 200;

const int STATUS_NOT_FOUND = 404;


상수를 사용할 때는 값의 의미가 명확하고, 프로그램 실행 중에 변경될 이유가 전혀 없는 데이터에 한해 사용해야 합니다.

 

상수는 시스템에서 사용하는 기본 경로파일 확장자와 같은 정보를 저장하는 데에도 사용될 수 있습니다. 이렇게 하면 시스템의 기본 설정이 중앙에서 관리되어, 필요 시 쉽게 수정할 수 있습니다.

코드 예시:

const string LOG_FILE_DIRECTORY = "/logs/";

const string CONFIG_FILE_EXTENSION = ".cfg";


이러한 방식은 시스템의 기본 설정을 변경해야 할 때 한 곳에서만 변경하면 되므로, 유지보수성이 크게 향상됩니다.


컴퓨터 내부에서 벌어지는일

상수의 경우 변수와의 다른 차이점을 머신레벨에서 이해하기 위해선,

프로그램 실행 순서에 따른 메모리 값의 할당, 그것들의 의미를 알아야 쉽게 이해할 수 있습니다. 

 

이번 포스팅는 const에 대해 살짝 훝고가기 때문에, 이후 이것을에 대해 설명하는 포스팅을 업로드 하겠습니다.

 

간략히 접근범위와 상수와 변수의 수명차이 등을 알아야 합니다.

 


(잡담 : 개인적인 사용법)

저는 const를 잘 사용하지 않고 있습니다. 물론 필요할때 쓰지만 static을 더 자주 사용하는 거 같습니다.

예전부터 혼자 개발을 많이 해서, 변수를 코딩하고, 그냥 상수처럼 쓰고 있습니다. 그러나 접근성의 문제가 발생시  static을 써서, 모든 클래스에서 사용합니다. 그리고 변하지 않아야 할 정보들은 제가 바꾸지 않기 때문에 아직까지 크게 문제는 없습니다만, 스택오버플로우(static overflow) 같이 코드 커뮤니티에서 다른 사람이 쓴 코드를 읽고 사용할 때, 이런 사소한 키워드를 정확히 몰라 개발에 살짝? 어려움이 있기는 합니다. 하지만 노가다....로 고쳐서 일단 넘어갑니다.(코딩으로 돈벌기 위해서 매우 않좋은 습관입니다. 절대로 저 처럼 개발하면 안됩니다.) 


상수의 장점

개발의 측면에서 상수를 사용함으로써 유지보수성이 크게 오라갑니다.

"변하지 않는 정보"란, 많은 곳에서 해당 정보가 필요한 경우에 더욱 빛을 바랍니다.

시스템의 설정 처럼, 설정 완료시에 해당 설정을 값으로 받는 코드들이 전부 변경된 값으로 동시에 작동하기 때문에, 여려기능을 동시에 변경할 수 있습니다. 

 

상수의 단점

변수와 같이 장점이 단점입니다. 데이터가 변하지 않기 때문에, 기준으로써 사용할수 있으나, 변수처럼 다양한 곳에 적용하지 못하는 점이 단점입니다. 하지만 이러한 부분은 개발시 변수와 상수를 같이 쓰기 때문에 서로 보완하여, 단점을 최소화 하여 개발할수 있습니다.


번외 : 이름 잘짓기

전 포스팅인 변수에도 설명했듯이, 가독성을 위해 이름도 잘 지어야 합니다.

제가 배운 상수이름 짓는 방법은 대문자만 쓰는 겁니다.

const int STATUS_OK = 200;          //상태 : 양호(이상없음)
const int STATUS_NOT_FOUND = 404;  // 상태 : 문제있음(해당 내용을 찾지 못함)

 

이렇게 정리하면 코드 이름의 형태만 봐도, 어떤 역할을 하는지, 상수인지 정적인지 매개변수인지 등 알고 사용할 수 있습니다. 추후에 c#코드 가이드라인에 대해 포스팅 하겠습니다.


투명나비의 후기

 

이번 포스팅도 저번보다 빠른 3시간 만에 작업했네요!!!

아직 더욱 빨라지고 싶습니다. 자료 정리하는거 너무 귀차.. 힘드네요..

만세!!! 그러나 그 3시간을 일하기 위해서, 너무 많은 시간을 그냥 보내버렸네요...

그래서 일정보다도 늦게 올리고, 작심삼일인가봅니다...

그래도 다음에는 더 잘만들꺼라 생각하고 넘어가야겠습니다.

 

다음 포스팅부터는 이렇게 저장한 정보들을 어떻게 가공하는지에 대해 알아볼 예정입니다.

먼저 사칙연산 같은 간단한 연산자(Operator)부터 포스팅 하겠습니다.

 

인터넷에서 여러 자료를 참고해서 제 입맛 데로 만들었기 때문에, 누락된 부분이나, 간략하게 설명한 부분도 있습니다.

만약 틀린 부분이나 추가해야 하는 부분을 알려주시면 빠르게 수정하겠습니다.

(물론 응원 댓글?은 더욱 좋아합니다.ㅎㅎㅎ)


참고 

   - 없음