什么是您避免关键字命名冲突制度?
-
22-07-2019 - |
题
通常语言有您不能直接使用完全相同的拼写和大小写在你的程序命名的东西(变量,函数,类...)使用关键字。然而,有时一个关键字是命名的东西只是自然的选择。您避免/避过这次冲突在您选择的技术系统是什么?
解决方案
我刚避免名称,通常。或者可以找到一个不同的名称或稍微改变 - 例如clazz
,而不是在C#或Java class
。在C#中的可以的使用@前缀,但它是可怕的:
int @int = 5; // Ick!
其他提示
有什么本质全方位了解关键字,因为它应该能够说出你的变量阻止你。由于所有的名字都只是推广某种类型的实例或多或少,你总是可以向上或向下抽象找到另一个有用的名称。
例如,如果你写一个跟踪学生的系统和你想一个对象来表示他们的研究在一个特定领域,即他们已经在一些采取了“类”,如果你不能直接使用术语,或多个“类”,或像“研究”,你可能会发现更多的“实例化”变化的替代:studentClass,currentClass等或更高的角度:“课程”,“courseClass”或specfic类型属性:dailyClass ,nightClass等
选项很多,你应该只喜欢最简单,最明显的一个,仅此而已。
我总是喜欢听用户通话,因为他们的语言范围有助于确定该问题的范围,通常如果你听够长,你会发现他们有相同的基本的东西多很多方面(只细微的差别)。他们通常有答案...
保罗。
我的系统是不使用关键字段!
如果我有一个函数/变量/类和似乎只与逻辑关键词来命名,我将在关键字前面使用描述性词。
(adjectiveNoun)格式。即:PERSONNAME代替名在“名称”是关键字
。我只使用一个更描述性名称。例如, 'ID' 变为标识符, '字符串' 变为 'descriptionString,' 等等。
在Python我通常使用在我的模块适当命名空间,以避免名称冲突。
import re
re.compile()
,而不是:
from re import *
compile()
有时,当我不能避免关键字名称冲突,我只是下降的最后一封信了我的变量的名称。
for fil in files:
pass
如任一变化类如前所述用Java / C#为clazz,或使用一些下划线作为前缀,例如
int _int = 0;
不应该有任何理由使用关键字作为变量名。要么使用一个更详细的文字或使用thesaraus。善用这个词的某些字母,使之不完全一样的关键词是不会帮助到很多后来人继承你的代码。
快乐那些有语言没有任何关键字...
不过,玩笑之余,我想在其中很少的情况下“然而,有时一个关键字是命名的东西只是自然的选择。”您可以通过“我的”,“做”前缀它相处,“_”或类似的。
老实说,我真的不能相信很多这样的例子,其中单独的关键词也是一个不错的名字(“INT”,“对”和“如果”肯定是坏反正)。只有少数在C语言家族,或许是明智的“继续”(使其“doContinue”),“破发”(怎么样“breakWhenEOFIsreached”或类似?)和已经提到的“类”(怎么样“classOfThingy “?)。
在换句话说:使名称更合理。 永远记住:代码被写入一次,但usualy读起来很经常
。典型地跟随我匈牙利表示法。所以,如果出于某种原因,我想用“终结”为整数类型的变量我将宣布它为“IEND”。字符串会被“strEnd”等,这通常是给我一些空间,只要变量去了。
如果我的工作,其他人仅会看,看我做什么,例如,使用虚幻引擎制作的一个附加到比赛的时候,我可能会使用的地方最初,我在一个特定的个人项目名字。 'DS_iEnd' 也许
我写我自己。[VIM]语法荧光笔每种语言,我给所有关键字一个明显的颜色,以便我通知他们,当我编码。像PHP和Perl语言使用$
变量,使其成为一个非问题。
在开发的Ruby on Rails的我有时也看看这个的保留字列表。
15年的节目,我很少有这个问题。
一个地方,我可以马上想到的,也许是一个CSS类,并在这种情况下,我会使用一个更具描述性的名称。因此,而不是“类”,我可能会使用“targetClass”或类似的东西。
我切换到其完全不限制标识符名称的语言。
首先,大多数代码约定防止这样的事情发生。
如果不,我通常添加说明性散文前缀或后缀:
the_class or theClass infix_or (prefix_or(class_param, in_class) , a_class) or_postfix
有一个惯例,就是通常与每一个代码风格的建议,你可以找到保持(“长名称不杀”,“长变量名不占用更多的内存空间,我答应。”) 一般来说,如果你认为该关键字是最好的说明,略差一个会更好。
请注意,您的问题的前提下很你介绍含糊不清,这是不好的读者,无论是编译器或人类。即使是使用类clazz中或克拉斯和定制即使定制并非如此定制,它是一个自定义的:它接受一个单词的字,正是描述性文字可能和扭曲,从而有效拍摄w0rd的精度在 “WRD”。用另一个w_Rd公约或语言有人可能有一些苛刻的wordz您丘陵。
我们大多数人有更多要说的东西比“花”,“豪斯医生”或“汽车”,所以通常有更多的要说typeNames,decoratees,class_params,基类的和typeReferences。
这是我的个人代码混淆公差结束时:
<强>从不(!!!)强>依赖于确定范围或神秘的语法规则,以防止命名冲突与“关键词”。 (不知道任何编译器将允许,但是,这些天来,你永远不知道...)。
试一下就会有人w ^ ** d您在Word,以便__rd,Word将像TeX的为您服务!
我在Java系统是利用单词的第二个字母,因此,例如:
int dEfault;
boolean tRansient;
Class cLass;