Skip to content

구글 컨벤션

1. Formatting

1.1 Block indentation

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

1.2 One statement per line

  • 각 문 뒤에는 줄바꿈

1.3 Column limit

  • Java 코드의 열 제한은 100 자

2. Whitespace

수평 공백 (띄어쓰기)는 다음과 같이 나타낸다:

java
// 예약어 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()

예외

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

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

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

3. Naming

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

3.1 Package 이름

  • 패키지 이름은 모두 소문자이며 연속된 단어는 단순히 함께 연결
  • 올바른 예: com.example.deepspacenot
  • 잘못된 예: com.example.deepSpace, com.example.deep_space

3.2 Class 이름

  • UpperCamelCase 로 작성
  • 보통 명사 또는 명사로 작성
  • Interface 이름은 형용사 또는 형용사구를 사용할 수 있음 (예: Readable)
  • Test Class 이름은 테스트할 클래스 이름으로 시작하고 Test를 끝에 붙임 (예: MyClassTest)

sonarQube 에서의 Test Class 네이밍

  • Test 혹은 IT + 클래스 이름
  • 클래스 이름 + Test 또는 Tests 또는 TestCase 또는 IT 또는 ITCase

3.3 Method 이름

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