[코딩 스타일] 중괄호 [GNU, K&R, BSD]

2024. 4. 26. 21:26Personal/Misc.

아래 링크 클릭 시 해당 본문으로 이동

 


 

C++ 강의 영상을 보다가 내가 쓰는 중괄호 스타일과 강의해 주시는 분의 중괄호 스타일이 다른 것을 알게 됨.

나는 K&R 스타일로, 강의 영상에서는 BSD 스타일로 중괄호를 작성함.

아직까지 불편함을 느끼지는 않았지만 다른 스타일은 뭐가 있고 무슨 차이가 있는지 궁금해짐.

(보다 보니까 K&R에서 BSD로 중괄호 스타일을 바꾸고 싶어 졌음.)


 

블록

• 어떤 동작을 수행할 때 필요한 코드를 묶어놓은 것

• 프로그래밍 언어 ➜ 중괄호 또는 들여 쓰기로 구분


 

GNU

중괄호 ➜ 해당 조건 아래에 작성

이 스타일을 사용하는 경우는 한 번도 못 봤다.

int main()
	{
        int i;

        for (a = 0; a < 5; ++a)
        	{
                i = 10;

                if (a % 2 == 1)
                    {
                        i = 0;
                    }
                    else
                    {
                    	i = -1;
                    }
        	}
    
		return 0;
	}

1) 장점

• 해당 조건에 속한 블록인 것을 분명히 표시함. ➜ 구조가 잘 보인다.

 

2) 단점

들여 쓰기를 많이 한다.

때문에 수평으로 많은 코드를 작성할 수 없고 코드 줄이 늘어난다.


 

K&R

중괄호 ➜ 해당 조건과 같은 줄에 배치

• C 계열 창시자들이 사용하던 스타일

• Java 계열 이클립스(Eclipse) , C++, JavaScript 등의 기본 포맷팅

int main() {
	int i;
    
	for (a = 0; a < 5; ++a) {
    	i = 10;
        
    	if (a % 2 == 1) {
        	i = 0;
        } else {
        	i = -1;
        }
    }
    
	return 0;
}

1) 장점

• 수평으로 많은 코드를 작성할 수 있다.

코드 줄 수를 절약할 수 있어서 한눈에 많은 코드를 볼 수 있다.

프로그래밍 언어 교재에서 자주 보이는 스타일이다. ➜ 코드량이 줄면 페이지 수도 줄어들기 때문이다.

 

2) 단점

int main() {
	int i;
    
	for (a = 0; a < 5; ++a) {
    	i = 10;
        
    	if (a % 2 == 1) {
        	i = 0;
        } else {
        	i = -1;
        }
    }
    
    
    // for문이 있는 줄만 통째로 지웠을 때 → 문제 발생
        i = 10;

        if (a % 2 == 1) {
            i = 0;
        } else {
            i = -1;
        }
    }
    
	return 0;
}

for문이 있는 줄만 통째로 지울 수 없다.

  ➜ K&R은 같은 줄에 중괄호가 있기 때문에 해당 줄을 지웠을 때 문제가 생긴다.


 

BSD

 중괄호 ➜ 해당 조건 아래에 작성

• Visual Studio의 기본 포맷팅

• [GNU] 블록의 소속을 분명히 한다. + [K&R] 수평으로 많은 코드를 작성할 수 있다.

int main() {
	int i;
    
	for (a = 0; a < 5; ++a)
    {
    	i = 10;
        
    	if (a % 2 == 1) {
        	i = 0;
        } else {
        	i = -1;
        }
    }
    
    
    // for문이 있는 줄만 통째로 지웠을 때 → 문제 없음.
    
    {
        i = 10;

        if (a % 2 == 1) {
            i = 0;
        } else {
            i = -1;
        }
    }
    
	return 0;
}

1) 장점

• 줄간격이 한눈에 들어온다.

• 수평으로 많은 코드를 작성할 수 있다.

 for문이 있는 줄만 통째로 지울 수 있다. ➜ 내가 K&R에서 BSD로 코딩 스타일을 바꾸게 된 이유이기도 하다.

 

2) 단점

코드 길이가 길어진다.