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.

(For example, assert() goes away when compiled with the -release switch. enforce() does not.)

Reply via email to