티스토리 뷰

표준 명명 규칙을 체화하여 자연스럽게 배어 나오도록 하자

 

자바 플랫폼은 명명 규칙이 잘 정립되어 있으며, 크게 철자문법, 두 범주로 나뉜다.

철자 규칙이나 문법 규칙을 어기면 다른 프로그래머들이 그 코드를 읽기 번거로울 뿐 아니라 다른 뜻으로 오해할 수도 있고 그로 인해 오류까지 발생할 수 있다.

 

🎈 철자 규칙

철자 규칙은 패키지, 클래스, 인터페이스, 메서드, 필드, 타입 변수의 이름을 다룬다.

철자 규칙을 어긴 API는 사용하기 어렵고, 유지보수하기 어렵다.

 

패키지와 모듈

  • 각 요소를 점(.)으로 구분하여 계층적으로 짓는다.
  • 요소들은 모두 소문자 알파벳 혹은 숫자로 이뤄진다.
  • 조직 바깥에서도 사용될 패키지라면 인터넷 도메인 이름을 역순으로 사용한다.
    • ex) edu.cmu, com.google, org.err
    • 예외) 표준 라이브러리와 선택적 패키지들은 각각 java와 javax로 시작한다.
  • 일반적으로 8자 이하의 짧은 단어로 한다.
  • 여러 단어로 구성된 이름이라면 awt처럼 각 단어의 첫 글자만 따서 써도 좋다.
  • 요소의 이름은 보통 한 단어 혹은 약어로 이뤄진다.
  • 많은 기능을 제공하는 경우엔 하나의 패키지에서 계층을 나눠 더 많은 요소로 구성해도 좋다.
    • 이처럼 하부의 패키지를 하위 패키지라 부른다

 

클래스와 인터페이스

  • 하나 이상의 단어로 이뤄지며, 각 단어는 대문자로 시작한다.
  • 여러 단어의 첫 글자만 딴 약자나 max, min처럼 널리 통용되는 줄임말을 제외하고는 단어를 줄여 쓰지 않도록 한다.
  • 약자의 경우 첫 글자만 대문자로 할지 전체를 대문자로 할지는 살짝 논란이 있다.

 

메서드와 필드

  • 클래스 명명 규칙과 같지만 첫 글자를 소문자로 쓴다는 점이 다르다.
  • 단, '상수 필드'는 예외다. 상수 필드를 구성하는 단어는 모두 대문자로 쓰며 단어 사이는 밑줄로 구분한다. (VALUES, NEGATIVE_INFINITY 등)
  • 이름에 밑줄을 사용하는 요소는 상수 필드가 유일하다.

 

지역변수

  • 약어를 사용해도 좋다. (i, denom, houseNum)
  • 입력 매개변수도 지역변수의 하나이지만, 메서드 설명 문서에 등장하는 만큼 일반지역변수보다 신경을 써야 한다.

 

타입 매개변수

  • 타입 배개변수 이름은 보통 한 문자로 표현한다.
  • T : 임의의 타입
  • E : 컬렉션 원소의 타입
  • K, V : 맵의 키와 값
  • X : 예외
  • R : 메서드의 반환 타입
  • T, U, V 혹은 T1, T2, T3 : 그 외에 임의 타입의 시퀀스

철자 규칙 정리

식별자 타입 ex
패키지와 모듈 org.junit.jupiter.api, com.google.common.collect
클래스와 인터페이스 Stream, FutureTask, LinkedHashMap, HttpClient
메서드와 필드 remove, groupingBy, getCrc
상수 필드 MIN_VALUE, NEGATIVE_INFINITY
지역변수 i, denom, houseNum
타입 매개변수 T, E, K, V, X, R, U, V, T1, T2

 

🎨 문법 규칙

 

패키지에 대한 규칙은 따로 없다.

  • 객체를 생성할 수 있는 클래스
    • 단수 명사 / 명사구
    • Thread, PriorityQueue
  • 객체를 생성할 수 없는 클래스
    • 복수형 명사
    • Collectors, Coolections
  • 인터페이스
    • 클래스와 똑같이 지음 / ~able, ~ible
    • Collection, Comparator, Runnable, Iterable
  • 애너테이션
    • 지배적인 규칙 없이 두루 쓰인다.
  • 동작을 수행하는 메서드
    • 동사 / 동사구
    • append, drawImage
  • boolean 값을 반환하는 메서드
    • is~, has~
    • isDigit, isEmpty, hasToken
  • 반환 타입이 boolean이 아닌 메서드
    • 명사 / 명사구 / get~
    • size, hasCode, getTime
  • 객체의 타입을 바꿔서 다른 객체를 반환하는 메서드
    • toType
    • toString, toArray
  • 객체의 내용을 다른 뷰로 보여주는 메서드
    • asType
    • asList
  • 객체의 값을 기본 타입 값으로 반환하는 메서드
    • typeValue
    • intValue
  • 정적 팩토리 메서드
    • from, of, valueOf, instance, getInstance

 

댓글
공지사항
최근에 올라온 글