CleanCode 2章の面白い名前

5369 ワード

プログラマーにとって、
開発を学び始めたばかりの頃、開発に従事していた人が、開発者の半分以上の勤務時間を命名に使ったと話していました.最初は冗談だと思っていたが、開発すればするほど、名前が何なのか迷う.私は次の法則に基づいて名前を練習します.
1.意図的に明確な名前
存在理由、実行機能、使用方法は明確な名前でなければなりません!
//이게 무슨 뜻인지는 아무도 모른다
int d;

// 확실히 무엇을 뜻하는지 알 수 있다
int daysSinceCreation
int fileAgeInDayse
2.誤った情報を避ける
似たような名前や、違う字と混同された名前をつけないでください.
// 2개의 차이점을 거의 찾을 수 없다
String XYZControllerForEfficientHandlingOfStrings
String XYZControllerForEfficientStorageOfStrings

// 유닉스 플랫폼 이름이기에 혼동된 정보를 줄 수 있다.
hp, aix, sco

// 숫자 0, 1 알파벳 O, l 구분이 쉽지 않다

0, 1  O,l 
3.有意義な地域区分
何の意味もない、あるいは意味のある情報を提供できないと、コードの読み取りが難しくなります.
// a가 무엇을 뜻하는지 아무도 모른다
a1, a2, a3 ... 

// 기능의 차이를 알 수 없다
getActiveAccount();
getActiveAccounts();
getActiveAccountInfo();
4.発音しやすい名前を使う
頭がいいから、発音してこそ分かりやすい.
// 두 번째가 의미있는 대화가 가능해진다.
class DtaRcrd102 {...}
class Customer {...}
5.検索しやすい名前を使う
1文字の名前と定数を使うと気づきにくい
// 뜻으로 검색이 바로 가능하다
int MAX_CLASSES_PER_STUDENT
int 7
6.クラス名
クラス名とオブジェクト名は名詞または名詞フレーズに適しています
動詞を無効にする!
// 좋은 예
Customer, WikiPage, Account, AddressParser

// 나쁜 예
Manager, Processor, Data, Info
7.メソッド名
メソッド名動詞または動詞フレーズに適合
postPayment, deletePage, save, getName
8.一つの概念一つの単語
抽象概念で単語を選択
// 가져오다라는 뜻을 아래 중 하나만 선택
fetch, retrieve, get

// 관리라는 뜻을 아래 중 하나만 선택
controller, manager, driver
9.有意義な脈絡を追加
クラス、関数に脈絡を付ける
// 다 읽어봐야 주소 관련이라는 것을 안다
firstName, lastName, street, houseNumber, city, state, zipcode

// 의미있는 접두어를 추가하면 하나면 봐도 안다
addrFristName, addrLastName, AddrState