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