티스토리 뷰
2장 의미 있는 이름
* 의도가 분명한 이름
- 변수, 함수, 클래스 등의 이름은 존재 이유, 수행 기능, 사용 방법 등의 의도를 알 수 있게 지어야한다.
ex)
1
|
int d; // 경과 시간(단위 : 날짜)
|
cs |
의도를 전혀 드러내지 못하는 이름
1
2
3
4
5
6
7
|
int elapsedTimeInDays;
int daysSinceCreation;
int daysSinceModification;
int fileAgeInDays;
|
cs |
의도가 충분히 드러나는 이름
* 그릇된 정보를 피하라
- 코드에 남겨진 잘못된 단서는 코드 의미를 흐린다.
- ex) 배열로 구현된 그룹을 accountList로 이름 짓는 경우. 단순히 Accounts로 명명하는게 옳음.
- 서로 흡사한 이름은 피한다.
- 유사한 개념엔 유사한 표기법을 적용한다 (일관성). 일관성이 떨어지는 표기법은 그릇된 정보임.
* 의미있게 구분하라
- 컴파일러를 통과하기 위해 연속된 숫자를 붙이거나 불용어(noise word) 붙이는 방식은 피해야한다.
- 위에서 언급한 연속된 숫자, 불용어는 아무런 정보도 담지 않음. 의도가 드러나지 않음. 말 그대로 아무의미가 없음.
- 불용어 ex)
product, productData, productInfo
getActiveAccount(); , getActiveAccounts(); , getActiveAccountInfo();
개념적으론 하나도 구분되지 않음. 그냥 중복.
- 읽는 사람이 차이를 알도록 명명.
* 발음하기 쉬운 이름을 사용하라
ex)
1
2
3
4
5
6
7
8
9
10
11
|
class DtaRcrd102 {
private Date genymdhms;
private Date modymdhms;
/*...*/
}
class Customer {
private Date generationTimestamp;
private Date modificationTimestamp;
/*...*/
}
|
cs |
* 검색하기 쉬운 이름을 사용하라
- 이름이 길어도 괜찮음. 본래 이름 길이는 이름 주체가 사용되는 범위의 크기에 비례해야 함.
- ex) 숫자 7 과 'MAX_TAX_RATE'의 경우. 7을 검색하면 코드의 구석구석에서 발견될것임.
* 인코딩을 피하라
* 자신의 기억력을 자랑하지 마라
* 클래스 이름
- 클래스 이름과 객체 이름은 명사나 명사구가 적합하다.
* 메서드 이름
- 메서드 이름은 동사나 동사구가 적합하다.
* 기발한 이름은 피하라
* 한 개념에 한 단어를 사용하라
- 추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다.
- 이름에 특정 개념을 실어주기 위해 표현을 추가하는데 그 개념을 클래스마다 제각각 부르면 혼란을 야기한다.
- ex) DeviceManager, ProtocolController // 같은 관리자란 개념을 다르게 붙였음.
* 말장난을 하지 마라
- 바로 위와 반대되는 이야기
- 다른 개념에 같은 단어를 사용하지마라
- ex)
1.기존 값 두 개를 더하여 새로운 값을 만드는 메서드 add.
2.집합에 값 하나를 추가하는 메서드 add(x) / insert, append(o)
* 해법 영역에서 가져온 이름을 사용하라 & 문제 영역에서 가져온 이름을 사용하라
- 해법 영역과 문제 영역은 반대되는 영역.
- 해법 영역과 문제 영역을 구분할줄 알고 코드 구성에서 어떤것이 적절한지 판단할줄 알아야함.
* 의미 있는 맥락을 추가하라 & 불필요한 맥락을 없애라
- 이름 스스로 의미가 명확하지 못하다면 의미에 맥락을 추가하는것도 좋은 방법이다.
- ex) street, houseNumber, city -> addrStreet, addrHouseNumber, addrCity
주소로서의 의미가 부족하여 addr(맥락)을 추가하니 이름 그 자체로 명확한 의미를 갖게됨.
Address 클래스를 따로 생성하는것도 좋은 방법이다.
- 불필요한 맥락은 불필요한 정보.
- 이미 주어진 상황과 조건만으로 맥락이 추측되는 경우 이름에 맥락을 붙이지 않는다.
- ex) Gas Station Deluxe(고급유 주유소) 어플리케이션에서 변수들의 이름에 GSD를 붙이진 않음.
- 의미를 분명하게 표현할 수 있다면 짧은 이름이 긴 이름보다 좋다.
'프로그래밍 > 공부' 카테고리의 다른 글
클린 코드) 5장 핵심 정리 (0) | 2022.01.28 |
---|---|
클린 코드) 4장 핵심 정리 (0) | 2022.01.22 |
클린 코드) 3장 핵심 정리 (0) | 2022.01.17 |
클린 코드) 1장 핵심 정리 (0) | 2022.01.14 |
- Total
- Today
- Yesterday
- 의존관계역전법칙
- 학교 과제
- clean code 정리
- 클린 코드 정리
- 주입
- 메모리 순환참조
- 생명 주기
- XcodeBuildSystem
- 순환참조
- SwiftUI
- swiftc
- CLANG
- 링커
- 여행경로
- 클린 코드
- 알고리즘
- ios
- clean code
- 면접질문
- Swift
- XCFramework
- 전처리기
- ios simulator
- dfs
- BFS
- 단어변환
- 이분탐색
- 프로그래머스
- 의존성
- 클린 코드 줄거리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |