On Tue, 03 Aug 2010 17:56:44 -0400, Walter Bright
<newshou...@digitalmars.com> wrote:
bearophile wrote:
27.50, "transactional file copy": this example was script-like, and as
short
as possible to fit into one single slide, so in this case I think using
enforce() is OK. But in true programs I suggest all D programmers to use
DesignByContract with assert() more and to use enforce() less. Among
other
things enforce() kills inlining possibilities and inflates code. In
D.learn I
have seen people use enforce() in a situation where DbC is designed
for. I
think the D community needs to learn a bit more DbC, and in my opinion
to do
this the leaders have to lead the way.
There's a misunderstanding here. Contract programming is for detecting
program bugs. enforce() is for detecting and handling errors such as
disk failures and bad user input.
They are COMPLETELY DIFFERENT and must not be conflated.
Yes, but as has been discussed and resolved on phobos mailing list, usage
errors should not be handled via uncaught exceptions. I think the example
is flawed in that regard. I wouldn't bring it up, but people who haven't
followed that discussion might get the wrong idea from this example.
-Steve