by Geoff Cox

Software Craftsman. Guitarist. Folk Hero.

Create Minimal and Complete interfaces

Minimal and Complete has been one of my guiding principles in my work for almost 20 years. It has helped me write better interfaces and classes as well as architect components and systems.

Scott Meyers introduced the concept of minimal and complete in Effective C++.


A minimal interface is as small as possible without losing required functionality.

Minimal interfaces don’t have multiple methods that do the same thing; callers shouldn’t need to make a coin-toss decision between methods.


A complete interface isn’t missing anything. It fully satisfies its single responsibility.

Just coding all the methods isn’t enough. The interface defines a complete contract including behavior, validation, and performance requirements.