Good Contract programming idiom?

Norbert Nemec Norbert at Nemec-online.de
Thu Mar 4 02:12:35 PST 2010


That sounds pretty much like putting your application authors under 
tutelage (great word - just found it in the dictionary... :-) )

Writing a library that other can use, you should always assume that they 
are mature and responsible beings. The contracts explicitly tell the 
application author their responsibilities. Checking the contracts 
provides a safety net for the application author. If the author decides 
to deactivate this safety net, you should allow them to do so.

Ultimately, the language provides everything that would allow a compiler 
to offer fine-tuned switching of checks. It should be straightforward to 
implement an option to activate only checks of public contracts between 
libraries, but this decision should be up to the application programmer 
who is responsible that the whole package works as it should.

After all: The whole D language is built on the concept of providing 
professional tools for responsible programmers. If someone decides to 
shoot himself in the foot, at least give him a quality gun that allows 
him to aim properly!




Lionello Lunesu wrote:
> You make a good point, but there's one problem I have with this.
> 
> I'm looking at this as a library writer. I can write in-contracts with
> assertions, but I would not feel comfortable with only assertions, since
> I know they will not get compiled in a release build of the library.
> 
> So in a release build I don't want anything weird to happen when wrong
> arguments are passed to my library function. This can only be prevented
> by throwing run-time exceptions, right?



More information about the Digitalmars-d mailing list