Resources
- https://martinfowler.com/ieeeSoftware/published.pdf
Published Interface
Refers to a class interface that's used outside the code base that it's defined in.
Challenges
Things rapidly change if I put that software out on the Web as a component, and other people, whom I don’t know, start building applications on top of it. If I now delete the parameter, everybody else’s code will break when I upgrade.
The key difference is being able to find and change the code that uses an interface. For a published interface, this isn’t possible, so you need a more elaborate interface update process. Interface users are either callers or are classes that subclass or implement an interface.
Suggestions
- Don’t treat interfaces as published unless they are
- Don’t publish interfaces inside a team, result of strong form of code ownership.
- Publish as little as you can as late as you can
- Try to make your changes additions