あなたはコードの繰り返しの原則を取りすぎていると思います。コードの重複を避ける点を考えてください。ポイントは、ロジックに変更がある場合にチェックする必要のあるコードの量を減らし、明らかに同様に意図されているブロックを除外することで理解度を高めることです。
繰り返しを回避するためのファクタリングの欠点は、共有ブロックの1つを変更する必要がある場合、さらに複雑な継承または標準実装と非標準実装の切り替えが必要になることです。
したがって、これらのブロックの1つでも、他のブロックなしでロジックが変化する可能性と、この共通性を除外することで得られる理解の利点を慎重に比較検討してください。ある実装が他の実装から分割される可能性がある場合は、単にコードを繰り返すだけの方が良いでしょう。
それはより複雑になり、あなたの問題領域は、より定義さになると、この繰り返しのコードを維持しながら、あなたは、今より複雑な、繰り返したが、要因にそれがより適切かもしれませんまた、より多くの定義されたセクションアウト。
私は通常、テキストエディタの同一性をしばらくの間、繰り返しているように見えるものがファクタリングする価値があるかどうかがわかるまで維持しようとします。私は繰り返しを繰り返しますが、後で一致させるためにテキストで簡単に保つことで、そのブロックの将来に目を光らせています。
多くの時間、同一性、可能性のあるファクタリングが、現実的で気まぐれなビジネスルールや、非常に依存性の高い、しばしば任意のロジックとして散逸し始めます。いくつかの一般的なデータベース実装(ANSI_NULLSまたはそのようなものが思い浮かぶ)の奇妙なことに対処するようなものが追加されます。純粋なロジックのように見えるものをねじれた混乱に押し込み、業界の混乱に直面したときに合理的で防御可能な決定ロジックを提供しようとします。
あなたがファクタリングしようとしているものを人々がファクタリングしようとすると、Do1Then2If2False Do1IfTrueDo2のような価値のない構成要素のライブラリ全体が得られるように思えます。
より複雑で明確にする必要があるのは、ブロックを変更することを保証するためにブロックが変更されないことです。
それはソフトウェアです。戻って、現在同じブロックを編集できます。5分かかります。そして、無駄なファクタリングの時間を節約し、それから、何時間も無駄な継承と切り替え開発を節約することができます。