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는 다음과 같은 경우에 사용한다.
- 클래스 안에 정의하는 field(필드, 변수)명
- 메서드 안에 정의하는 local variable(지역변수)명
- 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...
'취미로 하는 게임코딩_gameCodingAsHobby > 유니티와 C# 개념 정리_Concept Summary' 카테고리의 다른 글
유니티와 C# 개념 정리_014_클래스_Class (0) | 2021.11.30 |
---|---|
유니티와 C# 개념 정리_013_컬렉션즈_Collections (0) | 2021.11.27 |
유니티와 C# 개념 정리_011_반복문 Loop (0) | 2021.09.10 |
유니티와 C# 개념 정리_010_조건문 switch (0) | 2021.09.07 |
유니티와 C# 개념 정리_009_조건문 if , ++ , -- (0) | 2021.09.01 |