关于命名变量的教程有哪些?

4 投票
12 回答
535 浏览
提问于 2025-04-16 02:26

从我之前的帖子你可能已经看出来,我的命名习惯非常糟糕。你知道有没有关于如何给东西命名的教程吗?

12 个回答

7

我觉得可能找不到什么好的教程,因为没有固定的规则。这里有一些小建议:

  • 遵循约定:循环变量通常用 ijk;可变数量的参数用 *args**kwargs;变量名可以用驼峰命名法或下划线命名法。

  • 保持一致性。

  • 简洁明了。比如 list_of_drugs_used_in_this_program 这个名字就比 drugs 更复杂,更不清楚。同样,你也不需要在变量名中包含数据类型,比如 drugs_list 就显得多余。

  • 下划线不要用得太多。我从来没需要超过一个,两个以上就有点过了。

  • 绝对不要使用 元语法变量(比如 foospam 等等),除非是为了快速演示。像 method1 这样的名字也不合适。

不过你可以把这些总结为:

别傻了。


嘿嘿。

变量命名的约定常常会变成一场宗教战争,但我可以很自信地说,世界上最糟糕的变量名是:

$data

当然它是数据!变量就是用来存放数据的!它们只能存放这些。就像你在打包搬家时,在箱子侧面用大黑笔写上“物质”。

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

4

这里的所有回答都很有道理。最重要的是:保持一致。

话虽如此,这里是我的一些规则(C#):

  • 使用驼峰命名法(camelCase)来命名变量——我觉得这样比用下划线更容易阅读。
  • Public属性的名字要以大写字母开头。
  • 我绝对不应该碰的东西名字前面要有下划线——比如,属性的后备字段(也就是存储数据的地方)只能通过属性来访问。如果我在其他地方看到下划线,那我就知道我做错了。
  • 在合适的地方使用应用匈牙利命名法——比如,描述行ID的整数可以命名为rowSelectedrowNextUnread等等。这和系统匈牙利命名法不同,后者会把它们标记为整数,比如iSelectediNextUnread。系统匈牙利命名法并没有提供太多有用的信息,而应用匈牙利命名法则提供了类型所没有的信息:它告诉我像rowItemsPerPagecolSelected这样的操作是没有意义的,尽管它们编译时没有问题。

撰写回答