8th Module: SOLID Snake

The article given for this week, while highly concise and technical, provides an outlook for quality in Object-Oriented design and programming. While some might argue that there is no universal principle for quality in software and every case and system must be carefully considered in order to balance everything out, I think there are some general ideas or heuristics that we can adhere to in order to aim for quality even in doubt or if we don’t have a true idea of our system. I was also surprised to discover that the software world can be very small, as these set of ideas were proposed by “Uncle Bob”, writer and/or participant in various other articles of which this blog is thankful for.

According to my experience, when I learned about OOP, even without a class or lecture dedicated to these concepts, one seems to tend towards these practices. What I mean by this is that carefully using all the capabilities and features of languages such as Java or C#, certain patterns such as Single Responsibility Principle, Liskov Substitution Principle or Dependency Inversion Principle. This leads me to believe that most of the errors or faults committed in these languages or paradigm are because of abuse of these practices. After all, most if not all of the Principles mention inheritance in one way or another as examples of bad practices. 

I can mention from work that using these principles can save a lot of work and make maintenance bliss. Once I had to migrate a company framework to a new version. Because of the coupling between classes, it took twice the estimated resources, just over a couple of months. This was a real inconvenience, since many teams required the new framework ASAP. This goes to show that a little effort at the beginning of a software development cycle can save a lot of time, money and headaches.
 




Comentarios

Entradas más populares de este blog

10th module: Going Micro(soft)

7th Design: WarGames

11th module: Metaprogramming