HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🦞
프로그래머스 데브코스
/
구글 자바 코딩 컨벤션 (Google Standard coding style)

구글 자바 코딩 컨벤션 (Google Standard coding style)

생성일
Apr 5, 2022 07:48 PM
태그

주의

  • 구글 자바 코딩 컨벤션이 표준은 아니다.

용어

  • class 라는 용어는 class, enum class, interface, 각 어노테이션 유형을 의미하기 위해 포괄적으로 사용됨.
  • class 내의 member 라는 용어는 중첩된 클래스, 필드, 메소드, 생성자를 의미하기 위해 포괄적으로 사용됨.
  • comment라는 용어는 항상 주석을 의미함.

소스 파일 기본 사항

  • 파일 이름은 파일 내 최상위 클래스의 대소문자가 구분된 이름과 .java 확장자로 구성됨.
  • 소스 파일은 UTF-8로 인코딩 됨.
  • 탭 문자는 들여 쓰기에 사용되지 않음.
  • non-ascii 문자는 코드를 더 쉽게 읽고 이해할 수 있는 방법에 따라 실제 유니코드 문자 또는 동등한 유니 코드 이스케이프가 사용됨. (ex) ∞과 \u221e)
  • 일부 프로그램이 non-ascii문자를 제대로 처리하지 못할 수 있다는 두려움 때문에 코드의 가독성을 낮추는 것은 좋지 않음.

소스 파일 구조

  • 소스 파일의 구성 순서
    • 라이센스 또는 저작권 정보 (있는 경우)
    • package 구문
    • import 구문
    • 정확히 하나의 최상위 Class
    • 🍔
      이 때 각 섹션은 정확히 하나의 빈 줄 만으로 구분되어야 함.

package & import

  • package문 및 import문은 후술할 열 제한 100자에 제한받지 않음.
  • import문에서 와일드 카드는 사용하면 안되고 줄 바꿈 또한 불가하다.
  • static import, non-static import 순으로 모아서 작성하고 하나의 빈 줄이 두 블록을 구분한다.
  • 각 블록 내의 import 문들은 Ascii 정렬 순서를 따른다.

class

  • 클래스의 멤버의 순서에 대해 정해진 방법은 없다. 그러나 관리자가 요청하면 설명할 수 있을 만큼의 논리적 순서는 사용해야 한다.
    • (ex) 습관적으로 새로운 메소드를 추가할 때마다 맨 뒤에 작성했다면, 이는 논리적 순서가 아닌 “:추가 된 날짜 별 시간순” 순서임)
  • Overload되는 메소드들은 같은 위치 분할 없이 같은 블록에 나타나야 한다.
  • 이는 동일한 이름을 가진 여러 생성자나 메서드의 경우도 마찬가지이다.

서식

괄호

  • if, else, for, do 및 while문의 경우 body가 비어있거나 단 한 줄의 내용만 있더라도 중괄호가 생략되어서는 안된다.
  • body가 비어있지 않는 경우 다음을 따른다.
    • 여는 중괄호 앞에 줄 바꿈 없음.
    • 여는 중괄호 뒤에 줄 바꿈.
    • 닫는 중괄호 앞의 줄 바꿈.
    • 닫는 중괄호 뒤의 줄 바꿈. 다만 뒤에 else나 ,가 오는 경우 줄 바꿈 없음.
  • body가 비어있는 경우는 다음을 따른다.
    • 여는 중괄호 뒤에 줄 바꿈은 선택이다. (간결한 빈 블럭 사용 가능)
    • 다만 else나 else if가 붙는 if, else if, else, try, catch같이 멀티 블럭 구문에서는 간결한 빈 블럭의 사용이 불가능하다.

공백

  • 새 블록 또는 블록과 유사한 구조가 열릴 때마다 공백 두 번을 들여쓰기로 사용한다.
  • 블록이 끝나면 들여쓰기는 이전 들여쓰기 수준으로 돌아간다.
  • 이는 전체 코드 및 주석 모두에 적용된다.
  • 세로 공백은 보통 하나의 빈 줄을 사용한다. 여러 개의 빈 줄이 허용되지만 권장은 아니다.
    • 클래스의 멤버, 정적 초기화 및 인스턴스 사이에 세로 공백이 들어간다.

한 줄

  • 한 줄에는 하나의 문만이 들어가야 하며 각 문 뒤에는 줄 바꿈이 있다.
  • 한 줄의 열 제한은 100글자이다. 이 때 한 글자는 모든 유니 코드 코드 포인트를 의미한다.
  • 따라서 일본어, 한자, 한글, 숫자 등을 이용하는 경우 너비와 상관 없이 먼저 줄 바꿈하도록 선택할 수 있다.
  • 앞서 언급했듯이 import 및 package 문은 제외된다.
  • 이 외에 일부 제외되는 케이스에는 reference 참조.

네이밍

Package Name

  • 모두 소문자이다.
  • 연속된 단어는 밑줄 없이 단순히 함께 연결된다.

Class Name

  • 대문자로 시작하는 UpperCamelCase로 작성된다.
  • 일반적으로 명사 혹은 명사 구이다. 그러나 때로는 형용사 구일 수도 있다.
  • 어노테이션 유형 이름의 경우 특정 규칙은 없다.
  • 테스트 클래스의 이름은 테스트중인 클래스의 이름에 Test를 붙여준다.

Method Name

  • 소문자로 시작하는 lowerCamelCase로 작성된다.
  • 일반적으로 동사 혹은 동사 구이다.
  • Junit 테스트 메소드의 이름엔 논리적 구성 요소를 구분하기 위해 _ 를 사용할 수 있다.
  • 테스트 메소드의 이름을 작성하는 올바른 방법은 없다.

Constant Name

  • 모두 대문자로 표시한다.
  • 각 단어는 _ 로 구분한다.

상수를 제외한 나머지 필드

  • 소문자로 시작하는 lowerCamelCase로 작성된다.
  • 일반적으로 명사 혹은 명사 구이다.

Parameter

  • 소문자로 시작하는 lowerCamelCase로 작성된다.
  • 공용 메소드에서 한 문자로 이루어진 이름은 권장되지 않는다.

Local Variable

  • 소문자로 시작하는 lowerCamelCase로 작성된다.
  • final이나 불변인 경우에도 지역 변수는 상수로 간주되지 않으며 상수의 Naming 방식을 따라서도 안된다.

Reference

[JAVA] Google Java Style Guide 번역
우아한 테크코스 과제는 Clean Code, 즉 코딩 컨벤션을 준수해야 한다. 이해하기 쉬운 말로 좀 수정하고 받아 적어 정리하면서 깊게 쭉❗️ 훑어보자. 혹시나 이 자료를 찾는 사람들에게 도움이 되길 바라며*** 우테코 측에서 프로그램 요구사항으로 제시한 구글 자바 스타일 문서를 번역기로 돌려 보았더니 허허 🐌 본문 내용을 이사하면서 글을 다시 읽어보고 오역이 있는 부분을 수정했습니다.혹시나 잘못된 부분있다면 편하게 남겨주세요 !
[JAVA] Google Java Style Guide 번역
https://newwisdom.tistory.com/96
[JAVA] Google Java Style Guide 번역
Google Java Style Guide
This document serves as the complete definition of Google's coding standards for source code in the Java™ Programming Language. A Java source file is described as being in Google Style if and only if it adheres to the rules herein.
Google Java Style Guide
https://google.github.io/styleguide/javaguide.html