In generale: impara dal contrasto
Penso che sia importante leggere sia il codice buono che quello cattivo.
Se leggi SOLO il crap code, probabilmente non imparerai molto da esso. Se leggi un misto di codice buono e cattivo, probabilmente ne imparerai di più. Il buon codice dovrebbe insegnarti nuove cose, il codice errato per mostrarti la mentalità generale del programmatore medio e le insidie da evitare, e per farti capire quanto sforzo si possa risparmiare con un buon codice.
Il contrasto è molto importante nell'aiutare.
Allo stesso modo, per un dominio diverso, Stephen King dice nelle sue memorie sulla scrittura che raccomanda di leggere i brutti romanzi. Non puoi apprezzare i bravi se non leggi quelli cattivi, e c'è un'ampiezza e una varietà di modi per avvicinarsi alla scrittura. Potresti essere sorpreso da ciò che trovi nei cattivi.
Detto questo, non passare la vita a leggere il codice che sembra essere stato scritto da un branco di scimmie o studenti annoiati senza alcun interesse nell'apprendimento della programmazione e chi è solo un elettivo CS (eccetto se questo è il tuo lavoro, allora è utile imparare i loro errori comuni e capire perché si verificano frequentemente).
È molto importante confrontare e confrontare. Ad esempio, prendi il codice sorgente per i 3 principali sistemi BSD: NetBSD, OpenBSD e FreeBSD. Sono molto simili, ma le loro implementazioni anche degli strumenti più semplici sono diverse ( ls
, cat
, ecc ...). E sicuramente ce n'è uno che preferirai all'altro (non ho controllato per circa 8 anni, e non volendo essere giudicante qui, voglio solo dare un'esperienza personale, ma al momento il codice OpenBSD mi ha colpito in gran parte più elegante rispetto agli altri, e il codice NetBSD per essere abbastanza istruttivo per imparare a usare le macro e le protezioni pre-proc).
Per codice in-house: impara dal contesto
Hai detto che si tratta di leggere il codice scritto all'interno della tua azienda. In questo caso, direi che è ancora più importante leggerne un po '. È molto interessante per te comprendere la mentalità della squadra guardando il codice, ma ti darà anche una comprensione più profonda di come funzionano i tuoi programmi.
Infine, c'è una componente molto storica ad esso. Non leggere solo la base di codice corrente. Dare il tuo client SCM preferito a portata di mano e in agguato attraverso la timeline del codice base. A volte è molto interessante vedere perché un codice diventa quello che è ora. Può essere passato tra le mani di una dozzina di diversi programmatori di età diverse, o si può anche vedere che un singolo programmatore potrebbe essere maturato nel tempo. Ti insegna anche su alcune "stranezze" e cattive cimici che potrebbero aver incontrato e sul perché hanno scelto un approccio piuttosto che un altro, anche se apparentemente meno elegante.
Ti offre un contesto.