Spaghetti code refactoring

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Spaghetti code refactoring - Presentation Transcript

    1. PhpDay 2009 Spaghetti Code Refactoring Gli spaghetti sono buoni!!...ma da mangiare. Francesco (cphp) Trucchia <ft@ideato.it>    
    2. Devi lavorare su codice ingarbugliato  come questi spaghetti?    
    3. Solo chi l'ha scritto lo capisce?    
    4. ...e se ne sta andando?    
    5. Il tuo boss vuole nuove features...    
    6. ...e tu pensi sia un'impresa apocalittica?    
    7. Che fare?    
    8. Scappare?    
    9. Temporeggiare?    
    10. Lottare?    
    11. Io non farei nulla di tutto ciò!    
    12. REFACTORING IS THE ONLY WAY    
    13. Perchè?    
    14. Migliora il design    
    15. Migliora la leggibilità    
    16. Aumenta l'efficienza    
    17. Mantiene il valore    
    18. Abbatte i costi    
    19. Quando?    
    20. “Three strikes and you refactor” Don Roberts    
    21. Quando aggiungi funzionalità    
    22. Quando fai bug­fixing    
    23. Come?    
    24. Metodi usati ● TDD (test driven development) ● KISS (keep it simple and stupid) ● DRY (don't repeat yourself) ● DDD (domain driven design)    
    25. Popular bed smells in code ● Procedural code ● Duplicated code ● Long method ● Large class ● Switch statements ● Comments    
    26. Procedural code Il codice procedurale è difficile da leggere e da  mantenere. Tutto il codice procedurale deve diventare ad  oggetti. Metodo: “big refactoring”    
    27. Duplicated code Se ci sono blocchi di codice ripetuti che fanno la  stessa cosa, uniamoli sotto un unico metodo. Metodo: “extract method”    
    28. Long method Se esistono metodi molto lunghi spezziamo il loro  comportamento in tanti piccoli metodi o  deleghiamo alcune responsabilità a nuove classi. Metodi: “extract method”, “extract class”    
    29. Large class Se una classe è troppo grande deleghiamo alcune  responsabilità ad altre classi. Metodo: “class extract”    
    30. Switch statement Se ci sono blocchi switch complessi, utilizziamo il  polimorfismo per sostituirne la logica. Metodo: “replace conditional with polymorphism”    
    31. Comment I commenti servono a descrivere le interfacce non  il codice. Se ho bisogno di scrivere un commento  per spiegare quello che il mio codice fa, significa  che il codice non è leggibile o disegnato bene. Invece di scrivere il commento, devo migliorare la  leggibilità del codice scritto.    
    32. The big refactoring Ora vedremo un esempio concreto di refactoring. Refactoring di un'applicazione procedurale in  codice ad oggetti.    
    33. Requisiti ● Apache ● MySql ● PHP 5 ● Client svn ● PHPUnit + Selenium ● Java    
    34. La sfida Il nostro boss, che si è appena comprato l'iphone,  ha deciso che vuole estendere le funzionalità  dell'applicazione “Rubrica” per visualizzarne i  contatti su mobile. Problemi: ● L'applicazione è datata e chi l'ha sviluppata non  lavora più in azienda; ● E' scritta con codice procedurale.    
    35. Step by step ● Scrittura dei test funzionali ● Creazione classe Main ● MVC: separiamo la logica di business da quella  di presentazione ● Introduzione dell'ORM ● Introduzione del Template Engine ● Introduzione del Controller    
    36. Il progetto Wiki http://www.assembla.com/wiki/show/phpday2009­spaghetti­code­ refactoring Web SVN http://code.assembla.com/phpday2009­spaghetti­code­ refactoring/subversion/nodes SVN http://subversion.assembla.com/svn/phpday2009­spaghetti­code­ refactoring    
    37. Libri ● Refactoring:  http://martinfowler.com/books.html#refactoring ● Refactoring Databases: http://martinfowler.com/books.html#refactoringD atabases    
    38. Risorse ● http://martinfowler.com ● http://www.refactoring.com    
    39. Contatti Francesco Trucchia E­mail: ft@ideato.it Skype: trucchia Vota il talk http://joind.in/talk/view/394    
    40. Copyright foto Slide 3 foto di http://www.flickr.com/photos/kayasan/1613519480/sizes/o/ Slide 4 foto di http://www.flickr.com/photos/artefackto/2325934130/sizes/l/ Slide 5 foto di http://www.flickr.com/photos/pulpolux/36073243/sizes/o/ Slide 6 foto di http://www.flickr.com/photos/lilymonster/3291962406/sizes/l/ Slide 7 foto di http://www.flickr.com/photos/chrissomers/193120002/sizes/o/ Slide 8 foto di http://www.flickr.com/photos/ryanchrisbriggs/755579860/sizes/o/ Slide 9 foto di http://www.flickr.com/photos/boskizzi/2108302/sizes/o/ Slide 10 foto di http://www.flickr.com/photos/lilymonster/3291962406/sizes/l/ Slide 11 foto di http://www.flickr.com/photos/markus­merz/89082696/sizes/o/ Slide 12 foto di http://www.flickr.com/photos/donatellotrisolino/2820392011/sizes/l/ Slide 13 foto di http://www.flickr.com/photos/chrissomers/193120002/sizes/o/  Slide 15 foto di http://www.flickr.com/photos/luiginter/2250873/sizes/o/ Slide 16 foto di http://www.flickr.com/photos/ambrosianapictures/3102263687/sizes/l/ Slide 17 foto di http://www.flickr.com/photos/27117418@N07/2559014732/sizes/o/ Slide 18 foto di http://www.flickr.com/photos/ranran2/2954870079/sizes/o/  Slide 21 foto di http://www.flickr.com/photos/big_mouth/2704493108/sizes/o/ Slide 22 foto di http://www.flickr.com/photos/big_mouth/2704493108/sizes/o/    

    + Francesco TrucchiaFrancesco Trucchia, 5 months ago

    custom

    499 views, 0 favs, 2 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 499
      • 432 on SlideShare
      • 67 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 4
    Most viewed embeds
    • 44 views on http://www.cphp.it
    • 23 views on http://www.phpday.it

    more

    All embeds
    • 44 views on http://www.cphp.it
    • 23 views on http://www.phpday.it

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories