Codice con le rughe - 3/4 (e resto mancia)



Quand'è che un programmatore considera un codice sorgente "Legacy" ???
Quando e come quel codice è diventato Legacy ???



Visti i link, letti i commenti, l'idea che mi convince sempre di più è questa.

Visto che non è una tecnologia superata a rendere un codice Legacy - visto che non è il fatto che il codice non è documentato e nessuno sa più cosa fa come e perché a renderlo Legacy  - visto che
non è il tempo che passa e non è l'uso che lo consuma a renderlo Legacy - vista la difficoltà di leggere il codice rispetto la facilità a scriverlo cioè non è facile valutare il codice altrui (specie quando non presente) allo stesso modo del proprio (ogni scarrafone è bello a mamma soja) ... :



Il codice quando è Legacy lo è dal momento stesso in cui viene scritto oppure non lo è per niente



E quanto il codice scritto è Legacy o non lo è varia in relazione degli skill di coding del team che lo produce


Dal punto di vista pratico sono 2 le cose che mi convincono in questo senso:

   - Mi è capitato di trovare nel codice di un sw rifatto da zero segni di difficoltà/ostacoli simili a quelli del codice "Legacy" che sostituiva

   - Leggendo   Working Effectively with legacy code di M.C.Feathers ci ho trovato tecniche di refactoring del codice valide e applicapili tanto a codice Legacy pre-esistente quanto a codice nuovo ancora da scrivere







Tags :   |  |  |  |

Print | posted @ venerdì 29 agosto 2008 01:19

Comments on this entry:

Gravatar # re: Codice con le rughe - 3/4 (e resto mancia)
by Pierre at 29/08/2008 06:03

Non mi trovo d'accordo con la conlusione "Il codice quando è Legacy lo è dal momento stesso in cui viene scritto oppure non lo è per niente". Il codice che segue al meglio i paradigmi della programmazione, best practices e design patterns soddisfando i requisiti funzionali del momento ed alcuni prevedibili ma non richiesti non nasce legacy. I requirements funzionali possono cambiare, ed anche di molto, rendendo potenzialmente il codice di prima legacy. Se non si segue alcuna regola allora e' legacy sin dalla nascita.
Gravatar # re: Codice con le rughe - 3/4 (e resto mancia)
by fabiobeta at 29/08/2008 14:33

@pierre
Immagina di scrivere questo codice "che segue al meglio i paradigmi della programmazione". Poi scappi ricco alle hawaii e il codice scritto 5 minuti fa viene passato a qualcuno meno skillato, che non sa ancora cos'è un iterator (amazon deve ancora consegnargli il libro sui design pattern). Per questa persona il codice, anche appena nato, è legacy.

IMO ovviamente :)
Gravatar # re: Codice con le rughe - 3/4 (e resto mancia)
by Pierre at 30/08/2008 09:48

>> dipende dagli skill di chi scrive il codice o ci fa manutenzione e lo lascia in uno stato più o meno legacy <<

Si, un programmatore poco esperto e poco interessato alla qualità tende a creare codice legacy.

>> lavorando in un ambinte enterprise queste condizioni sono una realtà quotidiana anche per software di successo che sono ancora facili da manutenere ed evolvere <<

Anche qui dipende, molto spesso proprio in ambiente enterprise ci si affida a professionisti inesperti, tanti e di bassa qualità. Poi si chiede aiuto al 'guru' di turno quando la frittata è fatta e bisogna consegnare!


>>l'idea di legacy che più funziona imho è che un codice diventa legacy quando è difficile da capire, capire come modificare e verificare le modifiche <<

Non direi, secondo me diventa legacy quando le modifiche derogano da tutti i paradigmi, patterns e così via. In altre parole si riempie di pezze.
Gravatar # re: Codice con le rughe - 3/4 (e resto mancia)
by Massimo Solcia at 09/01/2009 13:56

Leggendo "The art of unit testing" (della Manning in versione MEAP) ho trovato la seguente definizione di cui ti volevo far partecipe:

Legacy code è un codice che non ha test.

Nel quale è dunque difficile muoversi senza rompere qualcosa. Quindi come hai detto tu "quando è difficile da capire, capire come modificare e verificare le modifiche".
Comments have been closed on this topic.