In this chapter we talk about :-
mmmm … but what does “great software” mean ??
- Great software always does what customer wants it to. So even if customer think of new ways to use the software, it doesn’t break or give the unexpected results.
- Great software is code that is object-oriented. So there is not a bunch of duplicate code and each object pretty much controls its own behaviour. its also easy to extend because your design is really solid and flexible.
- Great software is when you use tried-and-true design patterns and principles. you have kept your objects loosely coupled, and your code open for extension but closed for modification. That also helps make the code more reusable, so yup don’t have to rework everything to use parts of your application over and over again. 🙂
There are some important concepts we should know :-
- Flexibility : 1) Enable software to change and grow without constant rework. 2) Keep Application from being fragile.
- Encapsulation : 1) Keep the parts of your code that stay the same seperate from the parts that change.
- Functionality : 1) Make the cutomer happy and puts a smile into customer’s face. 🙂
- Design Pattern : 1) Enable reusability and make sure that you are not trying to solve a problem that someone else has already figured out.
Notes in chapter :-
- Don’t create problems to solve problems.
- Use textural description of the problem you are trying to solve to make sure that your design lines up with the intended functionality of your application.
- Objects should do what their names indicate.
- Each object should represent a single concept.
- Encapsulation allows you to group your application into logical parts.
- Any time you see duplicate code, look for a place to encapsulate.
- Delegation : is when an object needs to perform a certain task and instead of doing that task directly , it asks another object to handle the task.
Finally the source code for Guitar System that he talk about it in this chapter you can find it Here . I implement it in C#.