Refactoring to Design Patterns (phpDay 2009)

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

    1 Event

    Refactoring to Design Patterns (phpDay 2009) - Presentation Transcript

    1. Refactoring to Design Pa0erns  Simone Carle5  phpDay 2009 – May 15‐16, 2009 – Verona, Italy  h0p://grusp.it ‐ h0p://phpday.it ‐ h0p://joind.in/event/view/34 
    2. About Me  •  Technical Manager in Altura Labs  •  Addicted to Agile Development  •  Fallen in love with Development Best Prac=ces  •  Passionate about Object Oriented  Programming  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    3. Designing object oriented soKware is hard, and  designing reusable object‐oriented soKware is  even harder.  Design Pa*erns (GoF)  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    4. EvoluRon 
    5. Maintainability  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    6. Maintainability  Long project lifecycle  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    7. Maintainability  Long project lifecycle  Scalability  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    8. Maintainability  Long project lifecycle  Scalability  Flexibility  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    9. … and we need it for yesterday!  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    10. Design for Changes  The key to maximizing reuse lies in an=cipa=ng  new requirements and changes to exis=ng  requirements, and design your system so that  they can evolve accordingly.  Design Pa*erns (GoF)  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    11. Bad Smell  hVp://www.codinghorror.com/blog/ archives/000589.html 
    12. D.R.Y.  Don’t repeat yourself 
    13. K.I.S.S.  Keep it Simple, Stupid 
    14. Y.A.G.N.I.  You Ain't Gonna Need It  
    15. Over‐Engineering  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    16. Under‐Engineering  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    17. Refactoring 
    18. phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    19. What is Refactoring?  Refactoring is a disciplined technique for  restructuring an exis=ng body of code, altering  its internal structure without changing its  external behavior.  Mar2n Fowler  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    20. Why?  •  Improve readability  •  Improve maintainability  •  Gain a beVer understanding of code  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    21. How?  •  Small steps  •  Con=nuous  •  Don’t add features  •  … or bugs  •  Have a good knowledge of the code  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    22. Design Pa0erns 
    23. Design PaVerns describe simple and elegant  solu=ons to specific problems in object  oriented soKware design.  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    24. phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    25. Each paVerns describes a problem which occurs  over and over again in our environment, and  then describes the core of the solu=on to that  problem, in such a way that you can use this  solu=on a million =mes over.  Christopher Alexander  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    26. Context  Problem  Solu=on  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    27. A word of warning  Ideally when the appropriate problem comes  along, you should trigger the design paVern  and your problem is solved.  Russ Olsen, Design Pa*erns in Ruby  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    28. Design Pa0erns by Purpose  •  Crea=onal PaVerns  •  Structural PaVerns  •  Behavioral PaVerns  •  Concurrency PaVerns  •  Architectural PaVerns  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    29. There is a natural rela=on   between paVerns and refactorings.   PaVerns are where you want to be,   refactorings are ways to get there   from somewhere else.  Mar2n Fowler  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    30. TesRng 
    31. phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    32. TesRng  performance  integra=on  func=onal  unit  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    33. Test Driven Development  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    34. Design  Tes=ng  PaVerns  Refactoring  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    35. Refactoring to Design Pa0erns 
    36. Observer 
    37. Observer  The Observer paVern defines dependency  between objects so that when one object  change state, all its dependents are no=fied  and updated automa=cally  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    38. Observer  Post  CacheSweeper  EmailNo=fier  Logger  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    39. Observer  $post‐>=tle = “foo”;  Post  $post‐>save();  CacheSweeper  EmailNo=fier  Logger  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    40. Observer  $post‐>=tle = “foo”;  Post  $post‐>save();  CacheSweeper  EmailNo=fier  Logger  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    41. Observer  $post‐>=tle = “foo”;  Post  $post‐>save();  CacheSweeper  EmailNo=fier  Logger  aKer_save()  aKer_save()  aKer_save()  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    42. Observer  $post‐>delete();  Post  CacheSweeper  EmailNo=fier  Logger  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    43. Observer  $post‐>delete();  Post  CacheSweeper  EmailNo=fier  Logger  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    44. Observer  $post‐>delete();  Post  CacheSweeper  EmailNo=fier  Logger  aKer_delete()  aKer_delete()  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    45. Code Time 
    46. Strategy 
    47. Strategy  function doSomething($even, $odd) { if ($even == \"secret\") { if ($odd == \"other secret\") { return 1; } else if (\"pizza\" == \"good\") { return \"Yes it is!\"; } } else if ($odd != $even) { return \"yeah, they are\"; } else { return \"I'm getting crazy\"; } }  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    48. Strategy  method($params) { // complex logic // conditional strategy } phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    49. Strategy  method($params) { $s = new Strategy(); $s->method($params); } $s = new Strategy() Strategy 1  Strategy 2  Strategy 3  $s->method($params); phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    50. Code Time 
    51. QuesRons?  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    52. License  This presenta=on is published under the AVribu=on‐Share Alike Unported  Crea=ve Commons License.  You are free:  •  to Share — to copy, distribute and transmit the work  •  to Remix — to adapt the work  Under the following condi=ons:  •  A0ribuRon — You must aVribute the work in the manner specified by the author or licensor  (but not in any way that suggests that they endorse you or your use of the work).  •  Share Alike — If you alter, transform, or build upon this work, you may distribute the  resul=ng work only under the same, similar or a compa=ble license.  Visit hVp://crea=vecommons.org/licenses/by‐sa/3.0/ for more details.  phpDay 2009 – 15 e 16 Maggio  Verona, Italy 
    53. Thank you!  Slides will be available at  www.simonecarleq.com  www.slideshare.net/weppos  Rate this talk at  hVp://joind.in/talk/view/417 

    + Simone CarlettiSimone Carletti, 5 months ago

    custom

    696 views, 0 favs, 2 embeds more stats

    More info about this document

    CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

    Go to text version

    • Total Views 696
      • 591 on SlideShare
      • 105 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 11
    Most viewed embeds
    • 75 views on http://www.phpday.it
    • 30 views on http://www.simonecarletti.com

    more

    All embeds
    • 75 views on http://www.phpday.it
    • 30 views on http://www.simonecarletti.com

    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

    Groups / Events