[C] 2. 올바른 이름을 적읍시다. <변수의 이름 규칙>
C | C++/C

[C] 2. 올바른 이름을 적읍시다. <변수의 이름 규칙>

Woon2World :: Programming & Art Life

 

이번 글은 지난 글에 비해 분량이 짧고 쉬어가는 글이 되겠군요.

변수의 이름 규칙만을 따로 포스팅하게 되었습니다.

다음 글은 외울 게 많을 예정입니다.

int, double, char 외에 더 다양한 자료형들을 살펴볼 거거든요.

폭풍전야의 고요함을 만끽하시기 바랍니다.

 

 

변수의 이름 작명에는 규칙이 있어서, 불가능한 이름들이 있습니다.



 

 

변수의 이름을 구성할 수 있는 문자들

 

변수의 작명에는 일반적으로 알파벳, 숫자, _(언더바)와 $(달러 기호)를 사용할 수 있습니다.

그러나 구현 환경에 따라서 더 다양한 문자들이 가능한데요.

우리가 쓰는 Visual Studio에서는 한글도 가능합니다.

그래도 가급적 알파벳, 숫자, 그리고 _(언더바)만 이용해주시기 바랍니다.

다들 모국어로 된 변수 이름을 사용하면, 나중에 자료를 찾을 때 인도네시아어 변수를 접하게 되고,

같이 협업하게 된 개발자가 아랍어 변수를 사용하는 광경을 목격하게 되실 겁니다.

그리고, 애초에 알파벳이 더 편한 부분이 있습니다.

프로그래밍 언어와 이질감이 없고, 이미 여러 코딩 관습이 알파벳과 밀착되어있기 때문입니다.

 

변수의 이름으로 불가능한 경우들

 

위에서 소개한 알파벳, 숫자, _(언더바)로 조합된 이름인데도 불구하고 변수의 이름으로 불가한 것들도 있습니다.

아래 두 가지 경우중 하나인데요.

  1. 프로그래밍 언어의 예약어(keyword)인 경우 ex) int, char, double, void, return
  2. 첫 글자가 숫자인 경우 ex) 1abc, 234567, 2022_anniversary, 7_7

이름이 예약어와 같은 경우에는 변수의 이름인지, 예약어인지 구분하기 어렵기 때문에 불가능하도록 되어있고,

첫 글자가 숫자인 경우에는 우리가 작성한 코드를 컴퓨터가 기계어로 번역하는 과정의 편의를 위해 불가능하도록 되어있습니다. (만약 가능하게 된다면 숫자로 시작하는 게 리터럴 상수인지 변수의 이름인지 구분하기 어렵고, 숫자의 뒤에 붙은 것이 접미사인지 이름의 일부분인지도 구분하기 어렵습니다. 아직은 몰라도 되는 이야기)

 

https://kin.naver.com/open100/detail.naver?d1id=1&dirId=1040101&docId=262720&qb=67OA7IiYIOydtOumhA==&enc=utf8&section=kin.ency&rank=1&search_sort=0&spq=0 

 

변수이름 첫글자에 숫자가 올 수 없는 이유

변수이름 첫글자에 숫자가 올 수 없는 이유를 써 놓은 것을 보았는데, 핵심을 놓치고 있는것 같아서 적어봅니다. 궁극적인 이유는 lexical analysis의 편의를 위해서입니다....

kin.naver.com

 

변수의 이름으로 가능한 예시들과 불가능한 예시들을 골라서 모아보겠습니다.

 

[가능한 예시]

  • num
  • Dog
  • _123
  • SoundComponent
  • sound_component
  • _is_smart_pointer
  • cake4you
  • anniversary_2022
  • Int
  • Return

[불가능한 예시]

  • 1abc
  • 234567
  • 2022_anniversary
  • 7_7
  • 2Handed
  • noexcept
  • ^iter
  • -num
  • int
  • return

^iter과 -num은 왜 불가능할까요?

예약어도 아니고 숫자로 시작하지도 않는데.

위에서 말씀드렸듯이, 변수의 이름에 허용되는 문자는 알파벳, 숫자, _(언더바), $(달러 기호) 뿐이기 때문에 그 외의 특수문자가 들어간 이름은 불가능합니다.

간혹 *를 붙이고서는, "이건 되는데요?" 하시는 분들이 있을 수 있어요.

축하드립니다. 포인터라고 불리는 무시무시한 친구를 선언하셨습니다.

어찌됐건, 변수의 이름 맨 앞에 이상한 특수문자를 붙일 일은 실제로 없으니,

  1. 프로그래밍 언어의 예약어(keyword)인 경우
  2. 첫 글자가 숫자인 경우

이 두 경우만 잘 기억해주시면 되겠습니다.

사실 이 두 경우도 잘 없을 겁니다.

 

실제로 확인해보기

 

이 과정, 이젠 별 다른 설명 없어도 할 수 있겠죠?

기존 소스를 현재 프로젝트에서 제거하고, 새로운 C 소스를 추가하는 과정입니다.

이름은 이번 글의 제목인 "2. 변수의 이름 규칙.c"라 지었습니다.

앞으론 이 과정도 여러분들이 알아서 하실 수 있으리라 믿고 글에 담지 않을 예정입니다.

 

#include <stdio.h>
 
int main()
{
    // [변수의 이름으로 불가능한 것들]
 
    /*
    int int;
    int return;
    int 1abc;
    int 7_7;
    int ^^;
    int -num;
    */
 
    // [변수의 이름으로 가능한 것들]
 
    int Int;
    int Return;
    int abc;
    int _;
    int anniversary_2022;
    int _1_;
 
    return 0;
}
cs

 

///**/는 주석 기호인데요.

코드나 알고리즘에 대한 설명, 함수 명세와 사용법, 간단한 메모 등을 적는 데에 사용합니다.

//는 한 줄 단위 주석으로, //의 오른쪽에 있는 내용을 주석 처리합니다.

/**/는 여러 줄 단위 주석으로, /*로 열고 */로 닫기 전까지의 내용을 주석 처리합니다.

주석으로 쓰인 내용은 실제 프로그램에 포함되지는 않습니다.

오로지 사용자의 편의를 위한 텍스트가 된다고 보시면 되겠습니다.

 

/* */로 주석 처리된 부분의 주석을 해제하면 (/*, */를 지우면)

해당 내용 전부 빨간 줄이 쳐지는 걸 볼 수 있을 겁니다.

처음엔 시뻘건 게 여러 개여서 손발이 덜덜 떨리고 심장이 두근댈 수도 있는데,

빨간 줄은 우리가 틀린 곳이 어딘지 확실하게 알려주는 좋은 친구이니 친해지실 필요가 있습니다.

마우스를 갖다 대면 설명을 해주죠.

그 부분만 고치면 바로 문제가 해결된다는 소리니, 어디서부터 잘못된 건지 모르는 상태보다 훨씬 좋습니다.

분명 짜증나긴 하지만 그래도 안 나오는 것보다는 나와줬으면 좋겠는 권태기의 애인 같은 존재죠.

 

int int;
int return;

위 둘은 언어의 예약어이기 때문에 불가능한 이름입니다.

Visual Studio에서는 변수의 이름이 아니라 예약어라고 판정하므로 텍스트의 색도 변수의 이름에 해당하는 색이 아니라 각 예약어에 해당하는 색일 것입니다.

int 1abc;
int 7_7;

위 둘은 숫자로 시작하기 때문에 불가능한 이름입니다.

Visual Studio에서는 숫자가 나온 부분을 리터럴 상수(아직 몰라도 됩니다.)라고 판정하므로 마찬가지로 변수의 이름에 해당하는 색이 아니라 리터럴 상수에 해당하는 색일 것입니다.

int ^^;
int -num;

위 둘은 허용되지 않는 문자로 시작하기 때문에 불가능한 이름입니다.

음... 그러나 ^와 - 모두 연산자로 존재하기 때문에 Visual Studio는 피연산자 없이 연산자만 썼다고 생각하겠네요.

 

실행되는 내용은 없겠지만 한 번 실행하면 자동으로 저장이 되니 실행 해보셔도 좋구요.

간단하게 Ctrl + S로 저장해주셔도 됩니다.

솔직히 불가능한 변수의 이름들을 보시면 알겠지만, 굳이 이 규칙에 어긋나게 변수 작명을 할 이유가 없습니다.

조금 익숙하지 않은 예약어들로 실수를 할 수는 있는데, 그런 예약어들은 애초에 Visual Studio에서 다른 색으로 표시를 해주니까요.

여러분들이 실제 프로그래밍할 때 잘못된 변수 이름 때문에 막힐 일은 절대 절대 없습니다.

이런 걸 틀려서 온다면... 혼내줄 거야.

 

한 번 보고 기억하기도 쉽기 때문에, 여러모로 쉽게 소화할 수 있는 내용이었습니다.

읽어주셔서 감사합니다.