구글 컨벤션
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
+ 메서드 이름으로 작성