Cosa si intende per un piano di refactoring passo passo che descrive l'implementazione del design [chiuso]

-1

What is meant by a step-by-step refactoring plan describing how to implement a certain design?

Per quanto ne sappia, il refactoring riguarda il miglioramento di un modello di progettazione (UML) e non ha nulla a che fare con l'implementazione di esso. Quindi sono abbastanza confuso da cosa significa questa domanda. Qualcuno sa e è disposto a spiegare?

EDIT: nel contesto il design corrisponde a un diagramma UML con classi, metodi e associazioni sottostanti.

    
posta user2273652 06.01.2014 - 19:37
fonte

1 risposta

7

Le tue domande contengono tre equivoci IMHO:

  • "design" non significa "modello UML". Al contrario, nel contesto dello sviluppo del software, "design" spesso significa "la struttura complessiva di un programma, un sistema di programma o un codice di programma". Parti di quella struttura possono essere visualizzate da diagrammi UML, ma non scambiano la visualizzazione di un disegno (modello UML) con il design (struttura del codice) stesso.

  • "refactoring" significa "ristrutturare un corpo di codice esistente, alterandone la struttura interna senza modificarne il comportamento esterno" (citato da link ). Quindi il refactoring ha praticamente a che fare con l'implementazione di un design in codice.

  • "implementare un design" non significa necessariamente "codifica in campo verde". Può anche significare "ottenere un certo design con qualsiasi mezzo" (ad esempio, partendo da un codice progettato mediocre e applicando il refactoring finché la sua struttura non si adatta a un progetto descritto da un modello UML).

Il refactoring può essere usato per cambiare o migliorare il codice per cambiare una struttura di codice (quindi il suo design). Idealmente questo si ottiene in molti piccoli passi (al contrario di una grande "riscrittura"). In genere, quando si esegue questa operazione, si desidera raggiungere un obiettivo (un design migliore rispetto a prima o un progetto descritto con l'aiuto di un modello UML), quindi è logico fare un piano prima di iniziare con il refactoring effettivo. / p>

Ad esempio, diciamo che hai una classe A che è diventata troppo grande nel tempo e ha troppe responsabilità. Il tuo obiettivo è scomposizione nelle classi B, C e D per distribuire le responsabilità tra loro. Prima di iniziare, fai un piano come questo:

  • aggiungi alcuni test unitari per il metodo A.m1, che chiama internamente A.m2.
  • aggiungi la classe vuota B
  • sposta il metodo m2 da A a B, cambia A.m1 per chiamare B.m2 anziché A.m2
  • esegui tutti i test unitari per assicurarti di non aver violato nulla
  • aggiungi la classe C vuota, e così via

La nuova struttura di classe di B, C e D può essere descritta da un modello UML, i passaggi in cui l'ordine di applicazione del refactoring da A a (B, C, D) devono essere descritti separatamente.

    
risposta data 06.01.2014 - 20:06
fonte

Leggi altre domande sui tag