Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ Item 68 ] 일반적으로 통용되는 명명 규칙을 따르라 #69

Open
qkrqudcks7 opened this issue Jun 12, 2022 · 0 comments
Open
Assignees
Labels
9장 일반적인 프로그래밍 원칙

Comments

@qkrqudcks7
Copy link

qkrqudcks7 commented Jun 12, 2022

일반적으로 통용되는 명명 규칙을 따르라

명명 규칙

패키지(Package)

  • 패키지와 모듈 이름은 각 요소룰 **.**으로 구분하여 계층적으로 짓는다.
  • 요소들은 모두 소문자 알파벳 혹은 숫자로 이뤄진다.
  • 예) com.google, org.eff
  • 패키지 이름의 나머지는 해당 패키지를 설명하는 하나 이상의 요소로 이뤄진다.
  • 각 요소는 일반적으로 8자 이하의 짧은 단어로 한다.
  • utilities보다는 util처럼 의미가 통하는 약어가 좋다.
  • 요소의 이름은 보통 한 단어 혹은 약어로 이루어진다.
  • 많은 기능을 제공하는 애플리케이션의 경우, 계층을 더 많은 요소로 나누는 것이 좋다.

클래스, 인터페이스, 열거 타입

  • 하나 이상의 단어로 이뤄지며, 각 단어는 대문자로 시작한다.
  • 여러 단어의 첫글자만 딴 약자나 널리 통용되는 줄임말을 제외하고는 줄임말을 쓰지 않도록 한다.
  • 조합한 단어를 구분할 수 있게 camel case로 작성한다.

메서드, 필드명

  • 첫 글자를 소문자로 작성하고 클래스 명과 같게 단어 별로 camel case로 작성한다.
  • 첫 단어가 약자라면 단어 전체가 소문자여야 한다.
  • 상수 필드는 예외다. 상수 필드를 구성하는 단어는 모두 대문자로 쓰며 단어 사이는 _로 구분한다. (VALUES, NEGATIVE_INFINITY등..)
  • 상수 필드는 static final인 타입을 의미한다.
  • 가르키는 객체가 불변이라면, 그 타입은 가변이어도 상수이다.
  • 지역번수에도 동일한 규칙이 적용된다. 단, 문맥에서 의미를 쉽게 유추할 수 있는 경우에는 약어를 사용해도 좋다. (i, denom, houseNum등..)
  • 타입 매개변수의 이름은 한 글자로 표현한다.
    • T: 임의의 타입 (Type)
    • E: 컬렉션의 원소 (Element)
    • K: 맵의 키 (Key)
    • V: 맵의 값 (Value)
    • X: 예외 (eXception)
    • R: 메서드의 반환타입 (Return)
    • 그 이외의 타입에는 T, U, V 혹은 T1, T2, T3의 식으로 사용

문법 규칙

  • 객체를 생성할 수 있는 클래스나 열거타입 인터페이스는 단수 명사나 명사구를 사용한다.

    • ex) Thread, PriorityQueue, ChessPiece 등..
  • 객체를 생성할 수 없는 클래스 (Utils 클래스)에는 보통 복수형 명사로 짓는다.

    • ex) Collectors, Collections 등..
  • 인터페이스 이름은 클래스명과 동일하게 짓거나, ible, able로 끝나는 형용사로 짓는다.

    • ex) Runnable, Iterable, Accessible 등…
  • 애너테이션은 워낙 다양하게 활용되어 지배적인 규칙이 없이 명사, 형용사, 동사, 전치사가 두루 쓰인다.

  • 메서드의 이름은 동사나 목적어를 포함한 동사구로 짓는다.

    • ex) append, drawImage
  • boolean 값을 반환하는 메서드라면 is 나 has로 시작하고 명사나 명사구, 형용사로 끝낸다.

    • ex) isDigit, isEmpty, hasSiblings 등..
  • 반환타입이 boolean이 아닌경우 보통 명사, 명사구 혹은 get 으로 시작하는 동사구로 짓는다.

    • ex) size, hashcode, getTime 등…
    • get으로 시작하는 형태는 주로 자바빈즈(JavaBeans) 명세에 뿌리를 두고 있다.
    • 보통 getter/setter의 한 묶음 형태로 만드는 경우가 많다.
  • 반환타입을 또다른 타입을 반환하는 경우에는 toType 의 형태로 짓는다.

    • ex) toString, toArray 등..
  • 객체의 내용을 다른 뷰로 보여주는 메서드는 asType 의 형태로 짓는다.

    • ex) asList, asMap 등..
  • 객체의 값을 기본 타입(primitive type)으로 반환하는 경우에는 typeValue 의 형태로 짓는다.

    • ex) intValue, longValue 등…
  • 정적 팩터리의 이름은 다양하지만 from, valueOf, getInstance, newInstance 등을 흔히 사용한다.


핵심 정리

  • 표준 명명 규칙을 체득하여 자연스럽게 사용하도록 연습하자
  • 철자 규칙은 직관적이라 모호한 부분이 적지만, 문법 규칙은 더 복잡하고 느슨하다
  • 오랫동안 따라온 규칙과 충돌한다면 그 규칙을 맹종해서는 안 된다.
@qkrqudcks7 qkrqudcks7 added the 9장 일반적인 프로그래밍 원칙 label Jun 12, 2022
@qkrqudcks7 qkrqudcks7 self-assigned this Jun 12, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
9장 일반적인 프로그래밍 원칙
Projects
None yet
Development

No branches or pull requests

1 participant