Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Table of Contents
stylesquare

 

코딩 관례(convention)

Convention의 뜻은 관습, 관례이다. 코딩 컨벤션이란 프로그램의 소스 코드 작성 시 코딩 방식과 규칙을 정하고 그것을 따름을 의미한다.

무조건 따라야 할 절대적인 이유는 없지만, 몇 가지 장점이 있기에 대체로 프로젝트를 시작할 때 미리 규약을 정의하고 개발자들이 따르도록 하는 경우가 많다.

코딩 방식(style)

인간은 저마다 개성을 가진 고귀한 존재이므로, 소스 코드 작성 시에도 그 개성을 나타낸다. 같은 로직을 표현하는데도 다른 외관이 나타날 수 있는데, 사실 컴파일러가 코드를 해석하는데는 아무 상관이 없다.

...

가끔 코딩 방식 없이 일관되지 못하게 짜놓은 코드를 보는 경우가 있는데, 아무리 좋은 로직이라 하더라도 소스 코드의 질이 굉장히 떨어져 보인다.

관례를 따랐을 때의 장점

소스 코드의 가독성 향상

소스 코드를 최초에 작성하는 사람이 존재한다면, 추후에 그 소스 코드를 수정해야 하는 사람 또한 존재할 것이고 그 둘이 같은 사람이라고 보장할 수 없다. 그렇기 때문에 최초 작성자는 본인이 아닌 다른 사람이 자신의 소스 코드를 볼 수 있다는 점과 이해하기 쉽도록 만들어야 한다는 점을 간과해서는 안 된다.

...

결국 유지보수에 있어서 관례를 따르는 것은 충분한 장점이 있다.

소스 코드의 품질 향상

소스 코드를 깔끔하게 작성하게 되면 그 소스 코드를 잘 이해할 수 있게 되고 구조를 파악하기 용이해진다. 흐름을 잘 이해하게 되면 코딩 실수를 방지할 수 있고 잠재적인 버그 발생을 억제할 수 있다.

소스 코드의 품질 향상은 프로그램의 품질 향상으로 이어진다.

관례의 종류

들여쓰기 방식 관례

들여쓰기 방식은 코드 블록의 들여쓰기를 통해 프로그램의 구조를 나타내는 관례이다.

탭, 공백, 들여쓰기 크기

들여쓰기 방식은 코드 블록 왼쪽에 탭 또는 공백을 넣어 들여쓰기를 함으로써 프로그램의 구조와 코드의 종속적인 관계를 표현하는 기법이다.

...

soft tab = 소스 코드 편집기에서 지원하는 기능으로 탭 키를 임의의 개수의 공백(space, 0x20)로 실시간 치환해준다.

 

도구

자동으로 들여쓰기 방식을 변경해주는 도구도 존재한다.

 

들여쓰기 방식

모든 방식을 다 살펴볼 필요는 없을 것 같고, 대표적인 방식 몇 가지를 분석해보겠다.

 

K&R 방식

자바 코딩 관례에서 사용하는 방식이다. 한국에서 가장 많이 쓰이고 있다고 한다?

...

하지만 함수 내부의 블록(제어문 등)은 선언부의 오른쪽 끝에 여는 중괄호를 가진다.


장점

함수 내부 블록의 여는 괄호가 따로 한 줄을 차지하지 않아 수직으로 더 많은 코드를 볼 수 있다.

 

단점

여는 중괄호와 닫는 중괄호의 수평 위치가 다르기 때문에 블록 중첩이 많아지면 블록의 시작과 끝을 찾기 어렵다.

소스 코드가 많아지면 가독성이 떨어진다. 

선언부를 주석 처리할 때 조금 불편하다.

 

변형 : 1TBS 방식

1TBS = One True Brace Style

제어문이 간단하다고 하더라도 중괄호를 생략하지 않는 방식이다.

 

AS-IS

if (some_error)
    do_correct();
else
    continue_as_usual();

TO-BE

if (some_error) {
    do_correct();
} else {
    continue_as_usual();
}

 

변형 : Stroustrup

C++의 창시자인 Bjarne Stroustrup이 C++을 위하여 K&R 방식을 변형한 것이다.

 닫는 중괄호와 다음 블록의 여는 중괄호를 한 줄에 위치시키지 않는 방식이다.

 

AS-IS

if (some_error) {
    do_correct();
} else {
    continue_as_usual();
}

TO-BE

if (some_error) {
    do_correct();
}

else {
    continue_as_usual();
}

 

Exdented 또는 Allman 또는 BSD 방식

많은 BSD Unix를 위한 유틸리티를 만든 Eric Allman에 의해 이름 붙여졌다.

...

public static void main(String[] args)
{
    while (x == y)
    {
        something();

        if (some_error)
        {
            do_correct();
        }
        else
        {
            continue_as_usual();
        }
    }
}

 

장점

블록의 시작과 끝이 명확하게 보이기 때문에 가독성이 높다.

 

단점

여는 중괄호가 항상 따로 한줄을 차지하기 때문에 수직으로 보는 코드양이 적어진다. 아래 위로 스크롤해가며 봐야 함. 인쇄 시 종이의 낭비가 심하다는 경제적인 문제도 있다. 이런 이유들로 예전에는 K&R 방식이 많이 사용되었지만, 고해상도 모니터의 보급화로 인해 점점 Allman 방식을 사용하는 추세이다.

 

Indented 또는 Whitesmith 방식

Whitesmith C 컴파일러에서 예제 코드로 사용된 방식으로 선언부 이후의 블록이 들여쓰기 되며, 블록과 블록 내부의 소스 코드의 들여쓰기 수준이 같다.

...

        if (some_error)
            {
            do_correct();
            }
        else
            {
            continue_as_usual();
            }
        }
}

 

GNU 방식

리눅스를 만든 Richard Stallman의 방식이다. Allman과 Whitesmith 방식의 중간형이라 할 수 있다.

...

      if (some_error)
        {
          do_correct();
        }
      else
        {
          continue_as_usual();
        }
    }
}

 

그외

Kernel, BSD KNF, Horstmann, Pico, Banner, Lisp, Ratliff 방식 등이 존재

주석 관례

추후 작성

명명 관례

추후 작성

이클립스로 소스 코드 작성시 코딩 관례 적용

자바 소스 코드 편집기로는 이클립스 IDE가 독보적으로 사용되고 있다. 따라서 이클립스 상에서 소스 코딩 시 코딩 관례를 적용하는 방법을 살펴보겠다.

Preferences - Java - Code Style

 추후 작성

> Clean Up

 추후 작성

> Code Template

  추후 작성

> Formatter

이클립스 상에서 소스 코드를 정렬(Ctrl + Shift + F)할 때 어떤 방식으로 정렬될지를 정의해놓은 프로파일을 정의하고 설정할 수 있다.

...

아래 xml 파일을 다운로드하여 Import한 뒤 해당 프로파일을 Active profile로 설정하면 된다.

BaroBoard.xml

> Organize Imports

 추후 작성

참고

Allman 식 이클립스 Java 코딩 스타일 프로파일

...