List of Phobos functions that allocate memory?
bearophile
bearophileHUGS at lycos.com
Fri Feb 7 13:27:04 PST 2014
Jonathan M Davis:
> 3. Code which should succeed most of the time but where doing
> validation
> essentially requires doing what you're validating for anyway.
> Again, parsers
> are a good example of this. For instance, to validate that
> "2013-12-22T01:22:27z" is in the valid ISO extended string
> format for a
> timestamp, you have to do pretty much exactly the same work
> that you have to
> do to parse out all of the values to convert it to something
> other than a
> string (e.g. SysTime). So, if you validated it first, you'd be
> doing the work
> twice. As such, why validate first? Just have it throw an
> exception when the
> parsing fails. And if for some reason, you expect that there's
> a high chance
> that the parsing would fail, then you can have a function which
> returns an
> error code and passed out the result as an out parameter
> instead, but that
> makes the code much uglier and error-prone. So, in most cases,
> you'd want it
> to throw an exception on failure.
Languages with a good type system solve this with Maybe /
Nullable / Optional and similar things. It's both safe (and
efficient if the result is equivalent to just a wapping struct).
Bye,
bearophile
More information about the Digitalmars-d
mailing list