Ionut Bilica – Senior Software Developer @ Luxoft Romania.
What is object oriented design? What is it all about? What are it’s benefits? What are it’s costs? It may seem silly to ask these questions in a day and age when virtually every software developer is using an object oriented language of some kind. Yet the question is important because, it seems to me, that most of us use those languages without knowing why, and without knowing how to get the the most benefit out of them.
Of all the revolutions that have occurred in our industry, two have been so successful that they have permeated our mentality to the extent that we take them for granted. Structured Programming and Object Oriented Programming. All of our mainstream modern languages are strongly influenced by these two disciplines. Indeed, it has become difficult to write a program that does not have the external appearance of both structured programming and object oriented programming. Our mainstream languages do not have goto, and therefore appear to obey the most famous proscription of structured programming. Most of our mainstream languages are class based and do not support functions or variables that are not within a class, therefore they appear to obey the most obvious trappings of object oriented programming.
What have we learned ?
During this talk Ionuț discused about the SOLID Principles described by Robert C. Martin, applying them in the Java programming language. Each principle was explained in detail, with practical Java examples.
We learned how these principles make it easy to develop the software for the entire duration of the project, and how some problems can appear if these principles are not applied. We have seen common code fragments that do not respect these principles, and learned how we can correct them. Taking the SOLID principles into consideration, we also analysed a real Java project using a Static Code Analyzer tool (e.g. STAN).
Finally, we discussed the strategies on how to apply these design principles in “greenfield” projects, as well as “legacy” projects, while offering some tips and tricks.