2015-03-04 19 views
9

ho:Che cosa è l'unione di 2 classi in 1 classe in cui una classe è una sottoclasse dell'altra chiamata?

  • una classe astratta Un
  • una classe astratta B che si estende Un
  • altre classi che si estende una eccezione B
  • altra classe (es) che si estendono B

Per ridurre il numero di classi, voglio che A e B vengano uniti in una classe e che le altre classi si estendano dalla nuova classe unita.

Qual è il nome di questo refactoring?

P.S. Nella mia implementazione è in Java, questo refactoring può essere eseguito automaticamente in IntelliJ?

+0

Perché lo vuoi? Vuoi dire che non ci sarà mai un'altra classe per estendere A, che dovrebbe fare le cose diversamente da B? Innanzitutto, ricorda perché hai creato due classi in primo luogo, poi inizia a pensare se questa è una buona idea o meno. – Stultuske

+0

@Stultuske Sì, capisco cosa intendi. Quello che sto facendo attualmente è ripulire il vecchio codice scritto da persone obsolete, e ora sono abbastanza sicuro che A non sarà mai esteso se non da B. – yuku

+0

Qual è il nome di questo refactoring? Questo è il suo nome. – JamesB

risposta

7

IntelliJ's Inline Superclass esegue la fusione di una superclasse in sottoclasse.

Inline Superclass

+0

Grazie! Non pensavo che si sarebbe chiamato "in linea"! – yuku

3

Inline la classe A e intellij lo supporta. Basta fare clic con il tasto destro sul nome della classe e selezionare "refactor" dal pop-up e inline la classe dovrebbe essere un'opzione.