I'm with Roger on this. > Sorry, but I can't agree with this. Developers get negation of numbers > wrong all the time by ignoring the special case. Its a big source of > hidden bugs. Increment/decrement are replaceable by add/subtract (with > less readability), but negate is not.
First of all, negate(x) certainly is replaceable by subtractExact(0, x). Secondly, the problem is more that people don't realize that -x might not be exact. If you know there's a problem then it isn't any easier for you to know that a solution is to be found in Math than to know that the problem is with MIN_VALUE. Éamonn On 6 February 2012 14:35, Stephen Colebourne <scolebou...@joda.org> wrote: > On 6 February 2012 21:16, Roger Riggs <roger.ri...@oracle.com> wrote: >> * Removed the negateExact methods since they don't pull their weight >> in the API, >> simple tests for MIN_VALUE and MAX_VALUE can be done by the >> developer more efficiently. > > Sorry, but I can't agree with this. Developers get negation of numbers > wrong all the time by ignoring the special case. Its a big source of > hidden bugs. Increment/decrement are replaceable by add/subtract (with > less readability), but negate is not. > > The whole purpose of methods like this is not to say "oh they're easy > for the caller to write", but to write it once accurately, > well-tested, and with clear intent for code readers. Look at the > methods on Objects to see that complexity of the implementation is not > the deciding factor. > > Many, many developers will thank you for having negate, increment and > decrement. > > Stephen