antipatterns: i vizi del programmatore

Download AntiPatterns: i vizi del programmatore

Post on 22-Apr-2015

1.851 views

Category:

Technology

5 download

Embed Size (px)

DESCRIPTION

Scopriamo come migliorare il nostro codice con le ultime novità dal mondo .NET: MEF, Code Contracts, T4, Task Parallel Library e molto altro ancora.

TRANSCRIPT

  • 1. 1 nn 0 va presenta :ANTIPATTERNS Pordenone ,I vizi del programmatore 26 Novembre 2010 Speaker : Manuel Scapolan
  • 2. ANTI-PATTERN Definizione: Un anti-pattern una frequente, ma in gran parte inefficace soluzione ad un problema descrive il modo in cui da un problema si ottiene una cattiva soluzione con laggiunta di ulteriori difficolt a quelle che in origine esistevano, un anti-pattern pu lasciare in una situazione peggiore rispetto a quella di partenza. tradotto con google translate da 2
  • 3. ANTI-PATTERN Definizione:Ripeto sempre glistessi ERRORI 3
  • 4. COSA FARE?Quando il codice puzza come un paiodi scarpe 4
  • 5. 5
  • 6. ANTI-PATTERN Soluzione: 6
  • 7. ANTI-PATTERN men#1 - Spaghetti code#2 - Overuse of Inheritance#3 - Excessive Coupling#4 - Blind Faith#5 - Copy & Paste programming#6 - Premature Optimization#7 - ? 7
  • 8. #1 - Spaghetti code 8
  • 9. Problema 9
  • 10. Soluzione 10
  • 11. if else if o switch codice client 11
  • 12. Refactoring : Replace Conditional with Polymorphism classe base classi derivate codice client 12
  • 13. Risultato 13
  • 14. #2 - Overuse of Inheritance (Sovraccarico dellereditariet) 14
  • 15. Problema 15
  • 16. SoluzioneDove possibile devo sempre preferire la composizione allereditariet 16
  • 17. Ereditariet Phone Mobile LandLine OldLandLine 17
  • 18. Composizione Phone LandLine MobileISendBehavior ISendBehaviorSMSBehavior MMSBehavior 18
  • 19. In pratica ho applicato il Pattern Strategy Define a family of alghoritms, encapsulate each one, and make them interchangeable. Strategy lets tehe algorithm vary independently from clients that use it. GoF 19
  • 20. #3 - Excessive Coupling (alto accoppiamento) 20
  • 21. Problema 21
  • 22. Significa che ho creato una catena di dipendenze che lega le mie classi attraverso una loro implementazione 22
  • 23. Risultato 23
  • 24. Legge di Demeter For all classes C, and for all methods M attached to C, all objects to which M sends a message must be instances of classes associated with the following classes: 1, The argument classes of M (including C). 2. The instance variable classes of C. (Objects created by M, or by functions or methods which M calls, and objects in global variables are considered as arguments of M). http://www.ccs.neu.edu/research/demeter/papers/law-of-demeter/oopsla88-law-of-demeter.pdf Bisogna solo applicare correttamente lincapsulamento! 24
  • 25. ObiettivoRidurre le dipendenze tra le classi del dominio Program to interfaces, not to implementations! 25
  • 26. Cosa sbaglio?LOrderController dipendentedallimplementazione OrderRepository 26
  • 27. Creare un oggetto? new 27
  • 28. IoC - Inversion of Control (inversione delle dipendenze) astrazioneOrderController OrderController IOrderRepositoryOrderRepository separazione dei livelli OrderRepository una delle possibili implementazioni 28
  • 29. Principio di HollywoodNon chiamarci tu, ti chiamiamo noi! 29
  • 30. Dependency Injection Posso ottenere lIoCiniettando le dipendenze: tramite il costruttore (constructor injection) tramite le propriet (setter injection) 30
  • 31. http://structuremap.net/structuremap/index.html StructureMap StructureMap is a Dependency Injection / Inversion of Control tool. It can enable looser coupling between classes and their dependencies, improve the testability of a class structure, and provide generic flexibility mechanisms. Used judiciously, StructureMap can greatly enhance the opportunities for code reuse by minimizing direct coupling between classes and configuration mechanisms. Global.Asax Service Locator 31
  • 32. Aut

Recommended

View more >