카테고리 없음
코딩 스타일 - 들여쓰기
SciomageLAB
2024. 10. 3. 16:39
반응형
용어 설명
brace, brackets, parentheses
{ } : braces 또는 curly braces
[ ] : brakets
( ) : parentheses
cuddled else
| /* cuddled else */ | /* uncuddled else */
| if (x > 0) { | if (x > 0) {
| x += y; | x += y;
| } else { | }
| y += x; | else {
| } | y +=x;
| }
K&R
배경
C언의 창시자인 Kernighan & Ritchie의 스타일로 C계열 언어처럼 brace를 사용하는 언어에서 사용된다. 유닉스 커널에 사용되었던 스타일이고 창시자들의 책인 The C Programming Language*와 *The Elements of Programming Style.이라는 책에 소개되었다.
특징
이 스타일에서는 함수의 brace는 열 때 함수의 다음 라인에 내려서 쓴다. 열고 닫을 때 모두 함수 원형과 같은 레벨에 들여쓰기를 한다.
함수 내부에서 작성되는 statements들은 제어문과 같은 라인에서 열고 닫을 때는 제어문과 같은 레벨로 들여쓰기 한다. if-else문은 cuddled else로 사용한다.
싱글 라인 블록은 braces를 쓰지 않는다.
코드 라인 수가 줄어든다는 장점이 있다.
int main(int argc, char *argv[])
{
...
while (x == y) {
something();
somethingelse();
if (some_error)
do_correct(); // In K&R a single-statement block does not have braces.
else
continue_as_usual();
}
finalthing();
...
}
Allman(=BSD style)
배경
Eric Allman이 제안하는 스타일로 BSD 스타일로도 알려져 있다(에릭 알만이 BSD의 많은 유틸리티를 만들었기 때문). BSD KNF style과는 아예 이름에 BSD가 들어가 있을 뿐 다르다.
특징
- brace가 제어문, 함수 원형의 다음 라인으로 온다.
- if, else, while과 같은 조건문과 여는 parentheses 사이에 공백을 넣는다.
- 괄호 매칭 보기가 편하고 리팩토링에 장점이 있지만 코드 길이가 길어지게 된다.
while (x == y)
{
something();
somethingelse();
}
finalthing();
리팩토링의 편리함 예시
while (x == y)
{
something();
somethingelse();
}
// for (int i=0; i < x; i++)
// while (x == y)
if (x == y)
{
something();
somethingelse();
}
조건부 컴파일에서도
int c;
#ifdef HAS_GETCH
while ((c = getch()) != EOF)
#else
while ((c = getchar()) != EOF)
#endif
{
do_something(c);
}
참고문헌
https://en.wikipedia.org/wiki/Indentation_style#Allman_style
https://www.cis.upenn.edu/~matuszek/General/JavaSyntax/parentheses.html
반응형