새소식

반응형
Java

자바 코드 컨벤션 (2)

  • -
반응형

아래의 글은 네이버 캠퍼스 핵데이 Java 코딩 컨벤션을 기준으로 작성된 글입니다.

 

▶중괄호


K&R 스타일로 중괄호 선언

  • 클래스 선언, 메서드 선언, 조건/반복문 등의 코드 블럭을 감싸는 중괄호에 적용되는 규칙이다.
  • 중괄호 선언은 K&R 스타일을 따른다.
    • 줄의 마지막에서 시작 중괄호를 ‘{’ 를 쓰고 열고 새줄을 삽입한다.
    • 블럭을 마친후에는 새줄 삽입 후 중괄호를 닫는다.
    • else, catch, finally, while(do while)은 닫는 중괄호와 같은 줄에 선언
//Bad Example
public class SearchConditionParser
{
    public boolean isValidExpression(String exp)
    {

        if (exp == null)
        {
            return false;
        }

        for (char ch : exp.toCharArray())
        {
             ....
        }

        return true;
    }
}

//Good Example
public class SearchConditionParser {
    public boolean isValidExpression(String exp) {

        if (exp == null) {
            return false;
        }

        for (char ch : exp.toCharArray()) {
            ....
        }

        return true;
    }
}

빈 블럭에 새 줄 없이 중괄호 닫기 허용

  • 내용이 없는 블럭을 선언할 때는 같은 줄에서 중괄호를 닫는 것을 허용한ㄷ.ㅏ

조건/반복문에 중괄호 필수 사용

  • 조건, 반복문이 한 줄로 끝나더라도 중괄호를 활용한다.
  • 이 문서에 언급된 중괄호의 전후의 공백, 제어문 앞 뒤의 새줄 규칙도 함께 고려한다.
//Bad Example
if (exp == null) return false;

for (char ch : exp.toCharArray()) if (ch == 0) return false;

//Good Example
if (exp == null) {
    return false;
}

for (char ch : exp.toCharArray()) {

    if (ch == 0) {
        return false;
    }

}

〰️줄바꿈


최대 줄 너비는 120

  • 최대 줄 사용 너비는 120자까지 가능하다.

줄바꿈 후 추가 들여쓰기

  • 줄바꿈 이후 이어지는 줄에서는 최초 시작한 줄에서보다 적어도 1단계의 들여쓰기를 더 추가한다.

줄바꿈 허용 위치

  • 가독성을 위해 줄을 바꾸는 위치는 다음 중의 하나로 한다.
    • extends 선언 후
    • implements 선언 후
    • throws 선언 후
    • 시작 소괄호 ( 선언 후
    • 콤마 , 후
    • . 전
    • 연산자 전
//Good Example
public boolen isAbnormalAccess (
    User user, AccessLog log) {

    String message = user.getId() + "|" | log.getPrefix()
        + "|" + SUFFIX;
}

📰빈 줄


pakage 선언 후 빈 줄 삽입

//Good Example
package com.naver.lucy.util;

import java.util.Date;

import 선언의 순서와 빈 줄 삽입

  • import 구절은 아래와 같은 순서로 그룹을 묶어서 선언한다.
    • 각 그룹 사이에는 빈줄을 삽입한다.
    • 같은 그룹 내에서는 알파벳 순으로 정렬한다.
    • 평소 import를 하는 데에도 지정된 순서가 있을까 궁금했었는데 진짜 순서가 정해져 있었다.
1. static imports
2. java.
3. javax.
4. org.
5. net.
6. 8~10을 제외한 com.*
7. 1~6, 8~10을 제외한 패키지에 있는 클래스
8. com.nhncorp.
9. com.navercorp.
10. com.naver.
//Good Example
import java.util.Date;
import java.util.List;

import javax.naming.NamingException;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.util.Assert;

import com.google.common.base.Function;

import com.naver.lucy.util.AnnotationUtils;

메소드 사이에 빈 줄 삽입

  • 메서드의 선언이 끝난 후 다음 메서드 선언이 시작되기 전에 빈줄을 삽입한다.

🈳공백


공백으로 줄을 끝내지 않음

  • 빈 줄을 포함하여 모든 줄은 탭이나 공백으로 끝내지 않는다.

중괄호의 시작 전, 종료 후에 공백 삽입

  • 여는 중괄호 { 앞에는 공백을 삽입한다. 닫는 중괄호 } 뒤에 else, catch 등의 키워드가 있을 경우 중괄호와 키워드 사이에 공백을 삽입한다.
//Good Example
public void printWarnMessage(String line) {
    if (line.startsWith(WARN_PREFIX)) {
        ...
    } else {
        ...
    }
}

제어문 키워드와 여는 소괄호 사이에 공백 삽입

  • if, for, while, catch, synchronized, switch 와 같은 제어문 키워드의 뒤에 소괄호 (, ) 를 선언하는 경우, 시작 소괄호 앞에 공백을 삽입한다.
//Good Example
if (maxLine > LIMITED) {
    return false;
}

식별자와 여는 소괄호 사이에 공백 미삽입

  • 식별자와 여는 소괄호 사이에는 공백을 삽입하지 않는다.
  • 생성자와 메서드의 선언, 호출, 에너테이션 선언 뒤에 쓰이는 소괄호가 그에 해당한다.

제네릭스 산괄호의 공백 규칙

  • 제네릭스 선언에 쓰이는 산괄호 주위의 공백은 다음과 같이 처리한다.
- 제네릭스 메서드 선언 일 때만 앞에 공백을 삽입한다.<
- < 뒤에 공백을 삽입하지 않는다.
- > 앞에 공백을 삽입하지 않는다.
- 아래의 경우를 제외하고는 `>`뒤에 공백을 삽입한다.
	- 메서드 레퍼런스가 바로 이어질 때
	- 여는 소괄호('(')가 바로 이어질 때
	- 메서드 이름이 바로 이어질 때
public static <A extends Annotation> A find(AnnotatedElement elem, Class<A> type) { // 제네릭스 메서드 선언
    List<Integer> l1 = new ArrayList<>(); // '(' 가 바로 이어질때
    List<String> l2 = ImmutableList.Builder<String>::new; // 메서드 레퍼런스가 바로 이어질 때
    int diff = Util.<Integer, String>compare(l1, l2); // 메서드 이름이 바로 이어질 때
}

콜론의 앞 뒤에 공백 삽입

  • 반복문과 삼항 연산자에서 콜론의 앞 뒤에는 공백을 삽입한다.
  • 라벨 선언 뒤에는 아무런 문자열의 없으므로 앞에만 공백을 삽입한다.
//Good Example
for (Customer customer : visitedCustomers) {
    AccessPattern pattern = isAbnormal(accessLog) ? AccessPattern.ABUSE : AccessPattern.NORMAL;
    int grade = evaluate(customer, pattern);

    switch (grade) {
        case GOLD :
            sendSms(customer);
        case SILVER :
            sendEmail(customer);
        default :
            inreasePoint(customer)
    }
}

주석문 기호 전후의 공백 삽입

  • 주석의 전 후에는 아래와 같이 공백을 삽입한다.
    • 명령문과 같은 줄에 주석을 붙일 때 // 앞
    • 주석 시작 기호 // 뒤
    • 주석 시작 기호 /* 뒤
    • 블록 주석을 한 줄로 작성시 종료 기호 */ 앞
//Good Example
/*
 * 공백 후 주석내용 시작
 */

System.out.print(true); // 주석 기호 앞 뒤로 공백

/* 주석내용 앞에 공백, 뒤에도 공백 */
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.