2009-01-12 38 views
4

通常情况下,语言的关键字不能直接与您的程序中的命名(变量,函数,类...)命名完全相同的拼写和大小写。然而有时候,关键字是命名内容的唯一自然选择。你所选择的技术避免/避开这场冲突的系统是什么?什么是您的系统,以避免关键字命名冲突?

+0

btw wikify this。 – 2009-01-12 20:07:04

+0

恩..我不同意,这是一个合理的编程相关的问题,不像所有的民意调查和SO元问题。 – Kev 2009-01-12 20:20:58

回答

7

我只是避免这个名字,通常。要么找到一个不同的名字,要么稍微改变一下 - 例如用C#或Java代替clazz而不是class。在C#中,你可以使用 @前缀,但它是可怕的:

int @int = 5; // Ick! 
+0

...或克拉斯。出于显而易见的原因,我将在MVC中使用@class时设置HTML属性。 – tvanfosson 2009-01-12 20:15:59

+1

啊!这是可怕的 – 2009-01-12 20:16:07

+0

Yulp ...显然在牛津英语字典中有26万字,我敢肯定,必须有一个合适的人选,所以你不必使用语言关键字:) – Kev 2009-01-12 20:23:06

4

我的系统是不使用关键字期!

如果我有一个函数/变量/类,它似乎只有逻辑与命名关键字,我会在关键字的前面使用描述性的字。

(形容词名词)格式。即:personName而不是Name,其中“Name”是关键字。

-2

我在Java系统是利用单词的第二个字母,因此,例如:

int dEfault; 
boolean tRansient; 
Class cLass; 
1

正如前面所说要么改变类在Java/C#clazz中,或使用一些下划线作为前缀,例如

int _int = 0; 
2

我只是使用更具描述性的名称。例如,'id'变成标识符,'string'变成'descriptionString',等等。

2

在Python中,我通常在模块上使用正确的名称空间来避免名称冲突。

import re 
re.compile() 

代替:

from re import * 
compile() 

有时候,当我不能避免关键字名称冲突,我只是下降的最后一封信了我的变量的名称。

for fil in files: 
    pass 
1

应该没有理由使用关键字作为变量名称。要么使用更详细的单词,要么使用萨拉斯。利用单词中的某些字母使其与关键字不完全相同,对于稍后继承代码的用户来说不会有太大帮助。

5

没有什么内在的关键字包含所有内容,因为它应该阻止你能够命名你的变量。由于所有名称只是某种类型的某种程度的泛化实例,因此您可以随时在抽象中上下找到另一个有用的名称。例如,如果您编写一个跟踪学生的系统,并且您希望某个对象在特定领域中表示他们的学习,即他们已经在某个事物中采用了“班级”,但是如果您不能直接使用该术语,或复数“类”,或者像“学习”这样的替代,你可能会发现更多的“实例”变体:studentClass,currentClass等或更高的视角:“courses”,“courseClass”或specfic类型属性: dailyClass,nightClass等

很多选择,你应该只喜欢最简单,最明显的选择,就是这样。

我总是喜欢听用户说话,因为他们的语言范围有助于定义问题的范围,通常如果你听得够长,你会发现他们有许多相同的基本事物的多个术语(与只有微妙的差异)。他们通常有答案...

Paul。

0

快乐与那些没有任何关键字语言...

不过玩笑之余,我想在其中很少的情况下“然而,有时一个关键字是命名的东西只是自然的选择。”你可以通过在“我的”,“做”,“_”或类似词语前添加前缀来相处。

我真的不能真正想到许多这样的情况下,关键字本身就是一个好名字(“int”,“for”和“if”肯定是坏的)。 C语言家族中唯一可能有意义的少数是“继续”(使其成为“继续”),“休息”(如何“休息”)和已经提到的“类”(怎么样“classOfThingy “?)。

换句话说:使名称更合理。 永远记住:代码是只写一次,但通常阅读经常。

0

通常我遵循匈牙利符号。因此,如果出于任何原因,我想使用'End'作为整数类型的变量,我会将其声明为'iEnd'。一个字符串可能是'strEnd'等。这通常会给我一些空间,就像变量一样。

如果我正在开发一个特定的个人项目,其他人只会看看我做了什么,例如,在使用虚幻引擎添加游戏时,我可能会在某处使用我的首字母缩写在名字里。也许是'DS_iEnd'。

0

我为每种语言编写自己的[vim]语法荧光笔,并给所有关键字一个明显的颜色,以便在编码时注意到它们。像PHP和Perl这样的语言对变量使用$,这使得它不成问题。

0

在15年的编程中,我很少遇到这个问题。

我可以立即想到的一个地方,也许是一个css类,在这种情况下,我会使用更具描述性的名称。因此,我可以使用'targetClass'或类似的东西来代替'class'。

0

在Python中普遍接受的方法是将追加一个“_”

class -> class_ 
or -> or_ 
and -> and_ 

可以看到此例示的operator模块中。

0

我切换到一种不限制标识符名称的语言。

0

首先,大多数代码约定可以防止发生这样的事情。

如果没有,我通常会添加一个描述性的散文前缀或后缀:

the_class or theClass infix_or (prefix_or(class_param, in_class) , a_class) or_postfix 

实践,是一种通常与每一个代码风格的建议让你可以找到(“长名称不杀”, “我保证,更长的变量名不会占用更多空间。“) 一般来说,如果你认为关键字是最好的描述,那么稍微差一点会更好。

请注意,在你的问题的前提下,你会引入歧义,这对读者是不利的,一个编译器或一个人,即使是习惯使用class,clazz或klass,即使这个习惯不是那么自定义以至于它是一种习惯:它需要一个单词,正如字词所描述的那样,并且会扭曲它,有效地在wrd中拍摄w0rd的精确度,有人习惯于另一种w_Rd公约或语言,可能会有一些刺耳的文字给你的黄木。012

大多数人对“花”,“房子”或“汽车”,所以关于typeNames,decoratees,class_params,Base通常会有更多的说法类和类型引用。

这是我个人的代码混淆公差结束:

从不(!!!)依靠作用域或晦涩难懂的语法规则,以防止名称冲突与“关键词”。 (不知道任何允许的编译器,但是,现在你永远不知道......)。

试试看,有人会在wörd这么写__rd,Word对你来说看起来像是TeX!