.Net Best Practices and Design Patterns (BPDP) – Outline

Detailed Course Outline

Simplifying Complex Programming with Proven Design Patterns

Applying simple interfaces to intricate algorithms

  • Unifying interfaces from subsystems for ease of use and reusability
  • Implementing the Facade pattern

Varying functionality by programming to interfaces

  • Creating abstractions to enhance application adaptability and flexibility
  • Exploiting the Strategy pattern

Extending object behaviour dynamically

  • Increasing functionality without impacting existing code
  • Composing objects with the Decorator pattern

Achieving reuse and flexibility

  • Eliminating code duplication by outlining an algorithm
  • Employing the Template Method pattern

Interfacing incompatible classes

  • Transforming an interface to add value to existing code
  • Harnessing the Adapter pattern

Applying Test–Driven Development Techniques

Automating unit testing

  • Shortening development cycles with automated tests
  • Eliminating regression errors with reusable tests

Integrating testing and coding

  • Applying the test–first programming practice
  • Generating immediate red–green feedback for increased code quality and shortened feature development cycles
  • Organising, coordinating and running test cases
  • Isolating a class test environment with the Mock–Object pattern for reliable and repeatable testing
  • Tracking the Red–Green–Refactor rhythm for feedback

Refactoring code to improve design

  • Improving design with behaviour preserving refactorings
  • Eliminating code duplication by refactoring to patterns

Architecting a Layered Application

Designing the application architecture

  • Layering architectures for reusability, durability and scalability
  • Decoupling object creation with the Factory pattern
  • Preserving object identity with the Identity Map pattern

Programming application tiers

  • Isolating UI layers with the MVC and MVVM patterns
  • Organising state–rich applications with the State pattern
  • Restructuring database tables without impacting code

Modelling a business area

  • Liberating rich Business Object Models from database structures using the Domain Model pattern
  • Mapping rich Business Objects to database tables with the Data Mapper pattern
  • Collapsing Business Object hierarchies with the Inheritance Mapper pattern
  • Exploiting declarative programming in Microsoft Entity Framework to implement Data Mapping classes

Applying Best Practices

Organising and implementing business logic

  • Managing Persistence Ignorant Entity types with Entity Framework
  • Manipulating groups of Entities with business logic classes

Applying S.O.L.I.D. principles of class design

  • Single Responsibility
  • Open–Closed
  • Liskov Substitution
  • Interface Segregation
  • Dependency Inversion

Automating Repetitive Tasks

Easing data access code

  • Reducing database access code by exploiting Entity Navigation Properties
  • Eliminating database update code with Entity change tracking

Enhancing application code

  • Automating design reviews with FxCop and Code analyser
  • Reducing User Interface code with Data Binding