hitode909の日記

趣味はマリンスポーツですの日記です

素朴で抽象的なクラスを作りたい

クラスを設計するときの抽象的さの指標として以下のようなものを考えられないか,というのを考えた.

  • メンバの数
    • 少ないほど素朴,多いと複雑
  • メンバの種類が,数字やbooleanのような組込みの値が多いか,何らかのクラスのインスタンスが多いか
    • クラスのインスタンスをたくさん持つほうが抽象的
  • 実装の中で登場する変数が,数字やbooleanのような組込みの値が多いか,何らかのクラスのインスタンスが多いか
    • クラスのインスタンスをたくさん持つほうが抽象的

この考えでは,複数の数字をまとめてクラスにしていくと,素朴で抽象的なクラスが出来上がることになる.
たとえば,たくさんのメンバを持ってる中にwidthとheightを持ってるやつがいたら,widthとheightをメンバとして持つDimensionクラスのインスタンスを持たせるようにリファクタリングできる.
幅がいくつ以上だったら,という数字を使った論理式は,領域インスタンスに「十分な幅があるか?」と問い合わせることで,実装から数字を消して,抽象的な操作に置き換えることができる.

みたいな.