Trova funzionalità o funzioni comuni tra 2 programmi

3

Recentemente ho avuto un problema con il quale voglio ottimizzare due programmi.

Per questo, ho voluto creare una sorta di "Common Interface" che potrei riutilizzare tra i miei due programmi.

Tuttavia, il codice di questi è di circa 1000 righe, e non voglio passare una grande quantità di tempo a controllare se questa o quella funzione è la stessa di questa e di qualsiasi altra cosa.

Quindi ho usato BOUML per verificare le somiglianze tra i diagrammi delle classi. Ma mi chiedo se c'è un modo globale per fare un tale studio?

    
posta Xaltar 16.05.2013 - 14:11
fonte

2 risposte

4

Se entrambi i programmi sono dello stesso autore e si ha il sospetto che l'autore possa aver copiato alcune funzioni da un programma all'altro, utilizzare uno strumento come "diff" (o WinDiff o WinMerge) può aiutarti per trovare alcuni di quei blocchi di codice. Naturalmente, questo funziona solo se non si dispone di troppi file di codice sorgente (che immagino sia improbabile, dal momento che 1000 righe di codice non sono davvero enormi).

Tuttavia, se vuoi trovare funzioni o blocchi di codice che fanno essenzialmente lo stesso, ma le funzioni in gioco hanno un'implementazione completamente diversa, non c'è IMHO nessuna scorciatoia per imparare e capire cosa fa il codice (almeno il parti che vuoi unire). Prima di refactoring di funzionalità comuni, devi essere sicuro che il codice che si desidera refactor fa lo stesso. Potresti non dover capire il codice completo, ma anche per identificare i candidati, è necessaria una comprensione approssimativa delle funzioni. IMO necessario.

    
risposta data 16.05.2013 - 17:47
fonte
1

Suppongo che tu conosca la funzionalità di entrambi i programmi. L'estrazione dell'interfaccia comune è un normale lavoro di refactoring poiché probabilmente si desidera semplicemente rimuovere la duplicazione del codice.

Quindi carica i tuoi due programmi in qualsiasi IDE e guarda la vista struttura in cui sono mostrate le classi / le firme del metodo. Dal momento che conosci la funzionalità di entrambi i programmi, non dovrebbe essere un compito difficile trovare le parti di codice duplicate.

    
risposta data 16.05.2013 - 14:22
fonte

Leggi altre domande sui tag