Come ingegnere del software, quanto è importante leggere il codice di altri?

24

Sono un ingegnere informatico in erba (ora al secondo anno, specialista in CS) e faccio davvero fatica a capire i programmi di altre persone. Voglio sapere se questa abilità (o la mancanza di esso) può essere un handicap per me, e se sì, allora come posso svilupparlo?

    
posta James Bond 09.01.2017 - 19:34
fonte

7 risposte

49

È essenziale.

Il modo in cui lo sviluppi è scrivendo il tuo codice (molto) e sì, sforzandoti leggendo il codice di altre persone.

Il problema, ovviamente, è che non tutti la pensano come te. Ero in una classe Java del primo anno molto tempo fa, e ci è stato dato un incarico. Contrariamente a quello che credevo (ovvero che le risposte convergerebbero su tre o quattro soluzioni comuni), tutti nella classe avevano una soluzione unica al compito.

Ne consegue che dovresti leggere buon codice.

Questo è uno dei motivi per cui i modelli di design sono diventati così popolari e perché dovresti studiarli. I Pattern di progettazione forniscono un linguaggio comune per i programmatori con cui comunicare e ottimizzano la tua mente in modo "migliore" per risolvere i problemi di elaborazione.

Dovresti anche studiare algoritmi e strutture dati.

Corollario: Dovresti sempre cercare di scrivere codice che altri sviluppatori possano facilmente capire.

    
risposta data 09.01.2017 - 19:39
fonte
15

È molto importante.

Una volta che ti sei diplomato e sei uscito nel mondo, la maggior parte dei progetti su cui lavorerai avrà già il codice di altri. Lucky è il programmatore che può passare tutto il suo tempo sui progetti greenfield!

È un'abilità acquisita attraverso la pratica e la pazienza e, in molti casi, è un'abilità che molte persone non hanno davvero molte opportunità di lavorare fino a dopo si diplomano e ottengono quel primo lavoro. Relax!

(anche se la tua scuola ha un programma cooperativo, questo ti darebbe un'esperienza pre-laurea per lavorare su grandi progetti che sono scritti per lo più da altre persone E ti ottengono crediti accademici! per esaminare, se disponibile)

    
risposta data 09.01.2017 - 19:46
fonte
7

È una grande abilità , a seconda delle specifiche di dove lavori, potrebbe anche essere più importante della scrittura del codice stesso.

Come altre abilità, la pratica rende perfetti! Prova a leggere il codice di un altro programmatore, esegui il debug e ciò che mi aiuta personalmente, è quello di rifattorizzare o migliorare piccoli bit di codice ed espandere da lì.

    
risposta data 09.01.2017 - 19:39
fonte
4

Ci sono abilità distinte sia nel codice di lettura che di scrittura.

  • Uno è la sintassi. Sapere come si presenta una dichiarazione di metodo.
  • L'altro è l'intento. Sapendo perché il metodo è lì e a quale scopo serve.

Per quanto riguarda la lettura e la scrittura. Sì, la lettura è essenziale.
Alcune massime che aiutano molti di noi con questo sono:

  • Il codice viene letto 10 volte (almeno) per ogni volta che viene scritto.
  • Qualcun altro sta leggendo il codice è spesso ... io in futuro leggo il codice.
  • Non difenderei il mio stile di codice da più di un anno fa, da allora è migliorato.

OK. Quindi è tutto fantastico. Ora tocca a quello che probabilmente stai vivendo.

omg, questo enorme codebase con decine di migliaia di righe di codice sorgente e classi che sono centinaia di righe lunghe con dipendenze pazzesche e ogni volta che provo a seguire qualcosa devo tenere 10 livelli nella mia testa, ecc, ecc. .
Suona familiare? Si. Respiro profondo. Rilassare. È normale. È ciò di cui sono fatti i sistemi di produzione. Le persone sopravvivono (e fioriscono) in queste situazioni apparentemente incomprensibili perché:

    I test
  • (si spera) esistono e aiutano anche a documentare il sistema.
  • coppia di programmatori e spesso porta più del doppio del risultato.
  • un bravo programmatore è bravo a dire che non capisce fino a quando lo fa.
  • le modifiche sono spesso solo una o poche righe di codice che aiutano a isolare cosa testare
  • Le basi di codice
  • impiegano mesi e persino anni per familiarizzare con
risposta data 10.01.2017 - 01:43
fonte
1

La maggior parte di queste risposte si concentra sull'importanza della lettura del codice per l'auto-miglioramento. Sono pienamente d'accordo e lo approvo.

C'è un'altra angolazione da cui fare attenzione - anche se tu fossi un prodigio che non poteva trarre beneficio dalla lettura di altri approcci (impossibile, ma per il gusto dell'argomento ...), avresti ancora bisogno di sapere come leggere il codice a causa di un concetto che fondamentalmente non esiste nel contesto universitario: la stragrande maggioranza dei progetti industriali sono progetti di campo bruno (ovvero integrati o integrati con una base di codici preesistente).

La necessità di leggere il codice solo per capire la base e i processi esistenti è reale. È sempre possibile chiedere a un altro sviluppatore domande sul codice, ma questo può richiedere solo così tanto tempo. Le persone se ne vanno, cambiano i progetti o il tempo passa semplicemente. I dettagli di basso livello svaniscono dalla memoria e i programmatori di manutenzione applicano le patch. Ad un certo punto, non esiste un'unica fonte di verità tranne il codice stesso.

Buona igiene del codice, guide di stile, recensioni di codici e documentazione, ma a un certo punto il codice è la fonte della verità per ciò che accade e l'unico modo per trovare la risposta è di andare a prenderlo da soli. A prescindere dai suoi usi nello sviluppo personale, la capacità di leggere il codice è un'abilità distintamente separata dalla sua scrittura.

    
risposta data 10.01.2017 - 01:27
fonte
0

Capire il codice degli altri è qualcosa che non puoi sfuggire, visto che molto probabilmente lavorerai in squadra, anche se non nella squadra tu farai cose diverse su google e dovrai capire il codice di esempio. Quindi sì è obbligatorio.

Ciò che provo è che ognuno percepisca quel sentimento potrebbe essere meno di altri specialmente all'inizio, comprendi il tuo codice meglio di altri codice mentre passi molto più tempo con il tuo codice di quello che qualcun altro codifica come non solo leggi ma scrivi e strutturalo nella tua mente. Se inizi a trascorrere più tempo con il codice di altri e prima prova a vedere quale tipo di struttura / flusso viene utilizzato, questo ti farà sicuramente capire meglio il codice.

Per rendere il mio punto ancora più convincente se hai un codice che hai scritto un anno fa, prova a capirlo di nuovo e posso dire che ci vorrà più tempo ma meno del codice di altri come hai idea di come strutturi il tuo codice.

Spero che questo aiuto, non essere deluso è perfettamente normale. Dedica più tempo con il codice e alla fine lo otterrai.

    
risposta data 17.01.2017 - 07:58
fonte
0

Bene, mi è appena stato dato un progetto con circa 100.000 righe di codice scritte da una squadra in un paese diverso, e devo apportare alcune modifiche molto significative a una copia del loro codice nei prossimi mesi, lasciando comunque più codice in comune possibile.

Dimmi come posso fare il mio lavoro senza la capacità di leggere il codice di altre persone, in fretta. Se non puoi leggere il codice di altre persone, sei completamente, completamente bloccato.

    
risposta data 17.01.2017 - 10:38
fonte

Leggi altre domande sui tag