This post continues the analisys of the SOLID principles started some blog posts ago. This is the turn for the Open Closed Priciple (OCP).
The definition
An object/entity should be open for extension but closed for modification.
What we are basically talking about is to design our modules, classes and functions in a way that when a new functionality is needed, we should not modify our existing code but rather write new code that will be used by existing code.
The example
In this example we’re designing a class that represents the human resources department of a company and one of its main activities: hire people.
[code language=“csharp”]
public class HumanResourceDepartment
{
private IList
Refactoring
[code language=“csharp”]
interface IEmployee
{
public void SignContract();
}
class Developer : IEmployee
{
public void SignContract()
{
//…
}
}
class Manager : IEmployee
{
public void SignContract()
{
//…
}
}
class Secretary : IEmployee
{
public void SignContract()
{
//…
}
}
public class HumanResourceDepartment
{
private IList
TL;DR
The OCP makes our code more reusable and less coupled. This way we can write new code that with little impact in our existing codebase. SRP and OCP are closely related parents and their application makes our code more clean and mantainable. What’s your experience with SOLID priciples?