"with" should be deprecated with extreme prejudice

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sun May 17 17:33:35 PDT 2009


I think "with" is a very dangerous feature due to the way it hides 
symbols. It essentially makes the feeblest attempt at modular reasoning 
utterly impossible:

int x, y;
with (whatever)
{
     y += x;
     ++x;
}

What can be said about such code? Nothing. If whatever has or will ever 
have fields x or y or both, the names will bind to them; otherwise, 
they'll bind to the locals. Non-local code dependency at its finest.

Maintenance of any type that is being used with "with" becomes a very 
dangerous proposition because it can silently change meaning of code.

I therefore submit that "with" is an extremely dangerous feature and 
should be removed from the language. What say you?


Andrei



More information about the Digitalmars-d mailing list