<myBlog show="last" ⁄>
<mySnippets order="rand" ⁄>
<myPhoto order="random" ⁄>
<mySnippets type="lang" ⁄>
<myQuote order="random" ⁄>
<myContacts ⁄><email ⁄>
<windows live messenger ⁄>
<myCurriculum type="pdf" ⁄>
<myVisitorsMap ⁄>Recently, I was asked which patterns and principles I would use in an OO-project.
As I started summing them up, I noticed the person who asked getting a StackOverflowException :) . Obviously, I had a lot to tell about the subject...
I'll add a description (I'll try to keep it short) to each one of them, but if you don't know the meaning, just read the papers, blogs, or books. I'll link to them (also check the titles, they may be links).
Feel free to add anything I forgot!
Single Responsibility principle (The S in SOLID principles)
This principle states an object should only have one responsibility. Why? So a class only has one reason to change. Why? Because when a class has several responsibilities, they become coupled. So? If you change one responsibility of the class, it could have consequences in the other responsibilities, so you have to retest all responsibilities.
It's a bit confusing in the beginning to recognize a responsibility. Uncle Bob says a responsibility within SRP can be defined as a reason to change. That should get you started!
Open Closed principle (The O in SOLID principles)
The OCP states that software entities, should be open for extension, but closed for modification. What? You should be able to extend a SE without changing it. Why? If you don't change it, you won't break it. You will only have to test what you extended. How? Abstract away the functionality that could be implemented in different ways. If you have calculations, create an interface ICalculation, and add an implementation per calculationtype. The consequence is, that your calculation is closed for modification (a calculation calculates something and that's it) but open for extension (if you have an addition, but also need a substraction, just add a class that implements ICalculation and you're done). This is also a perfect example of the Strategy pattern.
este é só um excerto do artigo, para aceder ao artigo completo, clique no link em baixo:
this is just a small excerpt from the article, to access the full article please click in the link below:
http://www.dotnetkicks.com/other/Object_Oriented_Design_Principles
<myNews show="rand" cat="programacao" ⁄>