ルール
Make a 関数の 目的 自明であること。
Function 名前 は 明確に 伝える 何を その 機能
する 説明 要求 読者に 読者に 検討 実装を 実装を
サポート言語: 45+はじめに
目的がわからない関数名は、開発者が動作を理解するために実装全体を読むことを強いる。 process() または handle() 何でもできるが、その実際の目的を推測するには精神的な努力を要する。明確で説明的な名前のような ユーザーメールアドレスの検証 または 注文合計を計算する() 意図を即座に伝達し、コードを自己文書化させる。
なぜそれが重要なのか
コードの保守性:不明瞭な関数名は理解を遅らせる。開発者はビジネスロジックに集中する代わりに、関数の動作を理解するために実装を読む時間を浪費する。この問題は、数か月後にコードに戻った時や新しいチームメンバーが加わった時にさらに深刻化する。
誤った使用法: 曖昧な関数名は誤用される可能性を高める。関数名が 更新() 検証、変換、永続化、通知を行う可能性があるため、名前が動作を特定しないことから開発者が誤用する原因となる。明確な名前は制約や副作用を文書化することで誤用を防ぐ。
コード例
非準拠:
function process(data) {
const result = data.map(item => ({
...item,
processed: true,
timestamp: Date.now()
}));
db.save(result);
notifyService.send(result);
return result;
}
なぜそれが間違っているのか: その名前 process() データがどのように扱われるかについては何も明らかにしない。読者は実装を検証して、アイテムを変換し、データベースに保存し、通知を送信することを学ばなければならない。関数の副作用と責任は隠されている。
✅ 準拠:
function markItemsAsProcessedAndSave(data) {
const processedItems = data.map(item => ({
...item,
processed: true,
timestamp: Date.now()
}));
db.save(processedItems);
notifyService.send(processedItems);
return processedItems;
}
これが重要な理由:この名前は明示的に、関数がアイテムを処理済みとしてマークし保存する機能であることを示しています。読者は実装を読まずとも、関数の主な目的を即座に理解できます。また、副作用(データベースへの保存)を示唆することで、適切な期待値を設定しています。
結論
関数名はコードを確認しなくても「これは何をするのか?」に答えられるべきです。動作を表す動詞と対象を表す名詞を含めてください。名前が長くなりすぎた場合、その関数は機能が多すぎる可能性があり、分割すべきです。
.avif)
