是否有关于如何命名变量的教程?

时间:2010-08-06 21:05:54

标签: .net python language-agnostic naming-conventions

你可以从我以前的帖子中看出我有可怕的命名约定。你知道有关如何命名的任何教程吗?

12 个答案:

答案 0 :(得分:11)

答案 1 :(得分:7)

我认为没有任何好的教程,因为没有任何硬性规则。以下是一些提示:

  • 符合约定:循环变量为ijk; *args**kwargs中包含可变数量的参数;使用camelCase或underscored_names。

  • 保持一致。

  • 简明扼要。 list_of_drugs_used_in_this_program明显不如drugs。同样,您不需要在名称中包含变量的数据类型:drugs_list是多余的。

  • 不要过度使用下划线。我从来不需要不止一个。 2+正在推动它。

  • 从来没有永远使用metasyntactic variablesfoospam ...)除了快速而肮脏的例子。 method1也出局了。

但你可以用以下方式总结所有这些:

别傻了。


Tee hee。

  

通常可以使用变量命名约定   变成宗教战争,但我   当我宣布The。时完全有信心   世界上最差的变量名称是:

$data
     

当然是数据!那是什么   变量包含!这就是全部   永远都可以包含。就像你一样   打包你的财物搬到   一个新房子,一边   你写的盒子,用大黑标记,   “物质”。

http://www.oreillynet.com/onlamp/blog/2004/03/the_worlds_two_worst_variable.html

答案 2 :(得分:5)

  1. 完全遵循的不良惯例要好于不同的好“惯例”的组合(如果不遵守这些惯例,则不再是惯例)。
  2. 但是,应该忽略一个使得某些内容不如被忽略的惯例。
  3. 这是我所说的任何两种规则。除了这种惯例之外,偏好是一种迅速变成咆哮的意见问题。这篇文章的其余部分正是如此,不应该被解读为其他内容。

    1. 对于集合,请使用自然语言复数。在英语中,这意味着数据,图式,儿童,指数,标准,公式(实际上是焦点,鹅,脚,男人,女人,牙齿)不是像基准图式,子项,索引,标准,公式(以及类似的)焦点,鹅,脚,男人,女人,牙齿,不管你信不信我实际上已经看到了一些使用中的东西。骆驼套管和abbreviatiating对英语造成了足够的伤害,没有做更多。好吧,我从未见过基准面,但我已经看过元复数数据。 Sweet Aradia,为什么?
    2. 即使你使用不同的英语方言,也可以使用美式英语作为名字。大多数拥有这种方言的程序员已经学会在12岁时将“颜色”视为计算机环境中颜色的一个词,并且该原则适用范围更广。如果我们可以处理“颜色”(韦伯斯特的恶化之一)我们可以处理-ize和-ization(-ise和-isation是伪法国18世纪的影响,无论如何,美国人就是这个人的传统主义者)。
    3. 同样,如果您不确定如何拼写您正在使用的单词作为整个名称或部分名称,请查找它(google it并查看google所说的内容)。有些人可能会花费很长一段时间来分散你的拼写错误,这种错误拼写在整个运行代码中都是如此自由地分散,以至于使其修复令人生畏。
    4. 匈牙利语不好(在许多现代语言中,虽然有些语言有它的位置),但原则很好。如果你可以在一瞬间告诉const,static,instance,local和parameter变量,这很好。如果你能立刻说出意图,那也很好。
    5. 与此相关,_之前公共变量使它们非CLR兼容。这对于私有变量来说实际上是一件好事(如果你将它们公开用于快速实验,并忘记修复可见性,编译器会警告你)。
    6. 记住Postel的定律,“在你所做的事情上保守一点,在接受他人的事上保持自由”。这方面的一个例子就是表现为使用区分大小写的语言,即使您使用的是区分大小写的语言。相关的一个是公共名称中的粘合剂而不是私人名称。还有一种方法是更多地关注以下惯例,而不是抱怨那些不这样做的人。

答案 3 :(得分:4)

这里的所有答案都非常有效。最重要的是:保持一致。

那就是说,这是我的规则(C#):

  • camelCase标识符 - 我个人而言 发现这比阅读更容易 下划线
  • Public属性开始 用大写字母
  • 我的东西 永远不应该开始用 下划线 - 例如,支持 属性的字段应该只是 从酒店接触过。如果我有 在其他地方强调,我知道我 错
  • 应用程序匈牙利语在哪里 适当的 - 描述行的int 也许可以命名ID rowSelectedrowNextUnread等 等等。这不同于 系统匈牙利语,这标志着 它们像iSelected这样的整数, iNextUnread。系统匈牙利语 如果有的话,不会增加太多 匈牙利应用程序提供信息 类型不:它告诉我添加 rowItemsPerPagecolSelected是一个 毫无意义的操作,即使它 编译得很好。

答案 4 :(得分:3)

不是教程...更像是指南/最佳实践的事情:
http://msdn.microsoft.com/en-us/library/xzf533w0(VS.71).aspx

答案 5 :(得分:3)

我建议购买Robert C. Martin的“清洁代码”副本。它充满了很多建议,从命名约定到如何编写易于理解的函数等等。绝对值得一读。我知道它自阅读以来影响了我的编码风格。

答案 6 :(得分:3)

嗨,对我来说,你应该总是说出最明确的名字:

string_to_hash = "blabla"
hash(sring_to_hash)

并尊重pep8风格指南。您的代码应该非常容易阅读。

答案 7 :(得分:3)

关于命名约定的细节有许多不同的观点,但总体要点可归纳为:

  

每个变量名称应相关   任何数据存储在   变量。

     

您的命名方案应一致

所以一个重要的禁忌是 单字母变量(有些人 使用i和j进行索引循环 没关系,因为每个程序员都知道 它们是什么。不过,我更喜欢 'idx'而不是'i')。还有 像'method1'这样的名字,没什么意思 - 它应该表明变量的含义。

另一种(不常见的)约定是'匈牙利'符号,其中数据类型以变量名称为前缀,例如'int i_idx'。这在现代的面向对象编程语言中是无用的。更不用说公然违反干旱原则了。

第二点,一致性,同样重要。 camelCase,UpperCamelCase,无论如何 - 只是不要无缘无故地在它们之间切换。

您会发现命名约定因语言而异,通常,公司将有自己的命名规则。

为正确命名变量这是一项值得的投资,因为当你以后修改代码并且忘记了所有内容的含义时,它会带来好处。

答案 8 :(得分:2)

您没有指定您要查找的语言。由于您的问题标记为.NET,因此这是我在编写C#代码时遵循的文档:http://weblogs.asp.net/lhunt/pages/CSharp-Coding-Standards-document.aspx

答案 9 :(得分:2)

你读过Code Complete吗?他在书中对此进行了全面的论述。绝对是我在印刷中看到过的最好的命名策略......而且很容易找到像1000名程序员那样的名字,这些程序员和程序设计的前5名资源之一。

只是我的$ .05

答案 10 :(得分:1)

我可以为我的书“数据库设计的Sane方法”中的“名称”章节制作一个无耻的插件吗?我特别谈论数据库中的事物名称,但大多数相同的注意事项都适用于程序中的变量。

答案 11 :(得分:1)

目前尚不清楚您的问题是否与Python命名约定有关。

如果是这样,对于初学者,我会尝试遵循这些简单的规则:

  • ClassName - 类名称的大写
  • variable_name - 变量的小写和下划线(我尝试将它们保留为两个单词 maximum