Skip to content

JAVA 코딩 컨벤션

LeeYuri edited this page Nov 28, 2022 · 1 revision

파일구조

1.1 파일 구조

  • 소스코드는 2,000 라인이 넘는 파일은 가독성이 떨어지므로 지양

1.2 java 소스 파일

  • 각 자바 소스 파일은 public class 또는 interface 를 포함
  • 자바 소스 파일의 구성은 다음을 지킨다.
  1. package와 import문
  2. Class and Interface 선언
  3. Class변수 선언(static)
  4. 멤버 변수 선언(non-static)
  5. Constructor 선언
  6. Method 선언

1.2.1 package와 import문

  • 첫 번째 줄은 package문이다.
  • 그 이후에 import문이 뒤따라 나온다.
  • package 선언문과 import 선언문 사이에 빈 줄을 한 칸 띄운다.
  • import 문은 클래스 이름 대신 * 을 사용하지 않고 클래스 이름을 정확히 작성

1.2.2 class 작성

  • 클래스 변수 작성 시 pulblic 클래스 변수가 첫 번째로 나온다.
  • 그 다음 protected 클래스 변수들, 그 다음 package 클래스 변수들이 나온다.
  • private 클래스 변수들은 마지막에 작성

1.2.3 instance 변수 작성

  • class 변수와 같은 순서로 작성

1.2.4 constructor 작성

  • 파라미터가 적은 순서대로 작성
  • 생성자와 생성자 사이에 빈 줄 하나를 삽입

1.2.5 method 작성

  • 필드를 작성하는 순서와 다르게 method는 범위나 접근성을 기준이 아닌 기능성에 의해 구성
  • 메소드와 메소드 사이에 빈 줄 하나를 삽입

1.2.6 그 밖의

  • 들여쓰기
    • 공백문자 4개를 하나의 들여쓰기 -> 들여쓰기는 항상 탭(tab)을 사용
  • 한 줄의 길이
    • 한 줄에 70글자 이상 적지 않는다. (터미널과 툴에서 코드를 제대로 볼 수 없음)
  • 줄 나누기
    • 한 줄이 넘어가는 코드를 나눌 경우
      1. 콤마 뒤에서 나눌 것
      2. 연산자의 앞에서 나눌 것
      3. 괄호로 싸인 표현식 밖에서 줄 바꿈을 한다.
      4. 새로운 줄의 시작부분을 윗 줄의 같은 수준의 표현에 맞추어 정렬할 것
      5. 규칙을 따라도 코드가 혼란스러운 경우, 오른쪽 끝을 넘어가는 경우에는 8글자 들여쓸 것

주석

2.1 구현 주석

  • 블록 주석
  • 한 줄 주석
  • 꼬리 주석
  • 줄 끝 주석

2.1.1 블록 주석

  • 블록 주석은 파일, 메소드, 자료구조, 알고리듬 등에 대한 설명 작성
  • 각 파일의 시작 부분과 각 메소드 와 메소드 내부에서 사용 가능
  • 메소드 내의 블록 주석은 코드와 같은 수준으로 들여 씀
/*
* 여기에 작성하는 내용은 들여쓰기를 무시하는 블록 주석이다.
*/

2.1.2 한 줄 주석

  • 한 줄 주석은 공백 줄 다음에 작성
  • 그 다음 줄의 코드와 같은 수준으로 들여쓰기
  • 만일 주석이 한 줄이 넘으면 블록 주석으로 작성
if(condition) {
    (공백 줄)
    /* 아래 작성한 코드에 대한 내용 설명 */
    helloworld();
}

2.1.3 꼬리 주석

  • 아주 짧은 길이의 주석은 코드와 같은 줄에 주석 작성 가능
  • 코드와 구분하기 위해 오른쪽으로 멀리 떨어트려 작성
  • 같은 코드 블록에 여러 개 주석이 있는 경우 동일한 위치로 맞춰서 작성
if(condition) {
    (공백 줄)
    /* 아래 작성한 코드에 대한 내용 설명 */
    helloworld();
}

2.1.4 줄 끝 주석

  • 슬래쉬 문자 2개를 사용하는 주석은 한 줄 전체 또는 한 줄의 일부를 주석 처리할 때 사용
  • 여러 줄의 텍스트 주석을 작성하는 것은 안됨
  • 연속된 여러 줄의 코드를 주석하는데에는 사용 가능
if(condition) {
    return true;
} else {
    return false;             //이유를 여기에 짧게 설명
}

여러 줄의 코드를 주석 처리할 때 사용

//if(condition) {
//    return true;
//} else {
//	  return false;
//}

#3 괄호와 중괄호

  • 생성자 혹은 메소드 선언 시 생성자나 메소드의 이름 뒤에 ()가 시작하기 전에는 공백을 두지 않는다.
public Member() {}
  • 중괄호의 시작은 메소드 선언부와 같은 라인에서 시작하고, 종료 블럭은 아무 내용이 없으면 같은 라인에, 작성할 내용이 있는 경우 선언부와 같은 레벨로 들여쓰기 한다.
  • 중괄호의 시작은 앞에 공백 한 칸을 두고 시작한다.
public class Member {
    public Member() {}

    public void method() {
        helloworld();
        if(condition) {
            hiworld();
        }
    }
}

4 구문 작성

  • 한 줄에는 하나의 구문만 작성 (세미콜론 단위)
  • 여는 중괄호는 시작되는 줄의 끝에 위치해야 하며, 닫는 괄호는 새로운 줄의 시작 부분에 적어야 한다.
  • 모든 문은 중괄호로 둘러싸여야 하며 if문이나 for문같은 경우에 한 줄 같은 경우도 중괄호로 감싸서 사용해야 향후 구문을 추가할 때 버그가 생기는 것을 방지할 수 있다.

5 명명 규칙

package

  • package 이름은 소문자로 작성
  • 가장 높은 레벨의 package이름은 com으로 작성

class, interface

  • 클래스의 이름은 반드시 명사
  • 클래스명의 첫 글자는 반드시 대문자이어야 한다.
  • 복합단어일 경우 각 단어의 첫 글자는 대문자이어야 한다.
  • 간단하고 명시적으로 작성해야 한다.
  • interface를 implements 한 class의 이름은 interface명 + "Impl"로 이름을 명명한다.

method

  • 메소드의 이름은 동사 + 명사 혹은 형용사
  • 복합 단어일 경우에는 첫 단어는 소문자, 이후 나오는 단어의 첫 문자는 대문자로 한다.
  • 객체의 속성값을 반환하는 메소드는 get으로 설정하며, 속성값을 변경하는 메소드는 set으로 시작한다.
  • boolean 정보를 반환하는 메소드는 is로 시작한다.

variable

  • 일반적으로 명사형으로 작성
  • 복합 단어일 경우 첫 단어는 소문자로 시작하며, 그 이후 나오는 단어의 첫 문자는 대문자로 한다.
  • 변수 이름은 너무 길지 않게 작성하되, 약어 사용을 최대한 지양한다.
  • 한 글자의 변수들은 임시 변수 외에는 사용하지 않는다.

const

  • 상수의 이름은 반드시 모든 문자가 대문자이어야 하며, 각 단어의 연결은 _(언더바)로 한다.