Program logic bugs vs input/environmental errors
Walter Bright via Digitalmars-d
digitalmars-d at puremagic.com
Sat Oct 18 10:54:51 PDT 2014
On 10/18/2014 9:01 AM, Sean Kelly wrote:
> So you consider the library interface to be user input?
The library designer has to make that decision, not the language.
> What about calls that are used internally but also exposed as part of the library interface?
The library designer has to make a decision about who's job it is to validate
the parameters to an interface, and thereby deciding what are
input/environmental errors and what are programming bugs.
Avoiding making this decision means the API is underspecified, and we all know
how poorly that works.
Consider:
/******************************
* foo() does magical things.
* Parameters:
* x a value that must be greater than 0 and less than 8
* y a positive integer
* Throws:
* Exception if y is negative
* Returns:
* magic value
*/
int foo(int x, int y)
in { assert(x > 0 && x < 8); }
body {
enforce(y >= 0, "silly rabbit, y should be positive");
... return ...;
}
More information about the Digitalmars-d
mailing list