0

学校の課題で Java プロジェクトを受け取り、コードの品質が良好である限り、可能な限りリファクタリングするように依頼されました。

私が行ったことの1つは、クラスを削除することです。「Cab extends ImageIcon」クラスと「Train extends Cab」クラスがありました。しかし、この継承には特定の用途がまったくありませんでした (つまり、Cab を拡張するクラスは "Train" クラスだけでした)。結局、「Train extends ImageIcon」だけになりました。

ドキュメントでは、リファクタリングに名前を付ける必要があります。リストがあります (この投稿の最後に記載します)。最も近いのは「プッシュ ダウン メソッド」と「プッシュ ダウン フィールド」です。しかし、それにはスーパークラスのコンストラクタ本体は含まれていません。

リスト:

  1. フィールドを引き上げる
  2. 引き上げ方法
  3. コンストラクタ本体を引き上げる
  4. 押し下げ方式
  5. プッシュダウンフィールド
  6. サブクラスを抽出
  7. スーパークラスを抽出
  8. インターフェイスの抽出
  9. 階層を折りたたむ
  10. フォーム テンプレート メソッド
  11. 継承を委任に置き換える
  12. 委任を継承に置き換える

どなたか助けていただければ幸いです。私のリファクタリングが悪い選択だった場合は、教えてください! 私はこの種のことではかなり新しいです。

前もって感謝します!

4

1 に答える 1

1

私には、あなたがヒエラルキーを崩壊させたように聞こえます。

以前のヒエラルキーは

ImageIcon
    ^
    |
   Cab
    ^
    |
  Train

そして、あなたはそれを次のように変えました:

ImageIcon
    ^
    |
  Train

Cab クラスと Train クラスを新しい Train クラスにマージしたため、階層が崩壊しました。

于 2013-04-08T13:43:59.170 に答える