KISSは、Keep It Simple, Stupid の略として知られる設計原則です。
意味としては「できるだけシンプルに保つ」と考えれば十分です。
一言でいうと
KISS原則は、必要以上に複雑な設計やコードを書かないための考え方です。
シンプルなコードは、読む人が理解しやすく、バグの原因を追いやすく、あとから直しやすくなります。
複雑なコードが危ない理由
複雑なコードは、書いた本人には分かることがあります。しかし、数週間後の自分や他の人には読みにくくなります。
| 複雑さの種類 | 起きる問題 |
|---|---|
| if文が深い | どの条件で動くか分かりにくい |
| 引数が多い | 呼び出し側の意図が読めない |
| 汎用化しすぎ | 何のための関数か曖昧になる |
| 設定が多い | 正しい組み合わせが分からない |
| 抽象層が多い | 1処理を追うのに何ファイルも読む |
KISSは、このような複雑さを早めに抑えるための原則です。
悪い例
function format(value: string, mode: string, trim: boolean, upper: boolean) {
let result = value;
if (trim) result = result.trim();
if (upper) result = result.toUpperCase();
if (mode === "title") return `[${result}]`;
if (mode === "plain") return result;
return result;
}
何でもできる関数に見えますが、呼び出し側で正しい引数の組み合わせを覚える必要があります。
シンプルにした例
function formatTitle(text: string) {
return `[${text.trim().toUpperCase()}]`;
}
function formatPlainText(text: string) {
return text.trim();
}
関数は増えましたが、目的が明確です。呼び出し側も読みやすくなります。
シンプルにする判断基準
- 1つの関数に複数の目的を入れない
- フラグ引数で動きを大きく変えない
- 深いネストを避ける
- 名前で意図が分かるようにする
- 使っていない拡張ポイントを作らない
シンプルとは、短いことだけではありません。意図が追いやすいことです。
KISSと初学者
初学者は、難しい書き方を覚えると使いたくなります。三項演算子、reduce、クラス、継承、ジェネリクスなどは便利ですが、使うほど良いわけではありません。
まずは、読みやすい if、分かりやすい関数名、素直なデータ構造を優先します。
よくある誤解
短いコードほど良い
短くても、意味が読み取りにくければよいコードではありません。数行増えても、意図が明確なコードのほうが保守しやすいです。
初心者向けの書き方はレベルが低い
シンプルなコードは、初心者向けというだけではありません。実務でも、複雑な表現より読みやすい表現が選ばれる場面は多いです。
まとめ
KISS原則は、コードを必要以上に複雑にしないための考え方です。
シンプルなコードは、読む時間、直す時間、バグを探す時間を減らします。