Quali sono le buone tecniche per mantenere il tuo posto nel codice?

21

Capisco di usare segnalibri per ricordare un singolo punto nel codice. Tuttavia, come si tiene traccia del flusso del codice che stanno investigando? Ad esempio: più segnalibri e l'ordine in cui sono stati creati.

Esempio:

  1. Bug report: "Collisions aren't working on the corners of walls"

    1. Reproduction of the bug puts it down to certain polygons not colliding.
    2. The collision code was written by an unavailable dev. So investigation goes something like:

Schema of a flow

Durante l'indagine, specialmente quando si esaminano elementi non di codice come Google, ci si può ragionevolmente attendere che si perda nel loro posto nel codice ( Ho già guardato questo percorso di codice? o Quale percorso di codice stavo indagando? Ci sono molti che portano a questa funzione , ecc.). Lo stesso vale per interruzioni inevitabili (Boss: Ho bisogno di [Lunghi rapporti inutili] ORA , ecc.)

Sarebbe utile avere una risorsa di tecniche o strumenti per fornire un modo per tenere traccia del proprio posto nel codice.

Modifica : l'esempio di cui sopra è inteso come una potenziale illustrazione, non come un problema reale che necessita di risposta.

Un altro modo per esprimere questa domanda è:

Quando impari un nuovo sistema, come fai a tenere traccia del tuo livello di apprendimento del codice? Non si tratta di capire perché il codice fa quello che fa (che è ciò che dovrebbero essere i commenti), ma come lo fa (che viene appreso solo leggendo il codice, non commenti).

    
posta Jess Telford 29.09.2011 - 01:17
fonte

9 risposte

14

L'interfaccia bolle tenta di risolvere questo problema mostrando una serie di bit di codice contemporaneamente. (Sei bloccato con il tuo browser per Google). Sembra incredibile ma non l'ho provato. Questa versione dell'idea è un'implementazione di Visual Studio per Visual Studio Ultimate.

    
risposta data 29.09.2011 - 03:04
fonte
12

Oltre a tutte le grandi tecnologie menzionate, ho scoperto che il vecchio pezzo di carta A3 è un eccellente aiuto in questi problemi. Scrivi le tue idee e organizzale in stile mindmap.

    
risposta data 29.09.2011 - 10:39
fonte
10

Sia il mio editor che il debugger possono saltare alla definizione di una funzione e avere un pulsante "indietro" a più livelli come un browser web per tornare dove ero prima. Di solito è sufficiente per me tenere traccia di un complesso flusso di debug. Aiuta anche ad avere il controllo del codice sorgente che ti permette di impegnare molto . Questo mi dà un messaggio di commit che spiega perché sto provando qualcosa, oltre a un modo rapido per annullare la modifica se non funziona. Oltre a questo, una semplice lavagna per elencare potenziali ed esplorati lead riempie ogni spazio rimanente per me.

    
risposta data 29.09.2011 - 03:25
fonte
3

Diversi modi che tengo traccia:

  • annota . Hai un appuntamento tra due minuti? Annota cosa stavi facendo e dove. Ho sempre carta e penna accanto a me per scrivere le cose mentre codice.
  • Preferiti . Ho 10 segnalibri numerati che posso impostare.
  • Stacktrace . Puoi facilmente visualizzare l'intera gerarchia di codice che hai attraversato. Il mio editor mi consente anche di copiare la traccia dello stack e salvarla. La prossima volta che apro il mio editor, posso caricare lo stacktrace per una navigazione veloce.
  • Navigazione editor . Vai al membro base, vai all'eredità, trova gli usi, vai al riferimento, ...
risposta data 30.09.2011 - 16:23
fonte
1

Io uso la soluzione semplice - non chiudere mai nulla finché non ho finito con l'operazione. Ciò significa che in genere una delle 50 o più finestre aperte / schede ha qualcosa in esso che mi ricorderà a cosa stavo pensando quando tornerò ad esso.

    
risposta data 29.09.2011 - 03:23
fonte
1

Ottieni un vero strumento per gli sviluppatori / IDE, cosa mai ti prende in giro. Vi, Emacs, Eclipse o qualsiasi altra cosa (La scelta è grande quanto le argomentazioni su cui è meglio, ma questo è un altro problema) e impara ad usarlo correttamente . non farlo, come troppi, usarlo come Notepad con la sintassi highlighing. Impara a usare i tasti di scelta rapida e non fare affidamento sul mouse per azioni comuni (è troppo lento). Un grande schermo (minimo 1920x1200) è ben definito.

Il mio strumento dev ha un nome (più lento ma utile i nomi li rendono persistenti) e unnamed (veloce per inserire ed eliminare) i segnalibri, avanti e indietro la navigazione e il riferimento cercano tutte le note in un unico documento, todo e sviluppatore (personale e di gruppo) collegato a una particolare riga di codice sorgente. Fa ogni lingua sotto il sole, senza dover installare ancora un altro plugin.

Lavoro su una base di codice composta da una dozzina o più moduli da 1 milione di SLOC, usando una mezza dozzina di lingue. Ovviamente non lavoro su tutti loro in un momento, piuttosto mi concentro su piccole parti di uno o due, ma posso navigare con poche azioni in qualsiasi punto del codice che è relivent a quello che sto facendo.

    
risposta data 29.09.2011 - 09:57
fonte
1

Con Visual Studio, in una sessione di debug, puoi utilizzare la finestra "Call Stack" (puoi attivarla in Debug / Windows / Call Stack o con il collegamento Ctrl+Alt+c ) per tracciare il flusso di codice.

    
risposta data 29.09.2011 - 04:14
fonte
1

Sono sorpreso che nessuno abbia menzionato i numerosi strumenti che possono creare grafici di call-graph. Ho trovato doxygen di essere di grande aiuto. Non devi nemmeno impegnarti a utilizzare doxygen in tutto il tuo programma, puoi solo tag le funzioni che sono interessati a tracciare.

    
risposta data 08.12.2011 - 22:42
fonte
0

Io uso modalità org per emacs, che è uno strumento superbo. Con esso, posso scrivere una struttura che imita lo stack di chiamate del codice e includere collegamenti diretti al codice sorgente stesso (tramite org-store-link). Puoi includere testo esplicativo, collegamenti a pagine Web, ecc. (Ad esempio, quando cerchi numeri magici per Google)

Non è perfetto. Ad esempio, la struttura del profilo non ha la nozione di risalire di un livello, quindi è difficile tracciare un percorso di esecuzione, al contrario di un semplice stack. Ma è la prossima cosa migliore per i diagrammi su carta che ho trovato.

    
risposta data 08.12.2011 - 21:50
fonte

Leggi altre domande sui tag