Agile PPP in C#
Agile Principles, Patterns and Practices in C# is a good read, although again I have an issue with the book size, from the viewpoint of commuting.
The first few chapters are pretty pain from a viewpoint of planning and agile practices. Page 26 has a decent definition of “Done” – acceptance tests are key! As I’ve blogged about a few times, if you are undertaking agile development you need to install ReSharper (page 45).
Design Smells are discussed in Section II (page 101):
- Rigidity: The design is difficult to change
- Fragility: The design is easy to break
- Immobility: The design is difficult to reuse
- Viscosity: It is difficult to do the right thing
- Needless complexity: Overdesign – I suspect we have all the experimental lab (in code) for every new language feature
- Opacity: Disorganized expression
Chapters 8-12 provide design principles:
- The Single-Responsibility Principle (SRP)
- The Open/Closed Principle (OCP)
- The Liskov Substitution Principle (LSP)
- The Dependency-Inversion Principle (DIP)
- The Interface Segregation Principle (ISP)
Chapter 13-19 gives a good refresher on UML and diagrams. Chapter 28 covers packaging and components, but unfortunately doesn’t off a view on the MVVM assembly packaging questions – most project appear to create an assembly per layer per feature, which is possibly overkill in terms of number of dependencies between assemblies, and number of assemblies generated – ignoring the issue of Visual Studio Solution Explorer being a nightmare of view this packaging breakdown.
Overall a good book that should be owned by anyone serious about Agile C#
