Code Convention (JAVA)
파일 공통 요건
파일 인코딩은 UTF-8 [encoding-utf8]
모든 소스, 텍스트 문서 파일의 인코딩은 UTF-8로 통일한다.
이름 (Naming)
식별자에는 영문/숫자/언더스코어만 허용 [identifier-char-scope]
- 변수명, 클래스명, 메서드명 등에는 영어와 숫자만을 사용한다. 상수에는 단어사이의 구분을 위해 언더스코어(_)를 사용한다.
- 정규표현식 ‘[^A-Za-z0-9_]'에 부합해야 한다.
한국어 발음대로 표기 금지 [avoid-korean-pronounce]
-
- 식별자의 이름을 한글 발음을 영어로 옮겨서 표기하지 않는다. 한국어 고유명사는 예외이다.
-
deohagi ()
-
plus ()
패키지 이름은 소문자로 구성 [package-lowercase]
-
- 패키지 이름은 소문자를 사용하여 작성한다. 단어별 구문을 위해 언더스코어(_)나 대문자를 섞지 않는다.
-
package com.megazone.apiGate_way
-
package com.megazone.apigateway
클래스/ 인터페이스 이름에 대문자 카멜표기법 적용 [class-interface-lower-camelcase]
-
- 클래스 이름은 단어의 첫 글자를 대문자로 시작하는 대문자 카멜표기법(Upper camel case)을 사용한다.
-
public class reservation , public class Servicename
-
public class Reservation , public class ServiceName
메서드 / 변수 이름에 소문자 카멜표기법 적용 [method-lower-camelcase]
- 메서드 / 변수 이름에는 첫 번째 단어를 소문자로 작성하고, 이어지는 단어의 첫 글자를 대문자로 작성하는 소문자 카멜표기법을 사용한다.
상수는 대문자와 언더스코어로 구성 [constant_uppercase]
-
- 상태를 가지지 않는 자료형이면서 ‘static final'로 선언되어 있는 필드일 때를 상수로 간주한다. 상수 이름은 대문자로 작성하며, 복합어는 언 더스코어(_)를 사용하여 단어를 구분한다.
-
public final int unlimited = -1;
-
public final String POSTALCODEEXPRESSION = "POST";
-
public final int UNLIMITED = -1;
-
public final String POSTAL_CODE_EXPRESSION = "POST";
임시 변수외에는 1글자 이름 사용 금지[avoid-1-char-var]
static import에만 와일드 카드 허용[avoid-star-import]
-
- 클래스를 import할때는 와일드카드(*)없이 모든 클래스명을 다쓴다.
-
import java.util.*;
-
import java.util.List;
-
import java.util.ArrayList;
문법
한줄에 한문장
-
- 문장이 끝나는 ; 뒤에는 새줄을 삽입한다.
-
int base = 0; int weight = 2;
-
int base = 0;
-
int weight = 2;
하나의 선언문에는 하나의 변수만
-
- 변수 선언문은 하나의 변수만을 다룬다.
-
int base,weight;
-
int base;
-
int weight;
-
- 배열에서 대괄호는 타입 뒤에 선언
-
String names[];
-
String[] names;
-
long형 값의 마지막에 ‘L' 붙이기
-
- long형의 숫자에는 마지막에 대문자 ‘L'을 붙인다. 소문자'l'보다 숫자 ‘1'과의 차이가 커서 가독성이 높아진다.
-
long base = 123456789l;
-
long base = 123456789L;
들여쓰기 (Indentation)
하드탭 사용
- 탭 문자를 사용하여 들여쓴다. 탭 대신 스페이스를 사용하지 않는다.
탭의 크기는 4개의 스페이스
- 1개의 탭의 크기는 스페이스 4개의 크기와 같도록 에디터에서 설정한다.
블럭 들여쓰기
- 클래스, 메서드, 제어문 등의 코드 블럭이 생길 때마다 1단계를 더 들여쓴다.
중괄호 (Braces)
- K&R 스타일로 중괄호 선언
- 클래스 선언, 메서드 선언, 조건/반복문 등의 코드 블럭을 감싸는 중괄호에 적용되는 규칙이다. 중괄호 선언은 K&R 스타일을 따른다. 줄의 마 지막에서 시작 중괄호'{‘를 쓰고 열고 새줄을 삽입한다. 블럭을 마친후에는 새줄 삽입 후 중괄호를 닫는다.
public class SearchConditionParser {
public boolean isValidExpression(String exp) {
if (exp == null) {
return false;
}
for (char ch : exp.toCharArray()) {
....
}
return true;
}
}
public class SearchConditionParser {
public boolean isValidExpression(String exp) {
if (exp == null) {
return false;
}
for (char ch : exp.toCharArray()) {
....
}
return true;
}
}
닫는 중괄호와 같은 줄에 else, catch, finally, while 선언
아래의 키워드는 닫는 중괄호(}) 와 같은 줄에 쓴다.
-
else
-
catch, finaly
-
do-while 문에서의 while
if(line.startWith(WARNING_PREFIX)){
return LogPattern.WARN;
}
else if(line.startWith(DANGER_PREFIX)){
return LogPattern.DANGER;
}
else{
return LogPattern.NORMAL;
}
if(line.startWith(WARNING_PREFIX)){
return LogPattern.WARN;
}
else if(line.startWith(DANGER_PREFIX)){
return LogPattern.NORMAL;
}
else{
return LogPattern.NORMAL;
}
try{
writeLog();
}catch(IOException ioe){
reportFailure(ioe);
}finally{
writeFooter();
}
try{
writeLog();
}catch(IOException ioe){
reportFailure(ioe);
}finally{
writeFooter();
}
do{
write(line);
line=readLine();
}while(line!=null);
do{
write(line);
line=readLine();
}while(line!=null);
주석 (Comment)
주석을 코드 템플릿기능을 사용하여 작성한다. 에디터에서 메서드나 클래스에 주석을 통해 코멘트를 작성할 때 코드템플릿 기능을 사용한다.
클래스 주석
-
import 다음에 기술
-
블록주석을 사용
-
각 라인은 *로 시작
-
해당 클래스에 대한 기능과 용도 기술
/**
* .
*
* @author
* @version 1.0,
* /
메소드 주석
-
메소드 상단에 위치
-
블록주석을 사용
-
메서드 기능 설명은 한, 두 줄로 간결하게
/**
* ..
*
*/
기타 주석처리
- 코드 내부의 짧은 주석은 // …로 표기
- 특별한 경우를 제외하고는 주석을 사용하지 않는다.
- 의문점이나 해결못한 것은 임시주석 사용 /* … */