@634

汎用性と局所化

Advertisement

汎用性と局所化

汎用性と局所化を混同してはいけない。
同じコードがシステム内に散在している場合に、それをひとつのモジュールとして切り出すことにより、保守性が向上する。
これは汎用性ではなく、ロジックの局所化である。

汎用性を求めると、とても似通っている処理を無理やりひとまとめにする設計を行ってしまう場合がある。この方法は得るものの代償に、失う物のほうが多い。
私の現在のプロジェクトでは、複数のテーブルにアクセスするための汎用DAOが存在していた。ひとつのクラスのインタフェースだけ知っていれば、たくさんのテーブルにアクセスすることができるのだろう。結果、クライアントからテーブルを識別させるためのフラグを渡さなければいけなくなった。なぜ、このDAOを使うたびにフラグ一覧を参照しなければならないのだろうか。

せめてラップしたクラスでメソッドを切り分けてくれていたらなぁ。

×
public interface GenericDao{
    public Record getTableRecord(String key, String tablename);
}

public interface GenericDao{
    public Record getYearTableRecord(String key);
    public Record getCustomerTableRecord(String key);
    public Record getHumanTableRecord(String key);
}

public interface YearDao{
    public Record getRecord(Strine key);
}

public interface CustomerDao{
    public Record getRecord(Strine key);
}

public interface HumanDao{
    public Record getRecord(Strine key);
}
複数のとても似通っている処理をまったく同じコードにすることができるならば、その後のメソッドの抽出は立派で安全なリファクタリングであり、保守性は格段に向上することになる。

Advertisement

ショートカット

634
634ブログ
このカテゴリのトップページに戻る
Incubator(Pukiwiki)
634ラボ
   UIコレクションギャラリー
   ZO-3ジェネレーター

サイト検索


Y!ログール