【こーどすめる】

コードスメル とは?

最終更新:
💡 コードの「気になる臭い」から、設計を調べる

コードを読んだときに気づく、設計や保守性の問題を疑う手がかり。長いメソッドや重複などがあるが、兆候だけで欠陥と決めず、背景を調べて改善を判断する。

📌 このページのポイント
コードスメル:調べるきっかけ 長いメソッド 重複コード 役割の集中 処理A 同じ計算 処理B 同じ計算 ログイン メール送信 料金計算 画面表示 必ず悪いとは限らない 背景と変更のしづらさを確かめる
コードの模式図です。行数だけで欠陥と決めず、理解や変更を妨げているか確認します。
ひよこ ひよこ
代表的なコードスメルは?
ペンギン先生 ペンギン先生
長くて追いにくいメソッド、同じ処理の重複、多くの役割を抱えたクラスなどだよ。ただし「何行を超えたら必ず悪い」という共通の線引きはない。まず、理解や変更を難しくしていないか調べるんだ。
ひよこ ひよこ
長いメソッドは全部分割するの?
ペンギン先生 ペンギン先生
目的のまとまりを切り出すExtract Function(メソッドの抽出)が役立つことはあるよ。たとえば明細表示をprintDetailsにまとめると、呼び出し元から意図を追いやすい。ただ短くするために細切れにせず、名前と役割が明確になるかを考えよう。
ひよこ ひよこ
ツールで自動的にわかる?
ペンギン先生 ペンギン先生
一部の兆候は拾えるよ。たとえばESLintのcomplexityルールは循環的複雑度が設定値を超えたら知らせる。でも、数値だけでは設計の良し悪しを判断できない。コードレビューで周囲の処理や変更の理由も読むんだ。
ひよこ ひよこ
見つけたらすぐ直すべき?
ペンギン先生 ペンギン先生
スメルは問題そのものではなく、調べる入口だよ。長いメソッドでも適切な場合がある。修正するなら、近く変更する箇所や困っている箇所などを優先し、テストで振る舞いを確認しながら小さく改善しよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「コードスメル」って出てきたら「コードの設計を見直す手がかり」と思えばだいたいOK!
📖 おまけ:英語の意味
「Code Smell」 = コードの臭い
💬 コードが「臭う」=何か問題がありそうな兆候。Kent Beckが命名したよ

参考資料

← 用語集にもどる