티스토리 뷰

반응형

이전에는 자바 소스 코드를 작성할 때 크게 신경을 쓰지 않고 작성을 했었지만,

하나의 프로그램에 코딩을 같이 하는 프로그래머들 사이에서 컨벤션이 중요하고

이 후에 유지보수시에도 가독성의 문제를 많이 느끼게 되었습니다.

 

먼저 참조했던 문서입니다.

www.comp.nus.edu.sg/~cs2103/AY1617S1/contents/coding-standards-java.html

 

Java Coding Standard

 

www.comp.nus.edu.sg

 

 

영문으로 되어 있어서 다소 복잡할 텐데요, 이를 한국어로 한 번 풀어서 재작성해보려고 합니다. 

General Naming Conventions

8. All names should be written in English.

>> 모든 변수/함수명은 국제 표준 언어인 영어로 사용합니다.  

 

1. Names representing packages should be in all lower case.

com.company.application.ui

>> 패키지의 명은 소문자로 작성

다들 아시다시피 프로젝트를 작성하면 com.example.kr 와 같은 형태로 패키지가 작성되곤 합니다. 여기에서 대문자를 쓰는 것을 자제합니다. 단, System 변수 혹은 DI로 주입된 객체들의 패키지는 허용합니다.

import com.example.kr.somepackage.dto.ObjectDto;

 

2. Names representing classes or enum types must be nouns and written in mixed case starting with upper case.

>> 기본 클래스나 Enum 클래스의 명은 시작할 때 대문자를 사용합니다.

public class TheClassName {

}

public enum EFontGroup {

}

 

3. Variable names must be in mixed case starting with lower case.

4. Names representing constants (final variables) or enum constants must be all uppercase using underscore to separate words.

>> 변수명은 카멜 케이스(Camel Case) 를 사용하여 작성하며 언더스코어(_) 는 상수 선언 변수(Constants) 에만 적용합니다.

string, niYong

PAGING_NUMBER, FONT_COLOR

String str;
Object niYong;

public static final int PAGING_NUMBER = 20;
public static final String FONT_COLOR = "#0a0a0a";

 

5. Names representing methods must be verbs and written in mixed case starting with lower case.

10. Boolean variables should be prefixed with ‘is’

 

>> 메소드의 명은 영문으로 동사,(형용사/부사),명사 순서로 작성합니다.

또, 여기서 좀 더 찾아본 결과 is 와 can 을 사용함에 있어서는 아래와 같이 사용합니다.

is 뒤에는 형용사를 주로 사용하여 boolean 값을 리턴합니다.

public boolean isFixed(Object something);

public boolean isDeprecated(Method mthd);

public boolean isNullable(Optional obj);

 

can 뒤에는 동사를 주로 사용하여 boolean 값을 리턴합니다. 

public boolean canEdit(Object something);

public boolean canRead(File file);

public boolean canSeek(Optional opt);

 

get의 뒤에는 파라미터를 생략하고 혹시나 파라미터 변환을 해야 하는 경우 convert, 파라미터로부터 다른 데이터를 추출할 때는 from 전치사를 사용합니다.

public String getFirstName();

public String convertResidentNumber(ObjectDto dto);

public String getFristNameFromObject(ObjectDto dto);

 

has 뒤에는 명사를 사용하여 boolean 값을 리턴합니다. 

public boolean hasGender(ObjectDto dto);

6. Abbreviations and acronyms should not be uppercase when used as a (OR part of a) name.

>> 생략된 또는 간결한 단어는 소문자로 작성해줍니다.

public Object exportHtmlSource(); // HTML (X)
public void openDvdPlayer(); // DVD (X)

 

7. Private class variables can have underscore suffix or prefix (not common, but a beneficial practice)

>> 공식이 아니므로 생략합니다.

 

9. Variables with a large scope should have long names, variables with a small scope can have short names.

>> 범위가 큰 변수는 이름이 길어야하며, 범위가 작은 변수는 짧은 이름을 가집니다.

즉, 사용 범위가 넓은 Constants 는 변수명이 길수록 좋으며, 메소드 내에서 사용하는 변수명은 짧게 지어줍니다.

public static final int PAGING_NUMBER_VIEW_OF_CUSTOMER_SERVICE = 20;

public boolean isNaN(String str) { 
   try {
      int i = Integer.parseInt(str); // i와 같이 축약해서 사용
      return false;
   } catch (NumberFormatException ignored) {
      return true;
   }
}

 

11. Plural form should be used on names representing a collection of objects.

>> 개체 집합을 나타내는 이름에는 복수형을 사용합니다.

Collection<CustomerDto> customers;
int[] numbers;

 

12. Iterator variables should be called i, j, k etc.

>> 연속된 변수(또는 인덱스)를 상징하는 Iterator 변수는 i, j, k등으로 사용하고 i부터 시작하는 letter를 사용합니다. 

for (Iterator i = points.iterator(); i.hasNext(); ) {
    ...
}

for (int i = 0; i < nTables; i++) {
    ...
}

 

반응형
댓글
공지사항