Refactoring Tips - Tip 5
Tip 5
Always Programme for interface/abstract than concrete classes, Which will gives the option for extension, loose coupling and plugin.
This will also be in line with one of the design principle - LSP(Liskov's substitution Principle) - in simple word it summarises that, Every subclass should be substitutable for a base class.
For eg: if i have to write a data persistent class.
Bad practice
public class SqlRepository
{
void Crete(parameters)
{
}
void Delete(id)
{
}
}
Good practice
public interface IRepository
{
void Create(object);
void Delete(id);
}
public class SqlRepository :IRepository
{
void Crete(parameters)
{
}
void Delete(id)
{
}
}
This arrangement gives us the flexibility that tomorrow, if i want to write a repostory for some other store then also i can write without much impact with the exisiting clients.
I hope this helps!.
Regards,
-Vinayak
Motivated achiever who guides organizations in applying technology to business settings, provides added value, and creates project deliverables in a timely manner. An experienced Technical Consultant, have successfully led large project teams of more than 20 people from requirements gathering to implementation and support using C#, .NET ,ADO.NET, ADO.NET Entity Framework,ASP.NET,ASP.NET MVC, WCF and SQL Server.