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
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.
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.
In genere, divido questo tipo di richieste in 2 campi:
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.
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.
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 ...
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).
- 1. Analisi del codice Javascript e best practice
- 2. Acquisizione del codice di qualcun altro
- 3. Eventuali best practice o strumenti per i repository Ivy?
- 4. Distribuisci ASP.NET MVC su Linux: best practice, strumenti e sorprese
- 5. Best practice del contratto di codice
- 6. Esempi di codice R/best practice
- 7. per best practice di loop
- 8. Best practice per riutilizzare SqlConnection
- 9. Best practice per SQLite DB e ContentProvider
- 10. php e mysql, best practice
- 11. Best practice per la pronuncia del codice C
- 12. Best practice di RestAngular
- 13. API Best practice per Throttling
- 14. Best practice per compatibilità legacy
- 15. Best practice di disegno UIView
- 16. Best practice per il backup MySQL
- 17. Best practice NGen e Gacutil
- 18. Best practice per denominare sottoclassi
- 19. jQuery Standard e Best Practice
- 20. Best practice per il controllo della versione con più progetti
- 21. Best practice per l'autenticazione dell'abra?
- 22. Registrazione per ASP.NET - Best practice
- 23. Git Setup Best practice
- 24. DTO: best practice
- 25. Best practice di confronto
- 26. MongoDB best practice per referenziamento
- 27. Quali sono le best practice per CDN?
- 28. Ricordami Cookie best practice?
- 29. Angularfire2: eccezione e best practice di logout
- 30. node.js + best practice boilerplate
Entrambi. Per me è più facile capire il codice quando vedo una grande immagine e poi basso. – Max