Ho lavorato su una base di codice complessa per più di un anno. Verifica se i miei approfondimenti possono aiutarti:
I tuoi approfondimenti sono corretti, quando raggiungi una parte diversa del codice, dimentichi la parte precedente. Può essere un ciclo senza fine. La lezione importante da portare via qui è che il prodotto non può funzionare senza che tutte le parti funzionino correttamente. Anche se una parte fallisce, il prodotto non funziona. Guardalo da un altro punto di vista: se migliori una parte in modo drammatico, NON POTREBBE conseguire un migliore funzionamento del prodotto, che è il tuo obiettivo principale qui.
Quindi, in primo luogo: non essere uno sviluppatore. Diventa un tester.
Non cercare di capire parte per parte. Comprendi l'intero prodotto e il suo funzionamento quando tutte le parti sono insieme. Da un ambiente di produzione (ad esempio un ambiente non di sviluppo - nessun punto di debug), testare il prodotto. Quindi, proprio come fa ogni tester, registra i problemi che affronti in un bug tracker. Assegna la gravità e la priorità ad essa. Poiché questo software esiste già da un po 'di tempo, verifica se è già stato creato un bug tracker. Se ce n'è già, sei fortunato. Aggiungi a quelli e prendi tempo e verifica ciascuno di quelli esistenti. Alla fine di questo ciclo, capisci il prodotto da un punto di vista dell'utente (non dovresti assolutamente perderlo) e anche un punto di vista del QA. A tempo debito, potresti anche rendertene conto che una riga di codice risolverà il bug, e coloro che lo hanno codificato non l'hanno fatto perché non c'era un reale bisogno allora.
Secondo passaggio: indossa un capo firmato
Rompere il prodotto in più parti (non letteralmente o secondo la tua convenienza, ma in base al modo in cui lavorano insieme). Potrebbe essere il tuo lavoro al massimo o le conoscenze esistenti potrebbero entrare in gioco. Quindi, cerca di capire come funzionano tra loro e con le 10 librerie dipendenti. Quindi, per ogni bug tracciato, scrivi le tue note identificando le entità del codice (ad esempio: questo cambiamento comporta la modifica delle classi X, Y, Z, ecc.). Probabilmente, alla fine di questo passaggio, avrai alcuni suggerimenti su quali sono i problemi con l'architettura corrente e cosa può essere migliorato.
Quindi, puoi decidere se l'architettura / design corrente è sufficiente e puoi migliorare il software OPPURE se il prodotto ha bisogno di un design migliore o di modifiche nel design esistente.
House of Cards
Inoltre, poiché i prodotti complessi hanno un sacco di codice, potremmo non essere in grado di raccogliere alcune cose e modificarle o migliorarle. Questo perché l'intero sistema può essere intrecciato in modo tale che il cambiamento di una delle classi equivale a cambiare la posizione di una carta in un castello di carte, non si sa mai quale fine potrebbe rompersi. Nella mia esperienza, questo è stato vero. Ho scelto una parte, migliorato il suo codice, ignaro dei contratti che aveva con altre parti del codice e ho finito per abbandonare il codice e realizzare il mio errore. Quindi, invece di cercare di capire le parti, prova a capire che è un intero.
Assegna la priorità ai tuoi dubbi
Devi tenere a mente ciò che stai cercando di migliorare:
Do you want the product to be faster?
Certo che lo fai. Ma è la principale delle preoccupazioni? È lento? In caso affermativo, crea criteri di rendimento, identifica i colli di bottiglia e migliora quelle parti. Prova di nuovo.
Do you want to improve the usability?
Quindi è più o meno il lato API / interfaccia utente.
Do you want to improve the security?
Quindi sono i limiti che dovresti esplorare.
Ho fornito solo 3 esempi, ma c'è molto altro da cercare.
Ultima e migliore documentazione
Ho letto qui in uno dei post che la documentazione più recente e migliore è il codice stesso. Anche se oggi crei una buona quantità di documentazione, è una storia dopo un po '. Quindi, il codice è il tuo ultimo pezzo di documentazione. Quindi, ogni volta che sfogli un po 'di codice, scrivi la tua comprensione nei commenti lì. Passando il codice di base, fai in modo che dipendano NON SOLO dai commenti!