The Model View View-Model pattern gained a lot of momentum lately. It allows to reduce the code in the code behind class of a form or user control to a minimum. Therefore, unit testability is improved dramatically compared to other view patterns like MVC/MVP. However, when I design software, I follow (amongst others) the principles of SOLID (link). The first principle in SOLID is the Single Responsibility Prinicple (SRP) that states that “A class should have one, and only one, reason to...
When I’m coaching teams in Test Driven Development (TDD), I’m often asked how to deal with the User Interface (UI). The problem is that the unit test frameworks are weak in testing Forms, Controls, Buttons, Grids, and so on. Weak because they do not support it at all or the tests become very fragile (e.g. renaming a Label causes the test to fail).
We address this problem with the Passive View Command pattern, PVC for short.
These are my personal top ten of software design evilness. That means ten designs that make your software either complex, untestable, monolithic, unchangeable or hard to understand:
Enums (or other c# enumeration equivalents)
Missing interface segregation
Too configurable, too flexible
Abstraction layers not providing additional abstraction
Try catch for program flow control
Yesterday, I found an interesting page (in German) describing some of the most important patterns and practices in software development: Although I’m not a fan of wrist bands (see the linked page to see for yourself), I like the page for its short description of patterns and practices like: Don’t repeat yourself keep it simple stupid single responsibility pattern separation of concerns interface segregation principle dependency injection principle Liskov substitution principle open close...