On Fri, 19 Aug 2011 11:07:12 -0400 bearophile <bearophileh...@lycos.com> wrote:
> Some ways to face this problem: > > 1) Do nothing. > 2) Give optional explicit information about the source of all variable names > used in a function, using the optional @outer() I have proposed elsewhere. > 3) Statically disallow (gives an error) local variables from shadowing global > ones. > 4) Produce a warning when a local variable shadows a global ones, in a smart > way. > 5) As the leading dot to denote global variables, require the use of another > leading symbol (or some other mean) to denote local variable, when there is > ambiguity. Well, D currently says I can't shadow variables: void foo() { int x = 10; { int x = 5; // error } } which pisses me off personally. It's such a handy feature. And there is exactly one way to solve your problem which comes in two parts: 1. Don't violate the rule: "one or two screens of text per function". 2. Keep the low number of variables in a function, people say it should be close to seven. /me wants to be able to shadow his variables everywhere