「良いコード/悪いコードで学ぶ設計入門」を読んだ

kintoneでやや複雑なJavaScriptカスタマイズが必要になったため、
よい設計方法を学びたいと思い、本書を読みました。
本記事では本書から学んだ内容を3つ紹介してみたいと思います。

データクラスは多数の悪魔を呼び寄せる

データを保持するだけのクラスを一般的には「データクラス」と呼び、そして悪いコードのパターンを本書では「悪魔」と呼んでいます。
データクラスがなぜ悪魔を呼び寄せるかというと、そのデータを使用した処理が色々な箇所で実装される可能性があるからです。
このような構造は重複コードを量産し、修正が入ったときに修正漏れ、可読性低下などを招きます。
関連するデータやロジック同士が分散し、バラバラになっていることを「低凝集(ていぎょうしゅう)」と呼びます。
※今までずっと「ていぎしゅう」と読んでいました💦

staticメソッドは低凝集になりがち

staticメソッドはインスタンス変数が使えないため、上記と同様に関連するデータが分散し、低凝集に陥ります。
そうなるとstaticメソッドの使いどころはどこになるのでしょうか。
本書ではstaticにしてもよいのは横断的関心ごとと紹介されています。
例外処理、ログ出力処理、同期処理などは、staticメソッドとして定義してもよいでしょう。

型判定が必要な場面ではインターフェースを使う

インターフェースを使わずに型判定を行う場合、instanceofを使用したif文が大量生産されます。
型が増えるたびにif文が増えていく構造になり、これが複数個所に実装されていると、修正が必要になった際地獄を見ることになります。
インターフェースであればポリモーフィズムによってこうした事態を防ぐことができます。
JavaScriptだとインターフェースの概念が存在しませんが、classを使ってポリモーフィズムっぽい実装することができるようです。

JavaScript:オブジェクト指向らしい記述をする – サイゼントの技術ブログ

まとめ

以上、3点紹介しました。
上記以外にも参考になることが多く書かれているので、ぜひ一読することをお勧めします。