On Fri, 18 Feb 2011 09:43:19 -0500, Erik Meer <[email protected]> wrote:

Does using interfaces extensively have a performance drawback like using inheritance has?

Why do I ask? I was thinking about adopting a coding practice where I define explicit interfaces for all public aspects of my classes, and then couples the interfaces closely to unit tests. Then, whenever I would create a new class using some of these interfaces the unit tests would tag along, which means the unit tests would be reusable.

Now, if the compiler has do align stuff in some arduous way to accommodate these interfaces then this whole idea might not be worth it? Or are interfaces a no-cost constraint on the implementation?

There is a real cost associated with interfaces. Each additional interface on a class requires another pointer-sized word space. I would recommend not adding interfaces if the sole purpose is to use them for unit tests.

You can reuse unit tests by creating a template function.

example:

// all classes that define foo conform to the foo definition.

class X
{
   int foo() {...}
}

class Y
{
   int foo() {...}
}

unittest
{
   void testFoo(T)(T t) { assert(t.foo() == 0); }
   testFoo(new X);
   testFoo(new Y);
}

-Steve

Reply via email to