オブジェクト指向のコードを展開します
-
27-09-2019 - |
質問
いかなる種類の共有はありませんので、オブジェクト指向のコードを拡大していきます任意のツールはありますか?たとえば、私はその後、ツールはツールがこれをしなかったし、それはまだコンパイルと同じ結果を生成する場合にもいいだろうもはや使用CにクラスAとBを調整しますCを継承する二つのクラスAとBを持っている場合。私は、クラス型が動的にチェックされている場合は、メイン難易度は任意の条件付きロジックを調整することだと思います。
私は、これはマシンの観点からは全く無意味である知っているが、それは楽しい学術的な運動になります。
解決
そこにさまざまなリファクタリングツールがありますが、私はあなたの質問は、それが自動操作のようなものを実行するためにかなりの文脈の知識と人間の介入を必要とするよう実用的なアプリケーションを持っている疑います。
あなたの例では、AとBはCのメソッドとプロパティが、多くの場合、あなたはメソッドに手A(またはB)にしたいと、それは同じように扱われている場所があるという事実を得ることだけでは十分ではありませんA C.それとも、あなたがCを取り、何かにそれを手にしたいかもしれませんが、オブジェクトはその中で何を呼び出しますが.DoThingというコレクションを()--- Aの(またはBの)具体的な行動が呼び出されてい想像してください。
あなたはクラス離れバストだけでなく、する必要があると思いますが、冗長の多くは(特に種類だけでなく、行動のための)コードを見て、他のオーバーロード関数のすべての種類を持っています。
私は、おそらく我々は悪いアイデアの山にそれを配置する必要があり、興味深い思考実験ながら言うと思います。私はそれが読みやすさ、拡張性、またはパフォーマンスのために役立つことはないだろう。
他のヒント
これに伴う問題は、Cを使用するのではなくA又はBに対処することが困難であるコードである
public void workWithSomeC( C useThis ) { ... }
は、当社のOOコードで、私たちはその機能にAまたはBのどちらかを渡すことができます。 AとBは、もはや一般的に何かを持っている場合はそれを行うことはできません。
私は仕事に作ることができる、そのようなコードに何かを複製して思うだろうが、良い悲しみどんな恐ろしいアイデア; - )