Pratiche per navigare e modificare i file di codice "lunghi"?

3

Molte volte ho a che fare con file di codice che sono piuttosto lunghi - circa 5 pagine di schermo al minimo. Quasi sempre c'è qualcosa verso l'alto / basso che devo riferire quando sono in basso / in alto (rispettivamente). È un gigantesco overhead per scorrere continuamente avanti e indietro tra le parti del file.

È un sovraccarico cognitivo per ricordare ogni singolo elemento del file ed è abbastanza necessario poter fare riferimento a parti del file.

Sì, la vista Struttura in alcuni editor come Eclipse / NetBeans aiuta, ma a volte funzionano bene solo per le parti riconoscibili da quel parser. A volte le visualizzazioni del profilo non vengono visualizzate, ad es. quando si codifica in CoffeeScript o JavaScript usando le funzioni di closures / namespace, ecc. Il fallback è quindi solo un overhead manuale dello scroll.

Quindi, come programmatori, quali sono alcune delle tecniche / pratiche che possono essere impiegate per ridurre questo ridicolo sovraccarico?

Sì, posso abbreviare i file, ma in particolare le librerie javascript come Backbone.js ecc. sono tutte come un unico file poiché non è possibile dividerle in file multipli a causa della mancanza di Java- come pacchetti . Quindi, sotto i limiti dell'incapacità di dividere un file e le viste di schema non funzionano, quali sono alcune delle tecniche che posso usare per navigare tra file sorgente lunghi? Lavoro molto su Eclipse / Netbeans e Aptana e talvolta Vi (ma raramente negli ambienti di produzione). Sarebbe bello poter dividere una finestra in due e vedere lo stesso file su un lato e il codice nell'altro. Non fattibile con Eclipse / NB / Aptana IMO. Vi, sì ma non posso usarlo tutto il tempo.

PS: A partire da ora, ho diviso il file tra più editor, ad es. Eclipse e Aptana. Sarebbe bello averlo in un posto, ma è il meglio che possiamo fare? :)

UPDATE - Sembra che Eclipse abbia un modo per farlo e può essere trovato qui

    
posta PhD 21.07.2012 - 22:40
fonte

5 risposte

5

So as programmers what are some of the techniques/practices that can be employed to reduce this ridiculous overhead?

under the constraints of inability of splitting a file and the outline views not working, what are some of the techniques I can use to navigate through long source files?

Apri il file in diverse finestre di editor (o editor diversi): ciascuna sezione di interesse in una finestra diversa. Se tu, come molti sviluppatori, hai due o più monitor, puoi mettere ogni finestra su un monitor diverso come riferimento.

Non so su Eclipse / NB / Apatana, ma Visual Studio ha un split barra - questo consente di vedere diverse parti di un file in una finestra. Forse il tuo editor di scelta ha anche questa caratteristica.

    
risposta data 21.07.2012 - 22:44
fonte
1

La cosa più importante per ridurre questo problema è fornire buone astrazioni per i tuoi metodi. Se hai bisogno di vedere cosa Foo fa ogni volta, allora questo è un buon motivo per rifattorizzare il codice, rinominare il metodo o suddividere il metodo in altri. (L'interruzione è utile quando si dispone di un flusso di controllo complesso basato sull'input)

Se non vuoi refactoring, tipicamente in Visual Studio uso la definizione goto e il pulsante back sul mio mouse per navigare nei vari punti. Potresti essere in grado di utilizzare scorciatoie simili nel tuo IDE per evitare di dover cercare manualmente così tanto.

    
risposta data 21.07.2012 - 23:13
fonte
1

Ecco le regole che consentono di mantenere file di dimensione 10kloc con 100 classi in ogni file in codice c ++:

  1. Usa emacs + esc- < + C-s per andare all'inizio del file e quindi cercare una classe con parole di ricerca "class MyClass" e ":: mymemberfunction". Richiede di ricordare il nome della classe o della funzione membro che si desidera trovare.
  2. Il blocco note
  3. ha la stessa funzione in C-f
  4. altri id hanno probabilmente la capacità di trovare il testo da un singolo file che hai già aperto; andare all'inizio del file è più difficile da trovare ...
risposta data 22.07.2012 - 00:10
fonte
1

Sviluppo in Object Pascal / Delphi e una volta mi è venuta un'idea (l'ho chiamata Wident ) per semplificare la navigazione nei file lunghi. Fondamentalmente si tratta di una rapida ricerca bidirezionale degli identificatori al punto di inserimento (ho usato Ctrl-Alt- [frecce]). Si preme ad esempio Ctrl-Alt-Down, lo strumento rileva la parola chiave al punto di inserimento e passa alla successiva menzione della parola chiave. Poiché dopo il salto il cursore viene posizionato sulla stessa parola solo in una posizione diversa, la pressione successiva salterà al riferimento successivo (Ctrl-Alt viene mantenuto in modo da ripetere semplicemente premendo il tasto Giù). Anche se a questo punto puoi essere lontano dal tuo punto di partenza, puoi tornare facilmente ad esso. Il cursore è ancora al nome, quindi Ctrl-Alt-Up premuto due volte farà la magia.

E questo è solo un esempio. In realtà è come creare rapidamente nuove dimensioni nella navigazione mantenendo il pieno controllo di dove ti trovi. Questo funziona perché i nomi delle variabili, delle funzioni, dei tipi e dei loro riferimenti sono ciò che collega semanticamente pezzi di software.

Sebbene io utilizzi lo strumento sviluppato per Delphi IDE, in altri editor è possibile implementare funzionalità simili semplicemente assegnando nuove chiavi alle funzioni corrispondenti. Ad esempio, in notepad ++ sono "Trova (Volatile) Successivo" e "Trova (Volatile) Precedente".

    
risposta data 22.07.2012 - 00:25
fonte
0

Personalmente mi affido alla mia memoria. Ricordo la posizione della barra di scorrimento in cui sto guardando un codice importante. Ovviamente, puoi solo scorrere fino alla posizione approssimativa, ma nella maggior parte dei casi un PgUp / PgDown ti porta proprio lì. Dopo un po ', diventa un'abitudine.

È possibile ricordare facilmente circa 4-5 posizioni di scorrimento per un file. Funzionerebbe benissimo per i file fino all'apprx. 2-3kloc. Successivamente, la barra di scorrimento raggiungerà le dimensioni minime e inizierà a perdere la precisione.

    
risposta data 25.07.2012 - 10:48
fonte

Leggi altre domande sui tag