1

以下のコードをご覧ください。

public class Vehicle
  'Not very well designed.  Contains properties and functions/subs for cars, buses, tractors, planes, drivers etc.
end class

スーパークラス(車両)と多くのサブクラスが存在するように、コードをリファクタリングしたいと思います。はるかに高い優先順位に取り組んでいる間、私はこれをやりたいと思っています。

新しいクラスを作成すると、リファクタリングされた車両と古い車両の2つの車両クラスが作成されます。最善のアプローチは、リファクタリングされたコードの新しい名前空間を作成することだと思います。たとえば、company.app.businesslogiclayer.automobiles.refactoredcode、company.app.datalogiclayer.automobiles.refactoredcodeなどです。これは正しいアプローチですか?

4

2 に答える 2

1

既存のクラスにはすでにクラス固有の機能が含まれているため、既存のクラスをサブクラスとして扱い、 Extractスーパークラスのリファクタリングを確認できると思います。ここでは、新しいスーパークラスを作成してから、共通の機能をサブクラスからスーパークラスに移動します。

ここに画像の説明を入力してください

Visual Basicのリファクタリングには、ExtractSuperClassに関するすばらしいセクションがあります。

于 2013-01-16T19:23:07.067 に答える
1

継承を使いすぎないように注意してください。「ドライバー」は、あなたが本当に作曲を使いたいものとして私を襲います。車両にはドライバーがいます。同様に、のような他のものは、コンポジションを使用してより適切に処理される可能性があります。たとえば、200km / hの車と、300km/hの車があります。本当にそのために別のクラスを持ちたくない。より複雑なものがある場合は、単純なint値またはEngineBehaviourクラスを使用できます。(キーワード:戦略パターン)また、オブジェクト内でそのような複合オブジェクトをインスタンス化するのではなく、それらを注入するようにしてください(キーワード:依存性注入)。

于 2013-01-17T10:26:31.923 に答える