On 20/11/13 01:01, Andrei Alexandrescu wrote:
There's been recent discussion herein about what parameter validation method
would be best for Phobos to adhere to.

Currently we are using a mix of approaches:

1. Some functions enforce()

2. Some functions just assert()

3. Some (fewer I think) functions assert(0)

4. Some functions don't do explicit checking, relying instead on lower-level
enforcement such as null dereference and bounds checking to ensure safety.

Each method has its place. The question is what guidelines we put forward for
Phobos code to follow; we're a bit loose about that right now.

Regarding enforce() vs. assert(), a good rule that I remember having suggested to me was that enforce() should be used for actual runtime checking (e.g. checking that the input to a public API function has correct properties), assert() should be used to test logical failures (i.e. checking that cases which should never arise, really don't arise).

I've always followed that as a rule of thumb ever since.

Reply via email to