This will be a series of posts and I will keep updating the posts with new links.
Design Patterns
In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern isn't a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations.
Uses of design patterns
Design patterns can speed up the development process by providing tested, proven development paradigms. Effective software design requires considering issues that may not become visible until later in the implementation. Reusing design patterns helps to prevent subtle issues that can cause major problems and improves code readability for coders and architects familiar with the patterns. In addition, patterns allow developers to communicate using well-known, well understood names for software interactions.
Analogy
Looping over a collection is a common practice and we all do that and can read and understand a code which uses loops. Looping or iterating over a collection is general repeatable solution. The solution does not tell us where and how to use the concept but it provides us with a possible solution.
If we know that a collection only has ‘n’ records and we do not need iteration (looping) we can right a code like:
Collection[0], Collection[1]…Collection[n-1], Collection[n]
Problem
If ‘n’ is big enough we can imagine how difficult it would be to maintain this code.
Say the collection mentioned above is a collection students and there respective marks. Imagine a change request which says “print ‘Pass’ if collection item is greater than 10 else print ‘Fail’. One will have to write ‘n’ if – else.
Again, Imagine a change request which says in addition to ‘Pass’ and ‘Fail’ also print grades and name of the student in descending order of marks.
Instead if we are using loop our life will become much easier.
foreach(var s in students)
{
if(s.Marks > 10)
Console.WriteLine("{0} {1} {2}","Pass",s.Name, s.Grades);
else
Console.WriteLine("{0} {1} {2}", "Fail", s.Name, s.Grades);
}
Believe me guys, change is inevitable. So, be with me and we will learn together how to live with it.
Comments
Post a Comment