Have You Ever Wondered...?
←Older revision | Revision as of 08:54, 11 October 2013 | ||
Line 1: | Line 1: | ||
== Have You Ever Wondered...? == | == Have You Ever Wondered...? == | ||
- | Did you ever tried to find the border line between the API and its implementation? Is javadoc API? I guess, so. Do names of public classes and methods belong into the API? Are the checks for incorrect parameter types throwing ''IllegalArgumentException'' part of API? Are ''NullPointerException''s thrown from inside of the API method bodies part of API? And what about the order of callbacks to client code, order of event delivery, identity of threads the callbacks happen in? | + | Did you ever tried to find the border line between the API and its implementation? Is javadoc API? I guess, so. Do names of public classes and methods belong into the API? Are the checks for incorrect parameter types throwing ''IllegalArgumentException'' part of API? Are ''NullPointerException''s thrown from inside of the API method bodies part of API? And what about the order of callbacks to client code, order of event delivery, identity of threads the callbacks happen in? Are speed of method execution, the amount of allocated memory or [[WeakReference|type of references]] important for API users? I guess they may be, at least in the [[wikipedia::Real-time_computing|real-time]] world (as for example [[MemoryAllocations]] hack demonstrates). But then: Where is the border between API and its implementation!? The [[Runtime Aspects of APIs|chapter 11]] shows why the APIs do not end at method and class signatures. It explains why these ''runtime'' APIs are important and what needs to be done to evolve them in the right way - evolve them compatibly. The [[Runtime Aspects of APIs|chapter 11]] does not reveal the holy grail, but it presents a technique proven to work, capable to ensure runtime backward compatibility. |
==== Related [[API Design Tips|Podcast]] ==== | ==== Related [[API Design Tips|Podcast]] ==== |