- no more than 10-20 classes per package
- no more than 1000 to 2000 lines of code per class
- don't assign more than one responsibility to each class
Soft Entropy
Wednesday, January 19, 2011
How to use namespaces in C++ applications?
Monday, January 17, 2011
When to use an interface to a class?
Feature | Interface | Abstract class |
Multiple inheritance | A class may inherit severalinterfaces. | A class may inherit only one abstract class. |
Default implementation | An interface cannot provide any code, just the signature. | An abstract class can provide complete, default code and/or just the details that have to be overridden. |
Access Modfiers | An interface cannot have access modifiers for the subs, functions, properties etc everything is assumed as public | An abstract class can contain access modifiers for the subs, functions, properties |
Core VS Peripheral | Interfaces are used to define the peripheral abilities of a class. In other words both Human and Vehicle can inherit from a IMovableinterface. | An abstract class defines the core identity of a class and there it is used for objects of the same type. |
Homogeneity | If various implementations only share method signatures then it is better to use Interfaces. | If various implementations are of the same kind and use common behaviour or status then abstract class is better to use. |
Speed | Requires more time to find the actual method in the corresponding classes. | Fast |
Adding functionality (Versioning) | If we add a new method to an Interface then we have to track down all the implementations of theinterface and define implementation for the new method. | If we add a new method to an abstract class then we have the option of providing default implementation and therefore all the existing code might work properly. |
Fields and Constants | No fields can be defined ininterfaces | An abstract class can have fields and constrants defined |