구글 컨벤션

1. Formatting

1.1 Block indentation

  • 새 블록 또는 블록과 유사한 구조가 열릴 때마다 들여쓰기가 두 칸씩 증가.
  • sonarQube 에선 indent size 를 명시적으로 제시하진 않고 일관된 들여쓰기를 준수함.

1.2. One statement per line

  • 각 문 뒤에는 줄바꿈

1.3. Column limit

  • Java 코드의 열 제한은 100 자

2. Whitespace

  • 수평 공백 (띄어쓰기)는 다음과 같이 나타낸다.
/**
  - 예약어 if, for 또는 catch 와 여는 괄호 ( 사이
  - else 또는 catch 와 닫는 중괄호 } 사이
  - 여는 중괄호 { 앞
 */
if (조건) {
    
} else {
    
}

/** 이항 또는 삼항 연산자의 양쪽 */
isEmpty ? true : false;

/** 인접한 Type 바인딩의 앰퍼샌드 사이 */
<T extends Foo & Bar>

/** catch 블록에 대한 파이프 */
catch (FooException | BarException e)

/** foreach 문의 콜론 사이 */
for (Map item : itemList)

/** 람다식의 화살표 */
(String str) -> str.length()

예외

/** 공백이 사용되지 않음 */
@SomeAnnotation({a, b})

/** {{ 다음에 사용하지 공백을 않음 */
String[][] x = {{"foo"}};

/** 메서드 참조시 사용되는 콜론 :: 에 공백을 사용하지 않음 */
Object::toString

3. Naming

  • sonarQube 에서 Naming 은 설정된 정규식으로 체크된다.

3.1 Package 이름

  • 패키지 이름은 모두 소문자이며 연속된 단어는 단순히 함께 연결한다.
(O) com.example.deepspacenot
(X) com.example.deepSpace
(X) com.example.deep_space 

3.2 Class 이름

  • UpperCamelCase 로 작성한다.
  • 보통 명사 또는 명사로 작성하나 Interface 이름은 형용사 또는 형용사구를 사용할 수 있다.
    • ex) Readable
  • Test Class 이름은 테스트할 클래스 이름으로 시작하고 Test를 끝에 붙여준다.
    • ex) MyClassTest
    • sonarQube 에서의 Test Class 네이밍
      • Test 혹은 IT + 클래스 이름
      • 클래스 이름 + Test 또는 Tests 또는 TestCase 또는 IT 또는 ITCase

3.3 Method 이름

  • lowerCamelCase 로, 동사 또는 동사구로 작성한다.
  • Test Method 의 올바른 네이밍은 없음.
    • sonarQube : test + 메서드 이름으로 작성