<ul>Sviluppo rapido  di applicazioni con PHP </ul><ul>Massimiliano Arione Torino, 11 Luglio 2011 </ul><ul>PHP.TO.START </ul>
<ul>http://www.mulaz.org/spam/wp-content/uploads/2009/12/pG3q7.jpg </ul>
<ul>http://sourcemaking.com/files/sm/images/spagett.jpg </ul>
<ul>http://blog.paperogiallo.net/rs-recipepicks-10spaghetti-meatballs608.jpg </ul>
<ul>http://ricette.pourfemme.it/wp-galleryo/lasagna-al-rag/lasagna-bolognese.jpg </ul>
<ul>http://www.freeforpsp.com/upload/201009/100914073567422.jpg </ul>
<ul>http://it.wikipedia.org/wiki/File:FIAT_500_N.JPG.jpg http://it.wikipedia.org/wiki/File:Ferrari599_A6_1.JPG </ul>
<ul>http://www.laferramentashop.it/img/1271146287419017.jpg </ul>
<ul>http://commons.wikimedia.org/wiki/File:Italian_traffic_signs_-_lavori.svg </ul>
<ul>http://en.wikipedia.org/wiki/File:Recycling_symbol.svg </ul>
<ul>http://www.flickr.com/photos/davedehetre/4274986217 </ul>
<ul>http://ricette.pourfemme.it/wp-galleryo/lasagna-al-rag/lasagna-bolognese.jpg </ul>
<ul>? </ul>
<ul>Grazie! </ul><ul>Massimiliano Arione </ul><ul>@ garakkio </ul><ul>blog.garak.it </ul>
Upcoming SlideShare
Loading in …5
×

Sviluppo rapido di applicazioni con PHP

1,335 views

Published on

la mia presentazione all'evento PHP.TO.START 2011

Published in: Technology, Design
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,335
On SlideShare
0
From Embeds
0
Number of Embeds
136
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • questa immagine un po’ scherzosa rappresenta la visione che hanno degli sviluppatori php gli sviluppatori di altri linguaggi più blasonati. Ovviamente si tratta di uno scherzo, ma ha un fondo di verità: perché gli sviluppatori PHP sono visti un po’ come degli script kiddies?
  • il motivo è che, dalla sua nascita e per almeno un lustro, php è stato il linguaggio per eccellenza dello spaghetti code. Chiunque riuscisse nella non difficile impresa di installare apache e mysql, si trovava a maneggiare esempi presi qua e là e a implementare siti dinamici, senza alcuna organizzazione del codice
  • ma php, fortunatamente si è evoluto. C&apos;è stata una fase intermedia, in cui l&apos;OOP era ancora mescolata a procedurale, soprattutto a causa di una mancanza strutturale al pieno supporto agli oggetti
  • si è arrivati infine, a metà decennio scorso, al full OOP e quindi finalmente a una programmazione strutturata, con livelli separati, chiamata anche Lasagna code. Qui si è avuta finalmente l&apos;opportunità di implementare design pattern e best practices giù usate in altri linguaggi, fino ad avere a disposizione dei framework, come ZF e symfony
  • ma veniamo al punto della presentazione: per capire cosa sia lo sviluppo rapido dobbiamo partire dal concetto di velocità. Che cos’è la velocità? Uno sviluppatore alle prime armi, o uno sviluppatore che ancora è ancorato alle vecchie logiche procedurali, potrebbe dire “ma chi me lo fa fare di imparare i design pattern e le best practice, a smazzarmi sul TDD quando invece posso prendere i miei pezzetti di spaghetti code e tirare su un’applicazione in poco tempo?&amp;quot;
  • c’è una metafora molto eloquente a riguardo: c’è una 500 (una vecchia 500) in autostrada, che accelera fino ad arrivare a 100 km/h. L’abitacolo trema, il motore è al massimo di giri e il guidatore ha proprio l’impressione di andar forte. C’è poi una Ferrari, sulla stessa autostrada e alla stessa velocità: il guidatore sente un leggero sibilo e vede il contagiri nemmeno a metà del massimo, gli sembra dunque di andar piano. Eppure le due auto viaggiano alla stessa velocità. in questa metafora, la 500 è lo sviluppatore di spaghetti code, mentre la Ferrari è, come probabilmente avrete capito, lo sviluppatore “avanzato” (velocità effettiva vs. velocità percepita)
  • l primo problema che si trova ad affrontare lo sviluppatore di spaghetti code è l’estensibilità: non possiamo illuderci che un’applicazione sia finita il giorno in cui va online. Il mondo si evolve rapidamente e il web ancora di più, per cui dobbiamo essere in grado di aggiornare in modo facile un software esistente. Se ho impiegato un’ora a sviluppare una feature e poi me ne serviranno 4 per modificarla, è evidente che mi sarebbe convenuto svilupparla in 2 ore ma in maniera corretta. L&apos;applicazione deve poi essere estensibile anche verticalmente, se, come ci auguriamo, avrà successo e quindi sarà usato da un numero maggiore di utenti
  • il secondo problema è la manutenibilità: senza una corretta organizzazione del codice, diventa molto difficile sia per altri sviluppatori intervenire in parallelo, sia per lo sviluppatore stesso intervenire successivamente. Inoltre il codice “lasagna”, se scritto seonco best practice (e quindi usando test auomatici), sarà sicuramente più robusto e meno soggetto a regressioni
  • l terzo problema è la mancanza di riusabilità: senza una corretta separazione degli ambiti, non è possibile riutilizzare codice già scritto in precedenza, ma occorrerà nel migliore dei casi fare un copia e incolla da una precedente implementazione simile e un conseguente adattamento. Per lo stesso motivo sarà più difficile usare software open già disponibile, in mancanza di un’adeguata struttura di supporto. Al contrario, un approccio come quello usato in un framework pone solamente un investimento iniziale, per studiare un codice altrui o per implementare un proprio codice. Successivamente, si potrà riusare lo stesso codice senza modifiche, oppure ampliare il codice esistente per renderlo adatto in casi più ampi.
  • Come bonus dello sviluppo di codice lasagna, possiamo avere la generazione automatica di codice PHP. Le macchine dovrebbero servire proprio a questo, a svolgere al posto nostro compiti ripetitivi e noiosi, lasciandoci compiti specifici. Con un framework come symfony, possiamo scrivere un semplice file di configurazione, che definisce i modelli (cioè le tabelle, nel pattern Active Record), coi loro attributi e soprattutto con le loro relazioni. Con un comando da terminale, avremo generate per noi tutte le classi di base per gestire questi modelli, comprese le suddette proprietà e relazioni.
  • Conclusione: lasagne, NON spaghetti!
  • Sviluppo rapido di applicazioni con PHP

    1. 1. <ul>Sviluppo rapido  di applicazioni con PHP </ul><ul>Massimiliano Arione Torino, 11 Luglio 2011 </ul><ul>PHP.TO.START </ul>
    2. 2. <ul>http://www.mulaz.org/spam/wp-content/uploads/2009/12/pG3q7.jpg </ul>
    3. 3. <ul>http://sourcemaking.com/files/sm/images/spagett.jpg </ul>
    4. 4. <ul>http://blog.paperogiallo.net/rs-recipepicks-10spaghetti-meatballs608.jpg </ul>
    5. 5. <ul>http://ricette.pourfemme.it/wp-galleryo/lasagna-al-rag/lasagna-bolognese.jpg </ul>
    6. 6. <ul>http://www.freeforpsp.com/upload/201009/100914073567422.jpg </ul>
    7. 7. <ul>http://it.wikipedia.org/wiki/File:FIAT_500_N.JPG.jpg http://it.wikipedia.org/wiki/File:Ferrari599_A6_1.JPG </ul>
    8. 8. <ul>http://www.laferramentashop.it/img/1271146287419017.jpg </ul>
    9. 9. <ul>http://commons.wikimedia.org/wiki/File:Italian_traffic_signs_-_lavori.svg </ul>
    10. 10. <ul>http://en.wikipedia.org/wiki/File:Recycling_symbol.svg </ul>
    11. 11. <ul>http://www.flickr.com/photos/davedehetre/4274986217 </ul>
    12. 12. <ul>http://ricette.pourfemme.it/wp-galleryo/lasagna-al-rag/lasagna-bolognese.jpg </ul>
    13. 13. <ul>? </ul>
    14. 14. <ul>Grazie! </ul><ul>Massimiliano Arione </ul><ul>@ garakkio </ul><ul>blog.garak.it </ul>

    ×