I see this term on the internet a lot (in fact, typing it on google returns a lot of results).
What is the exact definition of an "implementation detail"?
I see this term on the internet a lot (in fact, typing it on google returns a lot of results).
What is the exact definition of an "implementation detail"?
"Implementation detail" is an expression used, often in the context of a standard (for a computer language, for example), to indicate that a particular feature or behavior is not defined in the standard, but let to the particular "implementation", i.e. to the particular application implementing the said standard.
The practical implication for the users of various application of the standard, is that one should NOT rely on features or behaviors which are "implementation details". Unlike the features/behaviors explicitly imposed by the standard, the ones defined as "implementation details" may not be supported by multiple vendors nor even by various version of the application from the same vendor.
It's a behavior produced by code which may be relied on by consuming code, though that behavior is not specified by the spec the code is written to. Hence, other implementations of the same spec may not exhibit the same behavior, and will break that consuming code. That's why it's bad to rely on them.
For instance, if you were to write some code against a list interface which specified an array sort but not the algorithm it used, and you needed the sort method to be stable, and a version of your code was used with a non-stable sort algorithm, then your code would break.
An "implementation detail" is a decision that is left to be made by the developers, and is not specified at an earlier level (such as a requirement document or, depending on context, an architectural document.)
I'm not aware of the exact formal definition of the term "implementation detail", it generally refers to the concrete implementation of a certain specification.
Take a List
for example.
A specification of a List
may say that "it is able to hold multiple values with duplicates while preserving order."
From the above, it doesn't mention what kind of backing data structure is used for the List
-- for all we know, it may be an array, or a linked list. That is really an implementation detail that is really left up to the implementor of the List
.