구글 컨벤션
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
+ 메서드 이름으로 작성
- sonarQube :
Ready for more?