2009-09-01 13 views
5

A volte è necessario scavare nel codice di qualcun altro, capirlo e magari refactarlo/risolverlo. Quindi mi chiedo quali strumenti/pratiche usi per farlo? Non si tratta di una lingua o piattaforma specifica, piuttosto di alcuni consigli in generale.
Io stesso trovo molto utile eseguire il codice in questione in debugger (se è possibile ovviamente), impostare i breakpoint e scorrere il codice.
Inoltre ho utilizzato alcuni strumenti UML con funzioni di reverse engineering per vedere il quadro generale. La visualizzazione funziona abbastanza bene per me.
C'è uno strumento, che ho usato un po ': Understand. Non è uno strumento UML, ma ha un sacco di visualizzazioni per il codice. Ad esempio, controlla il diagramma di flusso per una funzione, che non fa parte di UML, ma a volte è molto utile.
Ho sentito che a volte le persone scrivono test per il codice che vogliono imparare, ma non ha funzionato per me. A volte il codice che voglio capire non è molto verificabile.
Ci sono altri strumenti, come profiler, controllori di dipendenze, logger, ecc. Qualcuno lo usa con successo? E come?
A cosa serve la prima cosa? Qual è il prossimo?
Strumenti e best practice per capire il codice di qualcun altro

risposta

1

Sono stato in questa situazione prima ... Non è molto divertente. Il modo migliore che ho trovato è scrivere test unitari per coprire le aree che stanno per cambiare. Anche se i test esistono già, questo ti dà esperienza sia con l'api che con il comportamento del codice che intendi rifattorizzare. Inoltre, si ottengono più test per verificare l'implementazione della sostituzione.

0

Stai cercando struttura di alto livello, come moduli, spazi dei nomi e design di classe? O stai cercando di capire l'interno delle classi, ad es. come funzionano determinate linee di codice? Questi sono due diversi tipi di strumenti di analisi.

+0

Entrambi. Per me è più facile capire il codice quando vedo una grande immagine e poi basso. – Max

1

In genere, divido questo tipo di richieste in 2 campi:

  1. risolvere il bug, non l'intero codice. In questo caso, tenderei a leggere il codice e vedere se riesco a inserire facilmente la correzione senza apportare importanti modifiche significative, ad es. aggiungendo 5 righe di codice o meno. Questo è dove le modifiche apportate sono come un colpo chirurgico che ha un impatto minimo per ottenere il risultato desiderato.

  2. Abbattere il codice e mettere su cose molto migliori. In questo caso, non c'è un buon modo per fare il cambiamento o ci sono molti piccoli cambiamenti che vogliono essere raggruppati in un mini-progetto in cui è necessario digerire tutto il codice e questo non è un piccolo cambiamento veloce . Prendere un sito ASP e inserirlo nell'ultima .Net framework sarebbe un esempio qui.

Determinare quale tipo di cambiamento è qualcosa richiede un po 'di pratica e di esperienza capire ciò che qualcun altro può chiamare, "Una cosa di più se fosse possibile ..." che può essere un affare enorme, ma non lo fanno vederlo in questo modo, ad es potremmo aggiungere un piccolo modulo che registra qualsiasi errore e mi invia un'e-mail quando succede qualcosa di brutto che potrebbe non essere così facile dopo che tutti gli altri requisiti vengono elaborati come se il codice non potesse inviare un messaggio di posta cosa dovrebbe fare.

0

Una sorta di piattaforma specifica, ma ReSharper è ideale per scoprire il significato nascosto del codice .NET. Adoro la funzione "Trova usi avanzati" in cui è possibile cercare set, acquisizioni, implementazioni ecc ...

1

Do check out nWire.È un plugin Eclipse, attualmente per Java & PHP, che analizza il tuo codice e offre strumenti per l'esplorazione del codice, la visualizzazione e la ricerca. Lo strumento riguarda la comprensione delle associazioni nel codice: gerarchie di classi, invocazioni, istanze e quasi tutto il resto.

Lo trovo molto utile per scavare in pile di codice (a mio parere, anche il mio codice diventa alienato dopo un paio di mesi di non averlo toccato).