Remember me - Lost password?
JustB : about 129 days ago
Una domanda ai veterani del codice? @capobecchino @rejected @contezero74 @iltofa @vincenzodb (me ne sto dimenticando qualcuno, ma non me ne vogliate )

Avete consigli su come approcciare lo studio di un'applicazione legacy su cui dovrete lavorare ed effettuare modifiche, considerando che si tratta di un'infinita schiera di file salvati in n+1 cartelle, che si includono a vicenda, senza uno straccio di documentazione né commenti esplicativi?

Sto notando che è uno scenario piuttosto comune, e mi piacerebbe sapere se ci sono delle best practices oltre alla reazione consigliatami dal mio professore
from Sant'Antimo - NA - 25 replies - reply meme
JustB
DeMoN3 : about 129 days ago
è lo scenario che mi son trovato davanti quando sono entrato nell'azienda in cui lavoro...sono stato giorni a passare da un file all'altro cercando di ricostruirmi una mappa mentale delle varie inclusioni...ma erano tutti in una sola cartella (argh!!) e forse in numero inferiore alla tua infinita schiera
from Latina - detail
JustB : about 129 days ago
@demon3
E cosa hai fatto? Cioè immagino che adesso riesci ad apportare modifiche senza perdere più troppo tempo, giusto?
from Sant'Antimo - NA - detail
DeMoN3 : about 129 days ago
considera che il mio incarico era "sistemare una lista di bug"...quindi mentre cercavo di capire dove nascesse il bug, cercavo di farmi anche tale mappa mentale. Dopo 1-2 settimane riuscivo a muovermi abbastanza bene (a meno che non mi capitasse di dover mettere mano a qualcosa di nuovo e sconosciuto, ovvio) e, dopo un anno, ho avuto la possibilità di radere tutto al suolo e di riscriverlo da 0 ^^

...ora si che si ragiona =D

...i file sono sempre tanti (ma divisi tra frontend, backend, css, javascript, etc) e la documentazione (mea culpa) è sempre pari a 0, ma i nomi sono "autoreferenziali" e non esistono "doppioni" (prima c'era la bruttissima usanza di lasciare il vecchio file sul server, nella stessa cartella del nuovo, ma cambiandogli il nome...e magari a volte ci ripensavano ed usavano il vecchio, lasciando il nuovo a far confusione...insomma, il chaos!!!)
from Latina - detail
capobecchino : about 129 days ago
Purtroppo hai poco da fare, se devi studiarla e nun ce sta documentazione adeguata ti ci devi mettere con tanta pazienza e capirla.

Dopo un po come ha detto @demon3 inizi a districarti nella logica di chi l'ha fatta prima di te e quindi le cose cominciano ad esser più semplici.
from Italy - detail
DeMoN3 : about 129 days ago
il problema è che per entrare nella mente dell'assassino devi diventare come lui =D
from Latina - detail
JustB : about 129 days ago
A quanto ho capito, qui è coinvolta un'intera associazione a delinquere
from Sant'Antimo - NA - detail
capobecchino : about 129 days ago
ovvio
from Italy - detail
JustB : about 129 days ago
Grazie Vinc
Mi sono duplicato il codice e sto pian piano attraversando lo stack aggiungendo commenti qui e là
from Sant'Antimo - NA - detail
contezero74 : about 129 days ago
come ti hanno detto gli altri è un lavoro di m*erd*
IO solitamente trovo molto utile rimappare il tutto via UML in modo tale da avere una chiara visione delle dipendenze.
from Italia - detail
recenso : about 128 days ago
Mi è capitato moltissime volte, applicazioni che andavano vanti da anni, migliaia di file di codice (programmazione batch o a eventi), anche su ambienti (Remedy) che non conoscevo affatto.
Rimboccata le maniche, speso ore e ore a studiare i codici e capire come collegarli (su Remedy soprattutto non c'è neanche un bastardo di debug e non c'è collegamento alcuno tra le maschere).
Poi pedalare, pedalare, perché tanto ti mettono a lavorarci sopra e non puoi dire "un moment, so' arrivato ieri".
Personalmente mi ha salvato la memoria e la cazzimma, non avevo neanche il tempo per fare le mappe, solo in testa
from Casa mia (Provincia di napoli) - detail
recenso : about 128 days ago
Ah, e soprattutto, individuato chi dei colleghi potesse saperne di più, arruffianato e ottenuto consigli e collaborazione. Provvidenziale la pausa caffè
from Casa mia (Provincia di napoli) - detail
rejected : about 128 days ago
Vedo solo ora. Quando capita, lancio Doxygen su tutti i sorgenti e mi faccio generare tutto quello che riesce a capire e trovare nel codice: trovo i diagrammi con le dipendenze - anche in stile UML (via dot) - e gli hyperlink nei file generati veramente ottimi per capire come funziona un progetto.

Il trucco è generalmente utile con qualunque codice di terze parti, ma Doxygen semplicemente spacca quando si affronta l'ignoto e per giunta caotico.

Poi refactoring per gradi, provando via via a raggruppare codice in un numero più contenuto e malleabile di file, se possibile. Nel refactoring includo anche un'operazione per uniformare lo stile: nulla di più difficile che comprendere codice "variegato".

Indi si riparte con Doxygen...

PS: ti/vi serve un post?
from Isola-che-non-c'è - detail
ragnarokkr
JustB : about 127 days ago
Grazie a tutti per il sostegno e per i consigli

Ho cominciato dal Db e pian piano mi sto rimappando tutto, lasciando anche un po' di documentazione a chi ci sarà dopo di me.

@rejected i tuoi post sono sempre illuminanti: certo che mi serve!!

Ma secondo voi suggerire una riscrittura in parallelo (avendo le risorse) di un software che funziona per opera e virtù di un'entità superiore è un'idea totalmente malsana? (Joel Spolsky mi ucciderà, lo so)


from Sant'Antimo - NA - detail
capobecchino : about 127 days ago
se hai tempo ovviamente si ...
from Italy - detail
rejected : about 127 days ago
@JustB: Spolsky rulez, anche in questo caso...

L'unico modo per rifare un qualcosa è avere chiaro cosa faceva quello precedente. A parte che, come dice Spolsky, non è garantito che il nuovo tentativo riesca meglio del precedente, ma se poi il codice da rifare è di terzi...

Come rifare e meglio qualcosa che non è neppure stato compreso?
from Isola-che-non-c'è - detail
JustB : about 126 days ago
Uhm non sono completamente d'accordo.
Se io so che bisogna fare A ma i terzi, per fare A, sono passati per B,C,D,E ed F (essendo queste ultime operazioni non necessarie) allora la riscrittura è un modo per semplificare, non trovi?
from Sant'Antimo - NA - detail
rejected : about 126 days ago
Se sei in grado di capire che invece di fare A sono passati da B,C,D,E allora significa che hai compreso il lavoro tortuoso fatto da A e allora puoi pensare di rifarlo... Il principio non è il rifare per il gusto di rifare, ma rifare perchè non c'è altra alternativa, dopo averla debitamente compresa. Non mi pare che siamo in disaccordo, o sbaglio? o_O
from Isola-che-non-c'è - detail
JustB : about 126 days ago
Muhuahauhau scusa @rejected sto troppo fuso oggi
Hai ragione, siamo d'accordo
from Sant'Antimo - NA - detail
rejected : about 126 days ago
ma figurati!
from Isola-che-non-c'è - detail
rejected : about 125 days ago
@justb: pronto e schedulato per domani.
from Isola-che-non-c'è - detail
JustB : about 113 days ago
Dopo un po' di prove, ho notato che è impossibile inserire degli unit test all'interno del codice. Troppo dipendente da variabili superglobali, include su include.
Allora ho provato per un'altra strada, utilizzando Selenium IDE. In pratica permette di automatizzare il testing dell'UI e, per certi versi, effettuare dei controlli sul codice.
Tipo in quest'immagine il saldo di un conto corrente viene aumentato di una certa quantità e poi testo che la differenza tra il saldo vecchio e quello attuale è pari alla quantità versata sul conto.

Un po' elaborato, ma almeno è qualcosa.
from Sant'Antimo - NA - detail
JustB : about 113 days ago
Chissà se @castle conosce Selenium
from Sant'Antimo - NA - detail
rejected : about 113 days ago
Mai visto, interessante...
from Isola-che-non-c'è - detail
castle : about 113 days ago
@justb lo conosco ma ammetto di non averlo mai provato. Quando ne ho avuto bisogno ho usato con successo la 'combo' WatIn+NUnit.
from Cento (FE) - detail
New to meemi?
Join now to quickly and easily way

Problem? Rigenerate new code
By clicking the button, you agree all terms of service