코드 스타일: Difference between revisions
From IT Wiki
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
==괄호 위치== | ==괄호 위치== | ||
{| class="wikitable" | {| class="wikitable" | ||
| rowspan="2" |GNU | | rowspan="2" |'''GNU''' | ||
|<syntaxhighlight lang="cpp"> | |<syntaxhighlight lang="cpp"> | ||
if(...) | if(...) | ||
Line 11: | Line 11: | ||
|블록을 if문 아래에 작성한다. 블록이 if에 속한 블럭임을 분명히 표시하여 구조가 잘 보인다. 허나 들여쓰기를 많이 해서 처리하기에 수평으로 많은 코드를 작성할 수 없다. | |블록을 if문 아래에 작성한다. 블록이 if에 속한 블럭임을 분명히 표시하여 구조가 잘 보인다. 허나 들여쓰기를 많이 해서 처리하기에 수평으로 많은 코드를 작성할 수 없다. | ||
|- | |- | ||
| rowspan="2" |K&R | | rowspan="2" |'''K&R''' | ||
|<syntaxhighlight lang="cpp"> | |<syntaxhighlight lang="cpp"> | ||
if(...) { | if(...) { | ||
Line 20: | Line 20: | ||
|흔히 C 계열 창시자들이 사용하던 스타일이다. 여는 블록을 if와 같은 행에 배치한다. 코드 줄 수를 절약하여 한눈에 많은 코드를 볼 수 있고 수평으로 많은 코드를 작성할 수 있다. Java 계열 Eclipse / 구글 C++, 자바스크립트 등의 기본 포맷팅이다. | |흔히 C 계열 창시자들이 사용하던 스타일이다. 여는 블록을 if와 같은 행에 배치한다. 코드 줄 수를 절약하여 한눈에 많은 코드를 볼 수 있고 수평으로 많은 코드를 작성할 수 있다. Java 계열 Eclipse / 구글 C++, 자바스크립트 등의 기본 포맷팅이다. | ||
|- | |- | ||
| rowspan="2" |BSD | | rowspan="2" |'''BSD''' | ||
| <syntaxhighlight lang="cpp"> | |<syntaxhighlight lang="cpp"> | ||
if(...) | if(...) | ||
{ | { | ||
Line 30: | Line 30: | ||
|GNU의 블럭의 소속을 분명히 한다는 장점과 K&R의 수평으로 많은 코드를 작성할 수 있다는 장점을 가져와 결합한 스타일이다. 줄 수는 GNU 스타일만큼 늘어나지만 수평으로는 K&R만큼 빽빽하게 쓸 수 있다. 비주얼 스튜디오에서의 기본 포맷팅이다. | |GNU의 블럭의 소속을 분명히 한다는 장점과 K&R의 수평으로 많은 코드를 작성할 수 있다는 장점을 가져와 결합한 스타일이다. 줄 수는 GNU 스타일만큼 늘어나지만 수평으로는 K&R만큼 빽빽하게 쓸 수 있다. 비주얼 스튜디오에서의 기본 포맷팅이다. | ||
|} | |} | ||
== 변수 명 표기법 == | |||
변수 뿐만 아니라 함수, 클래스 등 공통 | |||
=== 카멜 표기법(Camel Case) === | |||
'''camelCase''' | |||
* 여러 단어를 연달아 사용할 때 각 단어의 첫 글자를 대문자로 적되, 맨 앞에 오는 글자는 소문자로 표기하는 방식 | |||
* 낙타의 등에 있는 혹과 같다고 하여 카멜(Camel) 표기법이라고 부른다. | |||
* 표기에서도 볼 수 있듯 봉이 하나이기 때문에 단봉낙타 표기법이라고도 하며, 파스칼 표기법과 비교하여 '''lowerCamelCase'''라고도 한다. 중간에 XML, JSON 같이 식별자 이름에 약자가 포함되는 경우는 해당 약자를 모두 대문자로 쓸 수도 있다. (예: parsedXMLElement) | |||
=== 파스칼 표기법(Pascal Case) === | |||
PascalCase | |||
* 이 역시 연달아 오는 단어의 모든 앞글자를 대문자로 표기하는 것은 카멜 표기법과 같지만, '''맨 앞에 오는 문자까지도 대문자'''로 표기한다. | |||
* 카멜 표기법과 비교하여 UpperCamelCase라고도 하며, 봉이 둘이기 때문에 쌍봉낙타 표기법이라고도 한다. | |||
* 전술했듯 식별자의 특성에 따라 카멜 표기법과 파스칼 표기법을 적절하게 혼합하여 쓰는 작성 스타일이 대세로, 변수 정의에는 카멜 표기가, 타입 정의에는 파스칼 표기가 대세이다. 언어에 따라 전부 카멜, 전부 파스칼로 표기할 것을 권장하기도 한다. | |||
=== 스네이크 표기법(Snake Case) === | |||
snake_case | |||
* 단어 사이에 언더바_를 넣어서 표기하는 것이다. | |||
* 허나 한 단어에 언더바를 붙인 _apple 등의 명칭은 C++의 장래 예약어 확장을 위해 지양되고 있다. 자세하게는, 언더바를 사용한 후 바로 대문자로 시작하는(e.g. _Apple, _Banana, _Cucumber) 식별자나 인접한 언더바(_a_apple, _b_Banana), 또는 두 개의 언더바(__Apple, __banana)는 모든 스코프에서 지양된다. 언더바로 시작하는 모든 식별자는 전역 스코프에서만 지양된다. | |||
* 언더바 바로 뒤의 문자를 대문자로 하면 Train_Case, 소문자로 하면 spiral_case로 불린다. 전부 대문자로 하는 경우(SNAKE_CASE)도 있는데, 이는 주로 상수 정의에 사용된다. | |||
=== 헝가리안 표기법(Hungarian Notation) === | |||
strHungarianNotation | |||
* 예시로 strName, bBusy, szName 등이 있다. | |||
* 자료형 지원이 다양하지 않았던 시기에는 자주 사용되었지만, 자료형도 문서 데이터도 다양해진 현재는 지양되는 스타일이다. | |||
* 무엇보다 개발 도중에 자료형이 바뀐다면 모든 변수명을 수정해주어야 하는 불편함이 있다. | |||
* 자료형이 명백하게 제한되는 경우라 해도 보통은 다른 표기법으로 대체되는 편. | |||
* Windows API가 이 표기법을 사용한다. |
Revision as of 14:49, 28 June 2022
괄호 위치
GNU | if(...)
{
처리();
}
|
블록을 if문 아래에 작성한다. 블록이 if에 속한 블럭임을 분명히 표시하여 구조가 잘 보인다. 허나 들여쓰기를 많이 해서 처리하기에 수평으로 많은 코드를 작성할 수 없다. | |
K&R | if(...) {
처리()
}
|
흔히 C 계열 창시자들이 사용하던 스타일이다. 여는 블록을 if와 같은 행에 배치한다. 코드 줄 수를 절약하여 한눈에 많은 코드를 볼 수 있고 수평으로 많은 코드를 작성할 수 있다. Java 계열 Eclipse / 구글 C++, 자바스크립트 등의 기본 포맷팅이다. | |
BSD | if(...)
{
처리()
}
|
GNU의 블럭의 소속을 분명히 한다는 장점과 K&R의 수평으로 많은 코드를 작성할 수 있다는 장점을 가져와 결합한 스타일이다. 줄 수는 GNU 스타일만큼 늘어나지만 수평으로는 K&R만큼 빽빽하게 쓸 수 있다. 비주얼 스튜디오에서의 기본 포맷팅이다. |
변수 명 표기법
변수 뿐만 아니라 함수, 클래스 등 공통
카멜 표기법(Camel Case)
camelCase
- 여러 단어를 연달아 사용할 때 각 단어의 첫 글자를 대문자로 적되, 맨 앞에 오는 글자는 소문자로 표기하는 방식
- 낙타의 등에 있는 혹과 같다고 하여 카멜(Camel) 표기법이라고 부른다.
- 표기에서도 볼 수 있듯 봉이 하나이기 때문에 단봉낙타 표기법이라고도 하며, 파스칼 표기법과 비교하여 lowerCamelCase라고도 한다. 중간에 XML, JSON 같이 식별자 이름에 약자가 포함되는 경우는 해당 약자를 모두 대문자로 쓸 수도 있다. (예: parsedXMLElement)
파스칼 표기법(Pascal Case)
PascalCase
- 이 역시 연달아 오는 단어의 모든 앞글자를 대문자로 표기하는 것은 카멜 표기법과 같지만, 맨 앞에 오는 문자까지도 대문자로 표기한다.
- 카멜 표기법과 비교하여 UpperCamelCase라고도 하며, 봉이 둘이기 때문에 쌍봉낙타 표기법이라고도 한다.
- 전술했듯 식별자의 특성에 따라 카멜 표기법과 파스칼 표기법을 적절하게 혼합하여 쓰는 작성 스타일이 대세로, 변수 정의에는 카멜 표기가, 타입 정의에는 파스칼 표기가 대세이다. 언어에 따라 전부 카멜, 전부 파스칼로 표기할 것을 권장하기도 한다.
스네이크 표기법(Snake Case)
snake_case
- 단어 사이에 언더바_를 넣어서 표기하는 것이다.
- 허나 한 단어에 언더바를 붙인 _apple 등의 명칭은 C++의 장래 예약어 확장을 위해 지양되고 있다. 자세하게는, 언더바를 사용한 후 바로 대문자로 시작하는(e.g. _Apple, _Banana, _Cucumber) 식별자나 인접한 언더바(_a_apple, _b_Banana), 또는 두 개의 언더바(__Apple, __banana)는 모든 스코프에서 지양된다. 언더바로 시작하는 모든 식별자는 전역 스코프에서만 지양된다.
- 언더바 바로 뒤의 문자를 대문자로 하면 Train_Case, 소문자로 하면 spiral_case로 불린다. 전부 대문자로 하는 경우(SNAKE_CASE)도 있는데, 이는 주로 상수 정의에 사용된다.
헝가리안 표기법(Hungarian Notation)
strHungarianNotation
- 예시로 strName, bBusy, szName 등이 있다.
- 자료형 지원이 다양하지 않았던 시기에는 자주 사용되었지만, 자료형도 문서 데이터도 다양해진 현재는 지양되는 스타일이다.
- 무엇보다 개발 도중에 자료형이 바뀐다면 모든 변수명을 수정해주어야 하는 불편함이 있다.
- 자료형이 명백하게 제한되는 경우라 해도 보통은 다른 표기법으로 대체되는 편.
- Windows API가 이 표기법을 사용한다.