일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 익명 클래스
- 항해99
- 자바할래
- junit 5
- 합병 정렬
- 함수형 인터페이스
- yield
- annotation processor
- github api
- System.err
- 로컬 클래스
- 스파르타코딩클럽
- 제네릭 타입
- raw 타입
- 자바스터디
- 제네릭 와일드 카드
- 정렬
- 상속
- throwable
- 브릿지 메소드
- docker
- 람다식
- 접근지시자
- auto.create.topics.enable
- 프리미티브 타입
- Study Halle
- System.in
- Switch Expressions
- System.out
- 바운디드 타입
- Today
- Total
코딩하는 털보
클린 코드, 2. 의미 있는 이름 본문
클린 코드, 2. 의미 있는 이름
의도가 분명하게 이름을 사용하라.
변수나 함수, 클래스 이름은 그 존재 이유와 수행 기능, 사용 방법을 설명할 수 있어야 한다.코드의 의미를 흐리는 그릇된 정보를 피하라.
ex)Map<int, Account> accountList
의미있게 구분할 수 있는 이름을 사용하라.
a1, a2, ..., aN 같은 의도가 전혀 드러나지 않는 이름은 사용하지 않는다.
Info, Data, a, an, the 같은 불용어를 별다른 의미없이 사용하는것은 적절하지 않다.발음하기 쉬운 이름을 사용하라.
줄임말 같은 표현으로 발음이 이상해지는 이름은 좋지 않다.검색하기 쉬운 이름을 사용하라.
grep
이나 find 명령으로 찾을 때 쉽게 찾을 수 있는 단어를 사용하는 것이 좋다.인코딩을 피하라.
- 헝가리식 표기법
이름 첫글자에 그 요소의 타입을 주는 방법이다. 최근의 프로그래밍 언어는 컴파일러가 타입을 기억하고 제어하므로 타입 인코딩이 불필요하다. - 멤버 변수 접두어
멤버 변수와 그 외 변수를 구분하기 위해서 멤버 변수에m_
라는 접두어를 붙이던 관습이 있었으나 이제는 필요가 없다. - 인터페이스 클래스와 구현 클래스
추상화나 다형성을 사용하기 편하도록 인터페이스 이름에는 인코딩을 하지 않고 필요하다면 클래스 이름에 인코딩을 한다.
ex) interface ShapeFactory , class ShapeFactoryImp
- 헝가리식 표기법
자신의 기억력을 자랑하지 마라.
코드를 읽을 때 자신이 이해할만한 다른 이름으로 변환해야 하는 이름은 피한다.
루프를 제외한 다른 곳에서 문자 하나의 이름을 사용하는 것은 문제가 있다.
남들이 이해하기 쉬울 정도로 명료한 것이 최고다.클래스 이름은 명사나 명사구, 메서드 이름은 동사나 동사구로.
기발한 이름은 피한다.
나만의 또는 어떤 집단만의 유머가 담긴 코드는 재치있긴 하지만 가독성 제로한 개념에 한 단어만 사용하라.
같은 기능을 하는 요소를 다른 이름으로 사용하지 말자.
ex)get(), fetch(), retrieve()
,Controller, Manager, Driver
말장난을 하지 마라.
여기서의 말장난은 펀치라인을 말하는 것 같다. 한 단어를 두가지 뜻으로 말하는 바로 그것.
예를 들면 기존에 add라는 메서드를 숫자 더하기로 구현하다가 새로 작성하는 add 메서드에 집합에 요소를 추가하는 기능을 구현하면 말장난이다.해법 영역에서 가져온 이름을 사용하라.
적절한 프로그래밍 용어를 이름에 사용하는 것은 내용을 이해하기 쉽도록 도와준다.문제 영역에서 가져온 이름을 사용하라.
도메인과 관련이 깊은 코드는 도메인에서 이름을 가져온다.의미있는 맥락을 추가하라.
스스로 의미가 분명하지 못한 이름에는 맥락을 부여한다.클래스, 함수, 이름공간에 넣어서 맥락을 부여한다.
모든 방법이 실패하면 접두어를 사용한다.
ex) firstName, lastName, state 대신 addrFirstName, addrLastName, addrState
불필요한 맥락을 없애라.
ex) 애플리케이션 이름을 모든 클래스 앞에 붙이는 등.