はじめに
最近リーダブルコード(The Art of Readable Code)を読んでいて、コードの可読性を向上するポイント、または他の開発者に優しいコードの書き方をたくさん勉強になりました。
この記事は、本の内容をしっかり頭に入れて、お浚いする為の読書ノートです。
名前に情報を詰め込む
第一章と第二章により、変数と関数の名前を読むだけで多くの情報を引き出すことができます。
1. 具体的な言葉を使う
Getの代わりに、文脈に応じてFetchやDownloadのような言葉を使うと良いです。
// 良い例
fetchData()
downloadFile()
// 悪い例
getData()
getFile()
他の代替の言葉:
Word | Alternatives |
---|---|
send | deliver, dispatch, announce, distribute, route |
find | search, extract, locate, recover |
start | launch, create, begin, open |
make | create, set up, build, generate, compose, add, new |
2. 一般的な名前を避ける
特別な理由がない限り、tmpやretvalのような一般的な名前は避けましょう。
// 良い例
temporaryFile()
resultValue()
// 悪い例
tmp
retval
3. 具体的な名前を使う
ServerCanStart()のような曖昧な名前よりも、CanListenOnPort()のように詳細を記述する名前を使いましょう。
// 良い例
canListenOnPort()
// 悪い例
serverCanStart()
4. 重要な情報を変数名に付ける
ミリ秒単位の変数には_msを付けたり、未処理の変数にはraw_を付けたりして、重要な詳細を変数名に含めましょう。
// 良い例
responseTime_ms
raw_inputData
// 悪い例
responseTime
inputData
Function parameter | Renaming parameter to encode units |
---|---|
Start(int delay) |
delay → delay_secs
|
CreateCache(int size) |
size → size_mb
|
ThrottleDownload(float limit) |
limit → max_kbps
|
Rotate(float angle) |
angle → degrees_cw
|
5. 大きなスコープには長い名前を使う
複数画面に渡る変数には、一文字や二文字の短縮名ではなく、より長い名前を使いましょう。行数少ない場合だけに変数は短い名前が適しています。
// 良い例
totalUserCount
// 悪い例
tuc
6. 暗黙的な命名ルールを従う、意味のある大文字やアンダースコアを使う
例えば、ほとんどのclass名にはPascalCase
を使用し、関数名はcamelCase
、変数名にはsnake_case
を使用します。
クラスメンバーを区別するためにunderscore( _ )を付けるなど、意味のある方法で大文字やunderscoreを使用しましょう。
// 良い例
class User {
constructor(name) {
this.name_ = name; // クラスメンバーには _ を付ける
}
}
function processUser(userName) {
const user = new User(userName);
console.log(user.name_);
}
もう一点として、IDでは単語をunderscore( _ )で区切り、classでは単語をdash( - )(kebab-case)
で区切る方法があります:
<div id="middle_column" class="main-content">
これを使用するかどうかは、チームのコード規約次第です。しかし、一貫性を持たせることが重要です。
まとめ
これらのアドバイスを実践することで、より読みやすく、保守しやすいコードを作成できるようになります。デバッグにも楽ですよ!