代码之家  ›  专栏  ›  技术社区  ›  mike g

您的系统是如何避免关键字命名冲突的?

  •  4
  • mike g  · 技术社区  · 16 年前

    16 回复  |  直到 16 年前
        1
  •  7
  •   Jon Skeet    16 年前

    clazz 而不是 class 在C#或Java中。在C#you中 使用@前缀,但这很可怕:

    int @int = 5; // Ick!
    
        2
  •  5
  •   Paul W Homer    16 年前

    例如,如果你编写了一个跟踪学生的系统,并且你想要一个对象来代表他们在某个特定领域的学习,例如,他们在某个领域参加了“课程”,如果你不能直接使用这个术语,或复数“类”,或类似“研究”的替代词,你可能会发现一个更“实例化”的变体:studentClass,currentClass,或更高的视角:“课程”、“课程课堂”或特定类型属性:dailyClass、nightClass等。

    有很多选择,你应该选择最简单、最明显的一个,仅此而已。

    保罗。

        3
  •  4
  •   Eppz    16 年前

    如果我有一个函数/变量/类,用一个关键字来命名它似乎合乎逻辑,那么我会在关键字前面使用一个描述性单词。

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

        4
  •  2
  •   Marc Charbonneau    16 年前

    我只是用了一个更具描述性的名字。例如,“id”变成标识符,“string”变成“descriptionString”,等等。

        5
  •  2
  •   Soviut    16 年前

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

    import re
    re.compile()
    

    而不是:

    from re import *
    compile()
    

    有时,当我无法避免关键字名称冲突时,我只需删除变量名称的最后一个字母。

    for fil in files:
        pass
    
        6
  •  1
  •   Paulo Lopes    16 年前

    int _int = 0;
    
        7
  •  1
  •   Ryan Thames    16 年前

    没有理由使用关键字作为变量名。要么使用更详细的单词,要么使用thesaraus。将单词的某些字母大写,使其与关键字不完全相同,对以后继承代码的人没有多大帮助。

        8
  •  0
  •   blabla999    16 年前

    快乐那些没有任何关键字的语言。。。

    老实说,我真的想不出有多少这样的例子,仅仅用关键字就可以得到一个好名字(“int”、“for”和“if”无论如何都肯定是不好的)。C语言家族中唯一有意义的是“continue”(使其成为“doContinue”)、“break”(如何称为“breakwheeofithead”或类似的词?)和已经提到的“class”(如何称为“classOfThingy”?)。

    永远记住:代码只写一次,但通常读得非常频繁。

        9
  •  0
  •   Dalin Seivewright    16 年前

    我通常使用匈牙利符号。所以,无论出于什么原因,如果我想使用'End'作为integer类型的变量,我会将其声明为'iEnd'。字符串应该是“strengd”,等等。这通常会给我一些空间,直到变量变为止。

    如果我在做一个特定的个人项目,而其他人只会看到我做了什么,例如,在使用UnrealEngine为游戏制作附加组件时,我可能会在名字的某个地方使用我的首字母缩写。”也许吧。

        10
  •  0
  •   too much php    16 年前

    我为每种语言编写了自己的[vim]语法高亮,并给所有关键词加上明显的颜色,以便在编码时注意到它们。像PHP和Perl这样的语言使用 $ 对于变量,使其成为非问题。

        11
  •  0
  •   allesklar    16 年前
        12
  •  0
  •   John MacIntyre    16 年前

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

        13
  •  0
  •   Aaron Maenpaa    16 年前

    在python中,普遍接受的方法是附加一个“\ux”

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

    operator

        14
  •  0
  •   Ken Ken    16 年前

    我改用了一种完全不限制标识符名称的语言。

        15
  •  0
  •   AndreasT    13 年前

    首先,大多数代码约定都阻止这样的事情发生。

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

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

    请注意,在你的问题的前提下,你引入了歧义,这对读者是有害的,无论是编译器还是人类。即使使用class、clazz或klass是一种习惯,即使这种习惯不是那么习惯,它也是一种习惯:它接受一个单词,精确地描述这个单词,并对其进行扭曲,有效地在“wrd”中射击w0rd的精度。习惯于另一种世界惯例或语言的人可能会对你的世界说一些刺耳的话。

    我们中的大多数人都有比“花”、“房子”或“车”更多的话要说,所以通常有更多关于类型名、装饰物、类参数、基类和类型引用的话要说。

    这就是我个人代码混淆容忍度的终点:

    永远不要(!!!) 依靠范围或晦涩的语法规则来防止名称与“关键字”冲突。(不知道任何编译器会允许这样做,但是,现在,你永远不知道…)。

    试试看,有人会在世界上看到你,所以这个词在你看来就像TeX!

        16
  •  -2
  •   mike g    16 年前

     int dEfault;
     boolean tRansient;
     Class cLass;