通常,语言具有的关键字无法直接使用完全相同的拼写和大小写,以便在程序中命名(变量,函数,类......)。然而,有时关键字是命名某事的唯一自然选择。您在所选技术中避免/解决此冲突的系统是什么?
答案 0 :(得分:7)
我通常只是避开这个名字。要么找到不同的名称,要么稍微更改一下 - 例如在C#或Java中clazz
而不是class
。在C#中你可以使用@前缀,但它太可怕了:
int @int = 5; // Ick!
答案 1 :(得分:5)
关于关键字没有任何本质上无所不包的内容,因为它应该阻止您为变量命名。由于所有名称都只是某种类型的通用实例,因此您可以在抽象中上下移动以找到另一个有用的名称。
例如,如果您编写一个跟踪学生的系统,并且您希望某个对象代表他们在特定领域的学习,即他们已经在某个东西中使用了“类”,如果您不能直接使用该术语,或者复数“类”,或者像“研究”之类的替代,你可能会发现一个更“实例化”的变体:studentClass,currentClass等或更高的视角:“courses”,“courseClass”或specfic类型属性:dailyClass ,nightClass等。
很多选项,你应该只选择最简单,最明显的选择,就是这样。
我总是喜欢倾听用户的谈话,因为他们的语言范围有助于定义问题的范围,通常如果你听得足够长,你会发现他们对相同的基础事物有很多多个术语(只有微妙的差异)。他们通常有答案......
保罗。
答案 2 :(得分:4)
我的系统不使用关键字句号!
如果我有一个函数/变量/类,并且用关键字命名它似乎合乎逻辑,我将在关键字前面使用描述性词语。
(adjectiveNoun)格式。 ie:personName而不是Name,其中“Name”是关键字。
答案 3 :(得分:2)
我只是使用更具描述性的名称。例如,'id'成为标识符,'string'变为'descriptionString',依此类推。
答案 4 :(得分:2)
在Python中,我通常在模块上使用适当的命名空间来避免名称冲突。
import re
re.compile()
而不是:
from re import *
compile()
有时,当我无法避免关键字名称冲突时,我只是将最后一个字母从我的变量名称中删除。
for fil in files:
pass
答案 5 :(得分:1)
如前所述,要么将类更改为Java / C#中的clazz,要么使用一些下划线作为前缀,例如
int _int = 0;
答案 6 :(得分:1)
没有理由将关键字用作变量名。要么使用更详细的单词,要么使用thesaraus。将单词的某些字母大写,使其与关键字不完全相同,对以后继承代码的人来说无济于事。
答案 7 :(得分:0)
对于那些没有任何关键词的语言感到高兴...
但开玩笑说,我认为在很少的情况下,“但有时一个关键词是命名某事的唯一自然选择。”你可以用“我的”,“做”,“_”或类似的前缀加上相处。
老实说,我真的不能想到许多这样的例子,其中关键字本身就是一个好名字(“int”,“for”和“if”无论如何都是坏的)。可能有意义的C语言家族中唯一的几个是“继续”(使其成为“继续”),“休息”(如何“breakWhenEOFIsreached”或类似的?)和已经提到的“类”(如何关于“classOfThingy” “?)。
换句话说:让名字更合理。 并且永远记住:代码只写了一次,但通常经常阅读。
答案 8 :(得分:0)
通常我会遵循匈牙利表示法。因此,无论出于何种原因,如果我想使用'End'作为整数类型的变量,我会将其声明为'iEnd'。一个字符串将是'strEnd'等。这通常会给变量带来一些空间。
如果我正在开展一个特定的个人项目,其他人只会看看我做了什么,例如,当使用UnrealEngine制作游戏的附加组件时,我可能会在某个地方使用我的姓名缩写名字。也许是'DS_iEnd'。
答案 9 :(得分:0)
我为每种语言编写自己的[vim]语法高亮显示,并且我给所有关键字一个明显的颜色,以便在编码时注意它们。像PHP和Perl这样的语言使用$
作为变量,使其成为无问题。
答案 10 :(得分:0)
在Ruby on Rails中开发我有时会查找list of reserved words。
答案 11 :(得分:0)
在15年的编程中,我很少遇到这个问题。
我可以立即想到的一个地方,也许是一个css类,在这种情况下,我会使用更具描述性的名称。因此,我可能会使用'targetClass'或类似的东西而不是'class'。
答案 12 :(得分:0)
答案 13 :(得分:0)
我切换到一种不限制标识符名称的语言。
答案 14 :(得分:0)
首先,大多数代码约定都会阻止这种情况发生。
如果没有,我通常会添加一个描述性的散文前缀或后缀:
the_class or theClass infix_or (prefix_or(class_param, in_class) , a_class) or_postfix
一种练习,通常与您可以找到的每个代码样式建议保持一致(“长名称不会杀死”,“我保证,”更长的变量名称不会占用更多的内存空间。“) 一般来说,如果您认为关键字是最佳描述,那么稍微差一点就会更好。
请注意,在您的问题的前提下,您会引入歧义,这对读者来说是不利的,无论是编译器还是人类。即使使用class,clazz或klass是自定义的,即使该自定义不是那么自定义它是一个自定义:它需要一个单词,精确描述为单词可能,并扭曲它,有效地射击w0rd的精度“wrd”。有人习惯了另一种w_Rd惯例或语言可能会对你的wolds有一些刺耳的词语。
我们大多数人都比“花”,“众议院”或“汽车”更多地谈论事物,因此通常更多关于typeNames,decoratees,class_params,BaseClasses和typeReferences的说法。
这是我的个人代码混淆容忍度结束的地方:
从不(!!!)依靠范围或神秘的语法规则来防止名称冲突与“关键词”。 (不知道任何允许这样做的编译器,但是,现在,你永远不会知道......)。
尝试一下,有人会在wörd中告诉你__rd,Word会像TeX一样给你!
答案 15 :(得分:-2)
我在Java中的系统是将单词的第二个字母大写,例如:
int dEfault;
boolean tRansient;
Class cLass;