domenica 24 novembre 2013

Gli strumenti per potenziare l'IDE di Delphi (Parte 1 - MMX)

Se usate le ultime versioni di Delphi (in realtà anche non tanto "ultime", basta usare da Delphi 2007 in avanti) vi sarete abituati al nuovo IDE "Galileo" che, sebbene forse un poco più pesante rispetto ai primi Delphi, è sicuramente più ricco di funzionalità tali da farmi (personalmente) ritenere l'IDE di Delphi 7 - Delphi 1 ormai inadeguato per la scrittura di codice.

Rimandando ad un altro post la descrizione delle funzionalità dell'IDE che ritengo più interessanti, volevo invece passare in rassegna a tool esterni che potenziano l'ambiente di sviluppo e sono compatibili con più versioni di Delphi (in molti casi supportano anche le versioni pre-galileo).

Voglio ancora ricordare che questa non è una presentazione esaustiva dei tool Delphi ma solo la presentazione dei tool che uso personalmente sulle versioni di Delphi che ho installato per i progetti (miei e dei miei clienti), ovvero Delphi 2007 e Delphi XE4/5

La mia lista dei tool Delphi

In questa serie di articoli sui tool di Delphi cercherò di mostrare i vantaggi per lo sviluppo di ognuno di questi tool e in particolare mi focalizzerò sull'aumento di velocità di scrittura del codice e quindi sull'aumento di produttività che questi tool (con le varie funzionalità aggiunte) offrono.
  • ModelMaker Code Explorer (MMX)
  • GExperts
  • CnPack
  • Documentation Insight
  • Andy's IDE Tools
    • DelphiSpeedUp (D2007)
    • IDE Fix Pack (D2007)
    • DDevExtensions (D2007 - DXE5)

ModelMaker Code Explorer (MMX)

Nome:ModelMaker Code Explorer
Sito:http://www.modelmakertools.com/code-explorer/
Licenza:Commerciale
Prezzo:99€ (69€ Upgrade)


Forse alcuni di voi ricorderanno ModelMaker perché veniva installato con Delphi 6 e Delphi 7 (almeno nelle versioni Enterprise) come strumento di refactoring UML poi rimpiazzato da Together.
 è invece uno strumento che velocizza la scrittura, la modifica (refactoring) di codice Delphi che però mostra la sua massima utilità se il codice è scritto ad oggetti.

ModelMaker Code Explorer (da qui in poi MMX) consente di velocizzare la scrittura e la modifica del codice fornendo numerosi strumenti sia sotto forma di wizard sia sotto forma di comandi attivabile con una sequenza di tasti.

Devo subito dire che il maggior risparmio (di tempo e tasti) MMX lo permette quando si scrive o modifica codice ad oggetti e comunque conoscendo le funzionalità principali della programmazione ad oggetti.

La finestra principale (la console dalla quale partire soprattutto le prime volte) è la "Model Maker Code Explorer" e possiamo dire che è una finestra simile alla finestra "Structure" di Delphi, la differenza è che il "navigatore" di MMX è notevolmente più potente: più comandi, più filtri di visualizzazione, più strumenti di refactoring, diverse modalità di navigazione, Live Metrics, ecc...


Con un click è possibile aggiungere visualmente campi, metodi, proprietà, eventi, indexer alla nostra classe, editare (sempre visualmente) qualsiasi entità del vostro codice.

Mentre scrivete il codice nell'editor di Delphi MMX mostra poi due toolbar (personalizzabili) agganciate alla finestra di editing che mostrano i principali comandi di navigazione e modifica.


Se, come me, quando scrivete codice odiate staccare le dita e lo sguardo dalla tastiera e considerate il concetto dei wizard troppo invasivo, MMX allora è davvero lo strumento che fa per voi.
Tutti i comandi che trovate nella finestra principale, nelle toolbar, nel menu MMX di Delphi sono infatti invocabili anche da tastiera con tasti rapidi visualizzabili e personalizzabili tramite le opzioni di MMX.

Veniamo finalmente ad una lista (molto personale) di comandi e funzionalità che ritengo essenziale per una scrittura veloce, e sicura, del proprio codice.

1) Copia e spostamento entità.

Il refactoring di progetti grandi e complicati a volte è davvero un incubo quando dobbiamo spostare metodi, proprietà e anche classi intere da un punto dell'applicativo ad un altro. In Delphi lo spostamento di queste entità è complicato dall'obbligo di tener sincronizzata la dichiarazione e l'implementazione dei metodi. Con MMX posso dimenticarmi di tutto ciò ed utilizzare i comandi di clipboard:





"Cut Entity"   -> "Ctrl-Alt-X"
"Copy Entity"  -> "Ctrl-Alt-C"
"Paste Entity" -> "Ctrl-Alt-V"

Usando questi comandi riuscirete a spostare metodi, proprietà e classi da una unit all'altra senza perdere tempo a cercare in giro pezzi di codice. MMX riesce anche a capire quali sono le unit di cui avete bisogno nei metodi tagliati/copiati e quindi aggiungere tali clausole uses alla unit di destinazione.
Questa è di gran lunga la mia funzionalità preferita di MMX, mi ha fatto risparmiare davvero molto tempo e anche notevoli "mal di pancia" quando ci si ingroviglia con il taglia/incolla tradizionale!

2) Cancellazione entità e sincronizzazione metodi

Un'altra funzionalità forse meno "eclatante" ma ugualmente utile (e parente della prima) è la possibilità di cancellare metodi "Ctrl-Shift-Del" (ma anche campi, proprietà, classi) anche qui senza di preoccuparsi di dove si trovi l'implementazione.


Anche la sincronizzazione dei parametri dei metodi "Ctrl-Alt-Y" è molto semplice ma data l'altissima frequenza di questa operazione risulta davvero un "time-saver".

3) Editing delle entità



L'editing delle entità "Ctrl-E" è davvero molto potente e si risolve nell'invocazione di una finestra (diversa a seconda dell'entità) in cui si possono modificare tutti i parametri in questione. Ad esempio se modifico un metodo posso modificare:
  il nome
  la visibilità (provate, protected, public, ecc...)
  i parametri (aggiungerne, modificarne il tipo, ecc...)
  il tipo del metodo (funzione, procedura, metodo statico, ecc...)
  varie opzioni (virtuale, override, message, final, ecc...)
Anche in questo caso, ovviamente non mi preoccupo minimamente della parte di implementazione, infatti all'OK sulla finestra di modifica il codice sarà perfettamente aggiornato e sincronizzato.

4) Aggiunta Variabili locali



Questa funzionalità (ormai presente anche in Delphi) consente di aggiungere una variabile locale nel metodo corrente. La cosa sembra *troppo* banale per comparire in un wizard, pensate però di essere in un metodo abbastanza lungo e di aver bisogno di una variabile stringa opportunamente inizializzata a stringa nulla ''. Con il comando "Add local var" -> "Ctrl-L" dovete semplicemente scrivere il nome ed il tipo della variabile senza spostarvi dal punto in cui stavate scrivendo e la variabile sarà definita ed inizializzata per voi alla prima riga del metodo. Semplice ma efficace!

5) Rename in Scope



Un'altra operazione molto frequente nella modifica del codice sorgente è il rename dei simboli solitamente fatta dalle classiche operazioni di Search/Replace su testo selezionato oppure sull'intero file. MMX ha invece il comando "Rename in Scope" -> "Ctrl-Alt-L" che consente di rinominare il simbolo su cui è posizionato il cursore e di applicare le regole di rename legate allo scope: localmente, nella classe, nel modulo (unit). Questo limita gli errori dovuti al "Replace Selvaggio" che possono avere conseguenze anche gravi per l'introduzione di bug particolarmente insidiosi.

6) Extract Methods



La funzionalità "principe" per il refactoring è sicuramente il comando "Extract Method" (presente anche in Delphi) è uno strumento molto comodo per riconoscere pezzi di codice da raccogliere a fattore comune o semplicemente effettuare cambiamenti pesanti sui metodi delle mie unit.

7) Aggiunta entità



Le finestre di "Add Entity" (dove Entity può essere un metodo, una classe, un'interfaccia, una property, ecc...) sono le stesse di editing delle stesse con ovviamente i settaggi non inizializzati. Personalmente sull'aggiunta di proprietà, metodi o classi ritengo più veloce l'immissione manuale scrivendo direttamente il codice, tuttavia sono un aiuto importantissimo a chi si avvicina alla programmazione Delphi e soprattutto ai programmatori Delphi, anche di lunga data, che si approcciano seriamente alla programmazione ad oggetti.

Conclusioni

Questa è la lista delle funzionalità che ritengo più utili in ModelMaker CodeExplorer, funzionalità che però non si esauriscono qui anzi sono cosciente di usare lo strumento ad una frazione delle sue potenzialità ma ognuno deve trovare un equilibrio tra le innumerevoli funzionalità che uno strumento offre e quelle che sono davvero in grado di apportare un netto miglioramento nel suo modo di scrivere codice.

Nel prossimo articolo vedremo in azione uno dei più longevi tool di Delphi: i GExperts.

Se avete quesiti o proposte di recensione di altri tool scrivetemi o lasciate un commento su questo blog.



Paolo Rossi.


Nessun commento:

Posta un commento