条件に名前を付けよう
こういうコード見たことありますよね?
if (foo === 'foo') {
// 何らかの処理
}
何の変哲もないコードです。
grepしてみましょう。
その条件が何箇所出てくるか確認しましょう。
2つ以上出現するなら、共通化の意味で関数に切り出しましょう。
上記の例で言うなら端的に書けば、下記の様になります。
function isFoo(str) {
return str === 'foo';
}
もっと、具体的に書けば文字列のfooであるだとか、
何らかのタイプがfooであるだとか、
もしかすると、カテゴリがfooなのかも知れません。
そういう場合は冗長ではありますが、isStringFooだとか、isFooTypeだとか、isFooCategoryだとか命名するのが良いかも知れませんね。
場合によってはタイプクラスやカテゴリクラスを作ってそこにisFooを置くべきかも知れません。
そして、この関数を使う箇所は当然こうなりますね
if (isFoo(foo)) {
// 何らかの処理
}
本質はそこ(共通化)ではありません
- 条件に名前を付けることにより後世の開発者にも一目でわかりやすくなること
- それにより後世の開発者が畏れずに使えること
- 畏れずに使う人間が増えそのコードの利用頻度が高まることで、その関数の信頼性が高まること
- ひいては、その関数を使うシステム全体の信頼性が高まること
もしかして、名前を付けることが出来ない?
では、その条件は何か間違っていませんか?
何かが不足していませんか?
条件式に少しだけ愛着を持ってコードを書きましょう(後世の開発者のために)