Can you over-apply the Interface Segregation Principle? What's the downside of splitting interfaces too finely?
Yes — splitting every single method of a coherent interface into its own separate single-method interface, regardless of whether those methods ever vary independently across implementers, is a real over-application of ISP. The downside is added indirection without a matching benefit: a class that needs to do one coherent job now has to declare eight tiny interfaces in its implements clause instead of one interface with eight related methods, which makes the code harder to read and navigate for no real gain. The right granularity is to split along capabilities that genuinely vary independently across real implementers — for example, some machines print but cannot scan — rather than splitting simply because each method is technically separable in isolation. A useful check is whether any real, expected implementer would ever want one method from a proposed interface without the others; if the answer is consistently no, those methods likely belong together.
Ready to master this question?
Generate a complete walkthrough — background, the full answer in plain language, a working code example explained line by line, a real-world scenario, common mistakes, and how this same question gets asked in different ways.
Sign in to generate a response