Reading the Paint.NET blog I found this post about parameter validation. It is a very cool one for at least three reasons:
- Makes the code more readable. Making the code such that readers can infer (correctly!) what the code does without additional comments is very useful.
- Makes the code shorter.
- Can be easily adapted into any OO language (the examples are given in C#, but it is trivial to port it over to Java for example).
The method itself consists of creating a Validator class with methods named intuitively (like isNull, isNotNull, isInRectangle, etc) that can be chained, so that you can write something like this:
Validator.isNotNull(p) .isInRectangle(p, rect) .hasFoo(x) ....
Now you can either throw exceptions individually, or accumulate them and throw them together. A very nice technique indeed.