본문 바로가기

취미로 하는 게임코딩_gameCodingAsHobby/유니티와 C# 개념 정리_Concept Summary

유니티와 C# 개념 정리_012_식별자와 키워드

Syntax(씬택스)

 

코딩에서 단어 등을 배열하여 만든 문장을 Syntax(구문)이라고 한다.

 

예를 들면 다음과 같은 것들이다.

using UnityEngine;

int number = 5 * 6;

Debug.Log(number);

 

Identifier(아이덴티파이어)

이전 글(유니티10_C#_06_토큰)에서 Identifier(식별자)에 대해 알아보았는데 다시 정리한다.

 

Identifier(식별자)는 프로그래머가 코드를 작성할 때 클래스, 메서드, 변수 등을 식별하기 위해 만든 이름을 말한다.

줄인 말인 ID(아이디)는 홈페이지 등에서 개인을 식별하는 문자로 많이 사용하고 있다.

위의 코드에서 식별자는 UnityEngine , number , Debug , Log 등이다.

number라는 변수명은 내가 만든 것이고,

나머지는 다른 프로그래머가 이미 만들어 놓은 namespace, class, method 이름이다.

 

C#에서 식별자를 만드는 규칙은 다음과 같다.

 

  • 문자 또는 _ (언더바)로 시작해야 한다.
  • 공백문자를 사용할 수 없다.
  • 대소문자를 구분하므로 number와 Number는 서로 다른 식별자로 인식한다.
  • 식별자의 모양은 관례적으로 camelCase(캐멀 케이스)와 PascalCase(파스칼 케이스)를 사용한다.

camelCase는 다음과 같은 경우에 사용한다.

  1. 클래스 안에 정의하는 field(필드, 변수)명
  2. 메서드 안에 정의하는 local variable(지역변수)명  
  3. parameter(퍼래미터, 매개변수)명

위 캐멀케이스 이외는 모두 파스칼 케이스를 사용한다.

_camelCase처럼 _(밑줄)로 시작하여 캐멀케이스를 혼합하는 방법을 private field 이름으로 사용하는 경우도 있지만 캐멀케이스와 파스칼케이스를 위와 같은 방법으로 사용하는 것이 가장 간단하다.

 

Keyword(키워드)

키워드는 C#에서 미리 사용하도록 정해져 있는 예약어를 말한다.

이 예약어들은 C# 버전별로 계속 추가되고 있다.

예약되어 있으므로 식별자로 사용할 수 없다.

굳이 쓰겠다고 하면 앞에 @를 붙여서 사용할 수 있다.

 

예를 들어 클래스명을 만들 때 class class { }를 사용하면 키워드와 충돌이 발생한다.

그러므로 클래스명을 다른 이름으로 바꾸든지 class @class { } 로 할 수 있다.

이때 @ 기호는 식별자에 포함되지 않으며 단지 키워드와 충돌을 막는 역할만 한다.

그러므로 @class와 class는 같다. 

 

키워드의 전체 목록은 이전 글(유니티10_C#_06_토큰)을 참고한다.

 

키워드에는 Contextual keyword(컨텍스추얼 키워드)라는 것도 있다.

이 키워드들은 코드에서 문맥상 또는 상황별로 사용하는 키워드이다.

예를 들어 get, set 은 property(프라퍼티, 속성)를 정의할 때 메서드 이름으로 사용하는 키워드이다.

하지만 이것은 예약된 키워드가 아니므로 property 외의 다른 곳에서 이 단어를 식별자로 사용할 수 있다.

 

Contextual keyword를 만든 이유는 해당 문맥에서 사용했을 때 그 뜻을 잘 알 수 있기 때문이다.

예를 들어 get은 '가지다, 얻다' , set은 '설정하다'라는 쉽고 명확한 뜻이므로 어떤 용도로 사용하고 있는 지 정확히 파악할 수 있다.

 

몇 가지 예를 들면 다음과 같다.

add : 더하다

remove : 제거하다

equals : 같다

nameof : ~의 이름

from : ~로 부터

value : 값

var : 변수

with : 함께

yield : 양보하다, 포기하다

select : 선택하다

 

Contextual 키워드의 전체 목록도 이전 글(유니티10_C#_06_토큰)을 참고한다.

 

끝.

Wraven...