티스토리 뷰

표준 명명 규칙을 체화하여 자연스럽게 배어 나오도록 하자
자바 플랫폼은 명명 규칙이 잘 정립되어 있으며, 크게 철자와 문법, 두 범주로 나뉜다.
철자 규칙이나 문법 규칙을 어기면 다른 프로그래머들이 그 코드를 읽기 번거로울 뿐 아니라 다른 뜻으로 오해할 수도 있고 그로 인해 오류까지 발생할 수 있다.
🎈 철자 규칙
철자 규칙은 패키지, 클래스, 인터페이스, 메서드, 필드, 타입 변수의 이름을 다룬다.
철자 규칙을 어긴 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
728x90
'Programming > Effective Java' 카테고리의 다른 글
[이펙티브자바] Item 69. 예외는 진짜 예외 상황에만 사용하라 (0) | 2022.08.04 |
---|---|
[이펙티브자바] Item 67. 최적화는 신중히 하라 (0) | 2022.07.31 |
[이펙티브자바] Item 1. 생성자 대신 정적 팩터리 메서드를 고려하라 (1) | 2022.07.30 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- IMAGE
- 아이템61
- dfs
- springboot
- docker
- 완탐
- Java
- OS
- EffectiveJava
- Container
- 백준
- bruteforce
- BFS
- Retrofit2
- 이펙티브자바
- BOJ
- docker-compose
- 아이템60
- 조합
- DevOps
- 운영체제
- 토큰기반인증
- dp
- cicd
- 완전탐색
- subset
- 순열
- 그래프탐색
- 아이템59
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함
250x250