This past Tuesday the West Michigan .NET User Group featured two out-of-state speakers presenting for a special meeting. We had Stephen Bohlen out from New York and, as a surprise, Adam Tuliper from Pennsylvania. Steve spoke on the SOLID principles introduced by Martin Fowler and Adam talked about how to secure your ASP .NET sites (both webforms and MVC) against malicious attacks, such as XSS (Cross Site Scripting) and SQL Injection.
How Adam became involved in this was quite interesting, as Steve recommended him to me based on Adam’s interest and that he has family in Rockford, MI. We happily invited Adam to speak, though we could only give him 30m to speak less Steve not have enough time (SOLID is a fairly big topic). The result was impressive. While Adam had to cut quite a bit out he impressed the entire group; so much so that we intend to ask him back next year to give a full talk.
Steve, whom I met when I was consulting in New York last year, presented on a topic of great interest to me: SOLID. Generally speaking, when you talk about Object Oriented programming, you learn about the three pillars on which the paradigm is built: Inheritance, Encapsulation, and Polymorphism. A fourth one could be Composition, given some of the more modern needs of applications, but that is a debatable.
As we have progressed in writing applications certain approaches have been shown to work, while other have shown to be less effective. This has culminated with the rise of the SOLID principles, by Martin Fowler, as a set of guides to writing modern OO applications in an effective and maintainable matter. The principles are:
- Single Responsibility Principle
- Open/Close Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
Adhering to these five principles will generally lead to better more flexible and maintainable code. I will not be elaborating on what these principles mean, that is simple too much for this simple blog entry. However, a quick Google for Martin Fowler SOLID principles should yield additional information.
Looking forward to our next session (Wednesday) which is our normal meeting time, the topic will be Mango, which is something I am deeply interested in as I continue to build my knowledge of the Windows Phone 7 mobile platform.
Thanks again to Steve and Adam for being willing to travel so far to spread their knowledge and experience to our user group.