Naming conventions [was: Food Fight]

Dennis Brown see3d at writeme.com
Wed Jun 22 12:40:09 EDT 2005


Thanks for the many replies about naming conventions.  So to summarize:

1.  The cryptic names are not really being pushed to make things  
unreadable, but as protection from the deficiencies of Rev.

2.  The lack of a naming scope somewhere between local and global  
(such as namespace or the method I suggested) has resulted in the  
burden being passed on to the programmer to come up with a hopefully  
(but not guaranteed) unique naming convention for globals that he  
wants to own exclusively.  Just putting a "g" in front of them is no  
better than not --because if everyone puts a "g" in front they are  
all in alignment again, but what the heck, I'm not going to be able  
to pronounce it anyway so I'll throw it in just so someone can  
understand why the name is ridiculously long.  You need to come up  
with something that does not look like an understandable name because  
that might seem like a good name to someone else also.  So if we want  
to use a global, we really need to have a registry of global prefixes  
so that a developer can claim a unique one.  For example I might want  
to use gSee3d<number><name>.  The number is so I can serialize my  
different projects (I will need my own private registry to keep track  
of those), and the name is what I want to call my global.  For  
instance gSee3D005FilePathToMyData.  Yes, I think I understand it now  
--where is the nearest restroom?

BTW: My current project (1 stack 1 card) has over 100 globals defined  
(many are large arrays) so that I can use a combination of created  
scripted groups of objects and common handlers where possible without  
needing to pass many arguments.  I have to do this awkward thing to  
make up for the slow speed of array processing and ironically to make  
my scripts maintainable.  Using names like these would cause my  
script lines to be very long an completely unreadable!  I use names  
like TF1,TB1 now instead of TriggerField1 and TriggerButton1.  I just  
define the abbreviations in the comments of the handler.  If my  
shortened names were gSee3D005FTF1, gSee3D005FTB1, I might have a  
hard time skimming the difference in the names causing more bugs.

I would not mind if the Rev IDE would allow me to do something like:  
set privateGlobals to "See3d005".  I will declare:  privateGlobal  
TB1,TF1, or possibly: privateGlobal "See3d005" TB1,TF1.  Then  
internally, the IDE can prepend the See3d005 to TB1, but in my  
scripts I only have to use TB1.  That should be trivial to implement  
and I could happily live with that.

3.  The reason for making local variables a bit ugly is to guarantee  
that they will not conflict with future keywords.  That is a  
reasonable consideration and bears further thought on the "nicest"  
way to do that.  Of course explicit variables is a good idea here.   
If you declare a local name, it should override when it makes sense  
as a variable name so future names will not break old stuff.  It is  
also highly likely that a handler for a missing capability might use  
the same name when a built in command is created in the future.

4.  The reason for making custom property names a bit ugly is to  
guarantee that they will not conflict with future built-in  
properties.  That is a reasonable consideration also and bears  
further thought on the "nicest" way to do that.

aWell bThis cIs dVery eInterresting.  fPerhaps gWe hCan iPropose  
jSomething kThat  lMakes mA nBit oMore pSense qBy rAddressing sThe  
tReal uIssues vBetween wWhat xUsers yNeed zTo aDo, bAnd cWhat  
dTranscript eNeeds fTo gDo.

I don't know about you, but my skimming speed is as slow as Rev array  
processing when I try to read the last sentence (and I just wrote it)!

Did I miss any important points?


On Jun 21, 2005, at 4:58 AM, Dave Cragg wrote:

>
> On 20 Jun 2005, at 21:06, Dennis Brown wrote:
>
>
>> Dar,
>>
>> Thank you for standing up for the rights (in a good natured way)  
>> of those who think it's overkill to have all these structured  
>> names in a conversational language with handlers that are usually  
>> only a few lines long.  Why mar the elegance of a understandable  
>> name with cryptic unpronounceable prefix letters all over the  
>> place?  It's not as if I wouldn't be able to instantly recognize  
>> ten years later what the local variable named partNumber in my 20  
>> line script was for, or even that it was a local.
>>
>
> I sympathise with your view. Although I use east-central-Hungarian- 
> semi-strict myself, I'd hate to see this stuff forced on anyone.
>
> But there are advantages that it's useful to know about. Others  
> have mentioned namespace clashes. Another advanatge relates to your  
> "ten years later" comment. xTalks have a large number of reserved  
> words in the form of commands, functions and properties, and over  
> time this number has grown. So a variable with a friendly name you  
> create now, may become a reserved word ten years from now. Those  
> who spend any time converting old Hypercard stacks probably know  
> how frustrating this can be. As an example, I recently converted  
> some Hypercard stacks that used the names "startframe" and  
> "endframe" as parameters in various message and function handlers.  
> I'm sure these seemed appropriate to the original author, but the  
> Rev compiler didn't like them. Rather than spend time thinking of  
> alternative available "natural" names, I just stuck a "p" in front  
> -- pStartframe, pEndframe. This quickly becomes a habit, so that   
> in no tTime, you gFind yourself taking sThis approach to pAll  
> variables.
>
> Cheers
> Dave
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your  
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
>



More information about the use-livecode mailing list