Nella sessione Realizzare applicazioni estendibili e configurabili di Mauro si è parlato prima di tutto dei principi di design che permettono di rendere una applicazione estendibile e come migliorare tale design grazie al refatoring. A sessione finita mi sono soffermato fuori dalla sala con Mauro a discutere di come queste pratiche siano fondamentali per non rendere la nostra applicazione un monolite e come il TDD può aiutare a disegnare il proprio software rispettando i principi di design. Quindi mi sono deciso a scrivere questo post per fornite un po di risorse utili sull'argomento. Naturalmente questa lista pretende solo di far venire l'acquolina in bocca al lettore e non di essere totalmente completa. Per finire ci tengo a ricordare a tutti che prima di farsi idee positive o negative su qualsiasi argomento bisogna mettere mano al codice e provare, provare, provare!!!
Object Oriented Design Principles
Webcast di Riccardo Golia della serie Aspire Architect (prima e seconda): Post (blog di Riccardo Golia), WebCast su MSDN, Slide (su Guisa), Codice di esempio (su Guisa) .
Articoli di Jeremy D. Miller : Patterns in Practice - The Open Closed Principle (su MSDN Magazine), Just some little things to help you CodeBetter, Orthogonal Code, Using the Chain of Responsibility Pattern, On Writing Maintainable Code, Be not afraid of the Visitor Pattern, the big, bad Composite Pattern, or their little friend Double Dispatch .
Articoli (in formato PDF) sul sito Object Mentor : Principles and Patterns, The Single Responsibility Principle, The Open Closed Principle, The Liskov Substitution Principle, The Interface Segregation Principle, The Dependency Inversion Principle .
Articoli sul sito OODesign.com : Design Principles
Articolo di Ayende (Oren Eini): Inversion of Control and Dependency Injection: Working with Windsor Container
Refactoring
Articoli e Screencasr di Jimmy Bogard : Separation of Concerns - how not to do it, Part 1, Part 2, Part 3, Part 4, PabloTV: Eliminating static dependencies screencast
Articoli su Wikipedia e WikiUGIdotNET: Code refactoring, Refactoring
Catalogo delle operazioni di refactorign: Refactorings in Alphabetical Order
Technorati Tag:
OOP,
OOD,
Refactoring