Presenter: Christof Wollenhaupt
Level: Intermediate
TDD, OCP, LSP, ISP, DIP, DRY, IoC, LOC, SRP, DbC, CDD, DDD: Our world is filled with three letter acronyms that are meant to make our lives easier, if only we could remember what each of them means.
In this pre-conference session we will extend a real-world application with some new features. "Real world" here means a typical, really messy, historically grown application; not a demo application carefully crafted for a session.
During the course we will start by using test-driven development which mainly means unit testing code. However, test-driven development is more than just writing some tests. By strictly limiting additions to whatever is needed to make the test pass, we avoid writing overly complex code.
As we move along with testing we will automatically discover the need for other object oriented design principles and apply them in the VFP world, including:
- Single-Responsibility Principle
- Open Closed Principle
- Liskov-Substitution Principle
- Inversion of Control
- Don't Repeat Yourself
These principles are one possible way to achieve a solid design and implementation.
There's always more than one way to skin a cat, though. Sometimes you have to violate the principles above on purpose. We will cover situations where either the technology (that is, VFP) doesn't support them, or other limiting factors in the real world prevent us from doing so.
At the end we will apply these principles to some well-established techniques in the VFP community such as the global application object, meta-data driven applications, and other VFP specific solutions. 15 years after their introduction some of them might better be replaced by more current approaches.
You will learn:
- How to use "clean code development" practices
- How to recognize good and bad design
- The concepts and reasons behind the principles
Prerequisites: Fundamental OOP and VFP knowledge