1장 깨끗한 코드
깨끗한 코드란?
이 단어에 다양한 정의가 존재하는 아래는 우리 분야에서 유명한 프로그래머들이 말한 정의이다.
- 우아하다: 보는 사람에게 즐거움을 선사한다.
- 효율적이다: 단순히 속도만을 뜻하지 않고 CPU 자원 등 많은 것을 뜻한다.
- 철저한 오류 처리가 필요하다: 메모리 누수, 경쟁 상태, 일관성 없는 명명법 등을 조심하자.
- 한 가지를 잘한다: 나쁜 코드는 너무 많을 일을 하려다 의도가 뒤섞이지만 깨끗한 코드는 한 가지에 집중한다.
- 가독성이 좋다: 잘 쓴 문장처럼 읽혀야 한다.
- 다른 사람이 고치기 쉽다.
- 주의 깊게 짰다는 느낌을 준다.
- 작게 추상화한다.
- 중복이 없다.
2장 의미 있는 이름
'변수, 함수, 인수와 클래스, 소스 파일, 소스 파일 내 디렉터리 등 소프트웨어에서 이름은 어디나 쓰인다.'
1. 의도를 분명히 밝혀라
변수나 함수,클래스의 이름은 다음과 같은 질문에 모두 답해야 한다.
존재 이유는? 수행기능은? 사용 방법은?
따로 주석이 필요하다면 이름에 의도를 분명히 드러내지 못한 것이다.
의도가 드러나는 이름을 사용하면 코드 이해와 변경이 쉬워진다.
2. 그릇된 정보는 피하라
- 코드에 그릇된 단서를 남겨서는 아된다. 그릇된 단서는 코드 의미를 흐린다.
- 나름대로 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용해도 안된다. Ex) hp, aix 등
- 여러 계정을 그룹으로 묶을 때 실제 List가 아니라면 accountList라 명명하지 않는다. 게다가 실제 List인 경우라도 컨테이너 유형을 이름에 넣지 않는 것이 바람직하다.
- 서로 흡사한 이름을 사용하지 않도록 주의한다.
- 유사한 개념은 유사한 표기법을 사용한다.
3. 의미 있게 구분하라
컴퍼일러나 인터프리터만 통과하려는 생각으로 코드를 구현하는 프로그래머는 스스로 문제를 일으킨다.
연속된 숫자(a1, a2..)를 붙이거나 불용어(Info, Data 등)를 추가하는 방식은 적절하지 않다.
4. 발음하기 쉬운 이름을 사용하라
발음하기 어려운 이름은 토론하기도 어렵다.
5. 검색하기 쉬운 이름을 사용하라
간단한 메서드에서 로컬 변수만 한 문자를 사용한다. 이름 길이는 범위 크기에 비례해야 한다.
변수나 상수를 여러곳에서 사용한다면 검색하기 쉬운 이름이 바람직하다.
6. 인코딩을 피하라
굳이 부담을 더하지 않아도 이름에 인코딩할 정보는 매우 많다.
유형이나 범위 등 너무 많은 정보를 인코딩한다면 그만큼 이름을 해독하기 어려워진다.
7. 자신의 기억력을 자랑하지 마라
독자가 코드를 읽으면서 변수 이름을 자신이 아는 이름으로 변환해야 한다면 그 변수 이름은 바람직하지 못하다.
문자 하나만 사용하는 변수 이름은 문제가 있다. 단, 루프 범위가 작은 변수(i, j, k)는 괜찮다.
8. 클래스 이름
클래스 이름과 객체 이름은 명사나 명사구가 적합하다.
Manager, Processor, Data, Info 등과 같은 단어는 피하고 동사는 사용하지 않는다.
9. 메서드 이름
메서드는 동사나 동사구가 적합하다.
- 접근자, 변경자, 조건자는 javabean 표준에 따라 get, set, is를 붙인다.
- 생성자를 중복 정의할 때는 정적 팩토리 메서드를 사용한다. 메서드는 인수를 설명하는 이름을 사용한다.
- 객체의 생성자가 오버로딩 되는 경우 어떠한 값으로 어떻게 생성되는지 정보가 부족할 수 있다. 그러므로 이러한 경우에는 정적 메소드를 사용하는 것이 명확한 코드를 작성하게 해줄 것이다. 하지만 구현을 드러내는 이름은 피하는 것이 좋다.
// 두 번째 인자가 무엇인지 파악이 어렵다.
Complex fulcrumPoint = new Complex(23.0);
// 이름을 부여하여 두 번째 인자를 명확하게 파악할 수 있다.
Complex fulcrumPoint = Complex.FromRealNumber(23.0); // 정적 팩토리 메서드
10. 한 개념에 한 단어를 사용하라
추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다. Ex) get와 fetch, manager와 controller 등
11. 해법 영역에서 가져온 이름을 사용하라
전산 용어, 알고리즘 이름, 패턴 이름, 수학 용어 등을 사용해도 괜찮다.
'Prodo 독서 리뷰' 카테고리의 다른 글
[Clean Code] 7장 오류처리 (0) | 2021.03.26 |
---|---|
[Clean Code] 6장 객체와 자료 구조 (0) | 2021.03.26 |
[Clean Code] 5장 형식 맞추기 (0) | 2021.03.26 |
[Clean Code] 4장 주석 (0) | 2021.03.26 |
[Clean Code] 3장 함수 (0) | 2021.03.26 |