You shouldn't be shocked by this. In many languages I've worked with (including HC and BASIC), it's not usually cool to change any loop variable directly, but instead one must work from a copy. Pretty standard practice for years. One can easily use another variable instead. To you it's just a variable, to Rev it's a 'thingie' that needs to be managed. When you 'go behind a language's back' strange stuff can happen.

Don't touch loop variables. End of story.

from:
http://blogs.msdn.com/alfredth/archive/2007/03/19/programming-proverbs-12.aspx

Programming Proverbs 12: Leave loop variables alone
Another way of expressing this is to use loop as if they were read-only constants. Loop variables should be initialized and changed only in the loop statement itself.

The problem with doing it anywhere else is that it is too easy to either make the modification incorrectly or to do so in the wrong place. Changing loop variables outside the loop statement also makes programs more difficult to debug and to modify. debugging gets complicated when one has to search for the locations where a variable is modified. Modifications to loop variables should only happen in one place to keep it simple. By treating loop variables as read-only and never modifying them inside the loop the debugging process is simplified at least a little. Sometimes every little bit helps.

A lot of beginners think that once they are done with a program that it will never be revisited. That may be true for programs that are created as class assignments but it is generally not the case for most any other programs.

Students should always write their programs as if someone else will later come along to either maintain or enhance it. It's a good habit to get into as it forces better design practices. When it comes to maintaining or more importantly adding code to a loop the last thing you want is problems figuring out where and how the loop control variable is modified. Keeping it simple (like leaving loop variables alone) is a good idea and a good habit to teach.



This is looking completely wrong at the issue. A variable should be changeable, it's in the definition of the name. If a variable is not changeable it should be renamed to "constant" or maybe "don'ttouchthisthingy". If a user changes a variable, it should not throw errors, or behave unexpected. Most people have enough problems with expected behaviour, no need to complicate the matter. Adding description for every unexpected behaviour is like trying to prevent a breach in a dyke by explaining to the water that it should go somewhere else. If the language would behave as expected, there would be less airquote & bug & airquote reports immediately (and less breaking dykes).

Basically any confusion for a user should be an opportunity to increase the reliability of the user experience. Scrutinising a user or putting him down for being confused is a sure way to have one user less. Therefore, Rev should make the labelVariable changeable whenever any user wants, i'm pretty sure that'd be not a problem to do for them (as it worked in earlier versions). Allowing changes to the container variable is probably much harder, but I'm sure something could be done about that too.

I also would like to add, that I often change label variables in repeat for each loops, and have had never any errors thrown because of it (or unexpected results). I did however get unexpected results from changing the container variable.


A voice for the mainstream user, not the specialist
Björnke

--


stephen barncard
s a n  f r a n c i s c o
- - -  - - - - - - - - -


_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to