[Java강좌 - 26] Google Java Style - 2


Study/Java  2016.04.03 03:56

안녕하세요. 명월입니다.


이번 포스트는 저번 포스트에 이어서 Java 코딩 규약에 대해서 알아보겠습니다.

링크 - Google Java Style -1

3. 서식

3.7. 특정 구조
  3.7.1. 열거형, 배열 선언
  열거형 정수 다음에 쉼표, 그 이후 줄 바꿈은 선택이다.
new int{}{
  0, 1, 2, 3
}

new int[]{
  0,
  1,
  2,
  3,
}

new int[]{
  0, 1
  2, 3
}

new int[]
    {0, 1, 2, 3}
  3.7.2 변수 선언
  - 모든 변수 선언(맴버 또는 지역)은 하나의 변수 선언을 사용하지 않는다.
  - 맴버 변수는 사용하는 점 부근에서 선언합니다
  - 지역 변수는 일반적으로 초기화를 하거나 선언 후 즉시 초기화합니다.
public class ExText() {
  //맴버 변수
  private String item;
  public void test() {
    int c, d;	//이런 식으로 사용되지 않는다.
    //지역 변수는 상단 초기화
	String item2 = "테스트2"
	//맴버 변수는 사용될 띠 선언한다.
	item = "테스트";
	System.our.println(item + item2);
  }
}
  3.7.3. C 스타일 배열 선언
  String[] args로 선언한다.(C스타일인 String args[]가 아니다)

  3.7.4. Switch
    3.7.4.1. 들여쓰기
    - 스위치문 뒤에 열린 중괄호를 두고 줄 바꿈이 일어난다.
    - 줄 바꿈 후에는 +2 들여쓰기가 일어난다. 중괄호가 종료되면 이전 들여쓰기 수준으로 돌아간다.
    - case, default 뒤 줄바꿈이 일어난다. 줄 바꿈이 일어나면 블록이 열려있는 것처럼 +2 들여쓰기가 일어난다.
    - case, default 블록이 종료되면 이전 들여쓰기 수준으로 돌아간다.

    3.7.4.2. 통과주석
    - Switch ~ case는 기본적으로 break, return, throw로 switch의 블록 구분을 나타낸다.
    - 다음 case 계속된 실행을 나타낼 때는 /*계속 진행*/ 이라는 주석을 남긴다.
switch (input) {
  case 1:
  case 2:
    prepareOneOrTwo();
    //계속 진행
  case 3:
    handleOneTwoOrThree();
    break;
  default:
    handleLargeNumber(input);
}
  3.7.5. 어노테이션
  - 하나의 라인에 어노테이션을 사용한다. 들여쓰기는 증가하지 않는다.
@Override
@Nullable
public String getNameIfPresent() { ... }

  3.7.6. 주석
  - 주석은 주변 코드와 같은 수준의 들여쓰기를 사용한다.
/*
 * 안녕하세요. 명월일지입니다.
 */
// 명월일지 입니다.
  3.7.7. 숫자 리터럴
  - long 타입의 리터럴은 대문자로 사용 L (숫자와의 혼동을 피하기 위해서)

4. 네이밍

4.1. 패키지 이름
- 패키지 이름은 단순히 함께 연결된 연속 단어, 모두 소문자로 되어있다. com.example.deepspace

4.2. 클래스 이름 - 클래스 이름은 명사 또는 명사구입니다. 인터페이스 이름은 명사 또는 명사구, 형용사구이다. (형용사 + 명사)
- 클래스의 단어 구분은 대문자로 구분한다.
- Unit 테스트 클래스는 test로 시작합니다.

4.3. 메소드 이름
- 메소드 이름은 동사나 동사구이다. (동사 + 명사)
- 메소드의 단어의 구분은 대문자로 구분한다. - Unit 테스트 클래스는 test로 시작한다.

4.4. 상수 이름
- 상수 이름은 모두 대문자로 밑줄로 단어 구분이 된다.

4.5. 맴버 변수 이름
- 일반적으로 명사 또는 명사구이다.

4.6. 지역 변수 이름
- 일반적으로 명사 또는 명사구이다.
- 지역변수는 단어를 자유롭게 단축할 수 있다.
/*
 * Copyright (c) 1997, 2014, 저작권
 */
// 패키지 이름은 모두 소문자입니다.
package com.example.deepspace;

// 클래스 이름은 형용사구(형용사 + 명사) 또는 명사구(명사 + 명사)로 이루어져 있으며 구분은 대문자로 한다.
public class CodingTestClass {
	// 상수는 모두 대문자로 표시되며 구분자는 밑줄로 구분한다.
	public final static String KEY_NUMBER1 = "1";
	// 맴버변수는 명사구(명사 + 명사)로 구분된다.
	private String key = "abcde";

	// 메소드는 동사구(동사 + 명사) 또는 명사구(명사 + 명사)로 구분된다.
	public String convertKey(String keyType) {
		// 지역변수는 자유롭게 단축이 가능하다. returnVal -> retVal
		String retVal = this.key + keyType
		return retVal;
	}
}

5. 그외 규칙

5.1. @Override
- 인터페이스 방법을 구현하는 방법 또는 재정의하는 매소드의 경우는 @Override를 반드시 사용한다.

5.2 예외 규칙을 무시하지 않기
- try ~catch를 사용하는 경우 catch문안에 아무런 내용이 없으면 안 된다.

5.3. 정적의 참조
- 직접적인 참조로 사용한다.
public class CodingTestClass extends COdingParentsClass{
	//상속 받는 메소드는 반드시 Override를 선언한다.
	@Override
	public String transData(String data) {
		data += "trans";
		return data;
	}
	public static String getTransData() {
		return "exam";
	}
	public CodingTestClass() {
		//정적 메소드는 반드시 직접참조를 한다.
		// CodingTestClass codingTest
		// codingTest..getTransData() // 이렇게 사용하면 안된다.
		try {
			String temp = transData(CodingTestClass.getTransData());
		} catch (Exception e) {
			// catch 안에 아무런 내용이 없으면 안된다.
			e.printStackTrace();
		}
	}
}

6. 자바독

6.1 서식
  6.1.1 일반적인 양식
/**
 * 자바독에 대한 예제입니다.
 * 일반 적인 서식은 이런 형태입니다.
 */
public int method(String p1) { ... }
  6.1.2 단락
  - 한 줄의 빈 라인입니다.
  6.1.3 절
  - @param , @return , @throws , @deprecated의 네 가지 유형은 반드시 설명이 있어야 한다.
  6.1.4 내용
  - 반드시 하나의 문장으로 완성해야 합니다.
/**
 * 자바독에 대한 예제입니다.
 * 일반 적인 서식은 이런 형태입니다.
 *
 * 단락은 빈라인으로 표시됩니다.
 * 주석의 절은 반드시 하나의 문장으로 표시합니다.
 * @param p1 테스트 데이터를 입력합니다.
 * @return  테스트 데이터를 1 가산한 값으로 반환합니다.
 * @throws String을 1의 정수로 변환시에 수가 아닌 값이 문자열에 존재하면 에러를 발생합니다.
 * @deprecated Java 1.7 이전 버전에서는 사용하지 않습니다.
 */
public int method(String p1) { ... }

지금까지 저는 Google에서 제시하는 코딩규약에 대해서 공부하였습니다. 일반적으로 제가 알고 있는 Java코딩규약이랑 크게 다르지는 않네요. 다른 점이라고는 들여쓰기를 탭으로 했었는데 +2 스페이스 공간이란 차이가 있네요.
그 외에 규약이라고 보다는 throw에 처리가 없으면 안 되는 것, 자바독, 메소드와 변수 이름은 알고 있었으나 클래스이름은 (형용사 + 명사)인점은 처음 알았고 주의해야겠네요.


구글에서는 자바의 대표적인 IDE의 이클립스 코딩 스타일을 설정할 수 있는 설정파일을 배포하고 있습니다.


링크 - google/styleguide

저 같은 경우는 IDE를 이클립스로 많이 사용합니다. 실제적로 저도 항상 Default 코딩 스타일을 사용했었는데 이제부터라도 한번 사용해 봐야겠네요.


댓글 0개가 달렸습니다.
댓글쓰기