Hi,
I currently think about whether or not contracts should be available
in release builds.

Assuming a small example, you have an account class with a deposit method, the input parameter must always be > 0.

void deposit(int amount)
in
{
  enforce(amount > 0);
}
body
{
  this.amount += amount;
}

If in release build the Contracts sections is removed, this means, I also need to add in addition in another place the enforce method. Otherwise in the productive scenario, this coding isn't secure anymore. This leads to code duplication.

I think Contracts are not a feature solely for unittests, they are a
fundamental part of classes/interfaces and theirfore should be available
in all builds.

What do you think?

Kind regards
André

Reply via email to