02. 의미있는 이름
이름 잘짓는 간단한 규칙 몇 가지 소개
#
요약#
의도를 분명히 하기- 좋은 이름은 가독성을 높여줌
지뢰찾기 게임 판 예시
#
그릇된 정보 X- 약어 사용시 유의 (다른 의미로 해석될 수 있음)
- 타입 명시시 다른 타입 안적히도록 주의
- 흡사한 이름 사용 X
- 유사한 개념은 유사하게 사용
- 일관성을 유지하지 않는다면 그릇된 정보가 나올 확률이 매우 높음
#
의미 있게 구분- 읽는사람이 다른 이름과 구분할 수 있도록 지어야 함
#
발음하기 쉬운 이름을 사용#
검색하기 쉬운 이름을 사용- 상수로 적지말고 의도를 담는 const(final) 변수 사용
#
인코딩 X- 여기서 인코딩은 명명시 부차적인 타입과 같은 정보를 새겨넣는 것을 말함
- 헝가리 표기법, 멤버 변수 접두어 사용 안해도 됨
- 인터페이스는 그대로 하고 구현체에 인코딩 하는 방법을 택함
- interface 예시:
ShapeFactory
- 구현체 예시:
ShapeFactoryImp
orCShapeFactory
- interface 예시:
#
자신의 기억력 자랑 X문제 해결과 관련된 이름이 아니라 자신이 그때 떠오르거나, 아는 이름으로 짓게 되는 경우 코드를 다시 보았을 때 헷갈릴 수 있어 가독성이 떨어짐
- 명료함이 최고
- 남들이 이해하는 코드를 짜는게 최고임
#
클래스 이름- 명사, 명사구
#
메서드 이름- 동사, 동사구
- 변경, 접근, 조건자는 javabean 표준에 따라 get, set, is 를 앞에 붙임
- 정적 팩토리 보단 일반 생성자를 권장함
- 정적 팩토리가 더 낫고, 일방 생성자를 막으려면 private으로 생성자를 지정해 막을 수 있음
#
기발한 이름 X- 재미난 이름보단 명료한 이름으로!
#
한 개념에 한 단어 사용- 한 프로젝트 내에서 일관성있는 어휘를 사용하는 코드를 개발
- 가독성 증가
- Manager. Controller, Driver 와 같은 것을 섞어쓰면 혼란스러울 수 있음
#
말장난 X- 한 단어를 두가지의 의미로 사용 X
- 예시, add 를 두 값을 더한다는 의미로 사용했으면
- 컬렉션에 값을 추가하는 것은 add보단 append나 insert 가 적절
#
해법 영역에 가져온 이름을 사용- 해법 영역이란, 프로그래머가 공부하는 전산 / 알고리즘 / 패턴 / 수학 과 같은 영역
- 해당 영역에 이름을 사용하는 것은 좋음
#
문제 영역에 가져온 이름을 사용- 문제 영역이란, 각 앱의 분야의 영역
- 예를 들어 음악 장르, 방송 송출과 관련된 용어 들
#
의미 있는 맥락을 추가- 클래스, 함수, 네임스페이스에 넣어 맥락을 부여
- 위가 다 실패하면 접두어를 붙임
#
불필요한 맥락 없애기- 모든 클래스에 앱이름 접두어를 붙이는 건 불필요한 맥락
- Gas Station Deluxe 라는 프로젝트가 있으면 모든 클래스에 GSD* 를 붙이는 격
- 의미가 분명하다면 짧은 이름을 권장
#
마치면서- 좋은 이름을 선택하려면 설명력이 좋아하고 문화적 배경이 같아야 가능하다
- 글처럼 가독성이 좋은 코드를 작성하려 노력해야 함
- 이 장에서 소개한 규칙을 이용해 코드 가독성이 높아지는지 살펴보기
- 스프링 토이 프로젝트를 하게 된다면 고고!
#
추가 공부해야할 사항- Abstract Factory 란?
- Visitor 패턴