Often, when I am initializing something I have to use a temporary variable, for example:
file_str = "path/to/file" file_file = open(file) or
regexp_parts = ['foo', 'bar'] regexp = new RegExp( regexp_parts.join('|') ) if I am using a dynamic language, I wonder if I should reuse the same variable instead:
file = "path/to/file" file = open(file) regexp = ['...', '...'] regexp = new RegExp( regexp.join('|') ) The idea is that by reducing the number of variables in scope I reduce the chances to misuse them. However this sometimes makes the variable names look a little weird, as in the first example, where "file" refers to a "filename".
I think perhaps this would be a non issue if I could use non-nested scopes
begin scope1 filename = ... begin scope2 file = open(filename) end scope1 //use file here //can't use filename on accident end scope2 but I can't think of any programming language that supports this.
What rules of thumb should I use in this situation?
- When is it best to reuse the variable?
- When is it best to create an extra variable?
- What other ways do we solve this scope problem?