2010-08-27 13 views
18

Sono passato a una nuova società e sto lavorando a un prodotto che ha un'enorme base di codice senza documentazione. Voglio familiarizzare rapidamente con il design e il flusso di codice del prodotto in modo che possa diventare un membro produttivo ASAPCome comprendere rapidamente il design e il flusso di codice di qualsiasi prodotto?

lentamente e costantemente si arriva a capire il codice, ma quale dovrebbe essere il modo migliore e intelligente dovrebbe avvicinarsi alla base di codice in modo che capisca rapidamente il codice e inizi a fornire?

Nota: Ho provato le mie mani su Star UML e ho provato a decodificare i diagrammi delle classi in modo che potessi avere un'idea approssimativa dei progetti interni del prodotto ma fallire miseramente.

MODIFICA: La domanda non riguarda la conoscenza di ciò che fa il prodotto ma di come sono progettati gli interni.

bug di fissaggio e il debug utilizzando punti di interruzione fa fornire un modo per raggiungere questo, ma stavo cercando se c'è anche un modo più veloce potremmo raggiungere questo

Parole di Keith:

Questo può funzionare per alcune basi di codice, ma in generale penso che sia una cattiva idea. Tendi ad essere troppo concentrato sui dettagli, mentre all'inizio vuoi ottenere il quadro generale: quali sono le classi, quali sono i modelli di comunicazione, ecc. Inoltre, se hai un'applicazione distribuita (client-server, n-tier , ecc), o il codice che richiede molto tempo per farlo funzionare non può essere pratico a correre attraverso un debugger

+0

Non sono sicuro di cosa intenda per "modo più veloce" di apprenderlo. Senza guardare il codice attuale, in quale altro modo si dovrebbe sapere come funziona? –

risposta

15

Sono un ingegnere di contratto, e questa situazione è di routine più volte all'anno, negli ultimi decenni.

Trovo molto utile per eseguire prima l'applicazione e giocare con lui, prima di guardare in qualsiasi codice:

  • Che diamine fa? Se necessario, leggere la documentazione dell'utente.
  • Cosa succede con valori estremi?
  • Cosa succede se ometto alcuni valori?
  • Cosa succede se faccio clic su un controllo rapidamente?
  • Esiste un modo per utilizzare il programma in modo errato?
  • Esplora i bordi dell'applicazione: ci sono sottomenu usati raramente o difficili da trovare? Esiste una funzione di configurazione che espone più funzionalità?

Mentre lo sto facendo, sto costruendo un modello mentale di come l'avrei implementato. Sorprendentemente, questo primo incontro orientato all'utente con il prodotto di solito fa sì che la mia comprensione dell'applicazione sia di gran lunga superiore agli sviluppatori che ci hanno lavorato per molto tempo. Un effetto collaterale di questo approccio è che io tendo a trovare parecchi bug (spesso una valanga di questi) e penso ad alcuni miglioramenti che dovrebbero essere .

Dopodiché, guardo alla struttura generale del programma, che si tratti di moduli, classi, file o schema. Non guardando le singole righe di codice, ad eccezione di quelle che mostrano l'architettura del programma. Una volta che penso di capire più della metà della struttura, cerco di apportare una piccola correzione o miglioramento di bug, qualcosa che richiede alcuni minuti per scrivere, ma potrebbe richiedere ore per capire correttamente. Se funziona, faccio qualche cambiamento leggermente più grande da qualche parte, preferibilmente in un'altra sezione del codice.

In questo modo, ho trovato la possibilità di comprendere abbastanza bene da circa 50.000 a 100.000 righe di codice al giorno.

+0

Penso che questo sia il modo migliore finora. – pankajt

+0

@wallyk grazie questo è il buon approccio da adottare .. – Himanshu

5

Se si dispone di un ambiente di sviluppo per eseguire il codice nel modo migliore che ho trovato è quello di utilizzare un debugger e osservare il flusso di codice durante l'esecuzione. È possibile impostare punti di interruzione e attraversarlo per vedere come il codice interagisce.

+1

A seconda della configurazione della propria azienda se si dispone di risorse di controllo qualità che eseguono test sull'applicazione, è possibile chiedere loro di fornire alcuni casi d'uso e informazioni sui test comuni in modo da disporre di una base per eseguire il programma durante il debug. –

+0

+1 La prima cosa che cerco di fare quando apprendo un nuovo sistema è la sua introduzione riga per riga nel debugger. –

+4

Questo potrebbe funzionare per alcune basi di codice, ma in generale penso che sia una cattiva idea. Tendi ad essere troppo concentrato sui dettagli, mentre all'inizio vuoi ottenere il quadro generale: quali sono le classi, quali sono i modelli di comunicazione, ecc. Inoltre, se hai un'applicazione distribuita (client-server, n-tier , ecc.) o codice che impiega molto tempo per eseguirlo potrebbe non essere pratico per eseguirlo attraverso un debugger. – KeithB

0

Chiedi a tutti quelli che riesci a trovare per chiedere aiuto e chiedi loro di chiedere a chiunque altro ritengano possa essere utile.

+2

Si prega di non farlo. Lavorare con persone che insistono nell'essere alimentate a cucchiaio tutte le loro informazioni non è solo estremamente frustrante, ma uccide la produttività. Dagli un buon sforzo prima di ricorrere a questo metodo, i tuoi compagni di squadra ti ringrazieranno. ;) – mpeterson

+0

Chiedere aiuto è il più veloce, e talvolta l'unico modo per capire cosa sta succedendo, specialmente con sistemi complessi. Non c'è documentazione per un motivo - non hanno avuto il tempo di crearlo. La conoscenza del codice è in testa o non esiste affatto.Ha bisogno di imparare dove sono le lacune di conoscenza che si prevede di riempire e che viene dal chiedere ai compagni di squadra. – Beth

3

La tua domanda sembra in qualche modo simile a this topic

Forse si può avere uno sguardo a the blog of one of the SO co-developer, che ha una sezione "Nuovo Developer" (e BTW è davvero divertente).

+1

Penso che 'Disegnare le gerarchie di classi su un foglio di carta 'abbia senso. – pankajt

4

Il modo in cui ho sempre imparato, oltre a leggere il codice/modello di dati, è iniziare a correggere alcuni bug. Questo mi dà visibilità a varie parti del sistema, e avere lo 'scopo' durante la lettura del codice lo rende un po 'più significativo.

+0

+1 In realtà l'utilizzo del codice è un ottimo modo per impararlo. Non c'è nessuna pillola magica qui. –

0

Ci sono strumenti che assorbono il codice sorgente e disegnano immagini. Prova Enterprise Architect di Sparx. È inferiore a $ 200 per posto e ti mostrerà il layout dell'oggetto in modo molto efficace.

Problemi correlati