The I in Interface should not stand for Interface
There is a programming style that starts interface names with an “I” as in IOrderCapture for the interface that orders are entered through. Now the “I” stands for interface which are types. I always felt the “I” was superfluous, after all the OrderCapture type is the thing so sticking an “I” on the front doesn’t add information at the conceptual level, it is just there as an additional marker. I prefer to differentiate using, in the degenerate case, “Impl” at the end of a class name that implements an Interface (actually I don’t like impl but there is usually something more meaningful you can say there).
Enter Liz Keogh (aka @lunivore) and Pixie driven development, here the “I” along with a more responsibility driven naming style leads to the name “ICaptureOrders” which immediately shifts your conceptual framework to focus on behaviours and responsibilities. The name also feels far more natural to me, reading a code base it would be pretty obvious what it did.
So, I’ll start naming my interfaces “I…”, but remember, it doesn’t stand for “Interface”.