关于命名变量的教程有哪些?
从我之前的帖子你可能已经看出来,我的命名习惯非常糟糕。你知道有没有关于如何给东西命名的教程吗?
12 个回答
7
我觉得可能找不到什么好的教程,因为没有固定的规则。这里有一些小建议:
遵循约定:循环变量通常用
i
、j
和k
;可变数量的参数用*args
和**kwargs
;变量名可以用驼峰命名法或下划线命名法。保持一致性。
简洁明了。比如
list_of_drugs_used_in_this_program
这个名字就比drugs
更复杂,更不清楚。同样,你也不需要在变量名中包含数据类型,比如drugs_list
就显得多余。下划线不要用得太多。我从来没需要超过一个,两个以上就有点过了。
绝对不要使用 元语法变量(比如
foo
、spam
等等),除非是为了快速演示。像method1
这样的名字也不合适。
不过你可以把这些总结为:
别傻了。
嘿嘿。
变量命名的约定常常会变成一场宗教战争,但我可以很自信地说,世界上最糟糕的变量名是:
$data
当然它是数据!变量就是用来存放数据的!它们只能存放这些。就像你在打包搬家时,在箱子侧面用大黑笔写上“物质”。
http://www.oreillynet.com/onlamp/blog/2004/03/the_worlds_two_worst_variable.html
4
这里的所有回答都很有道理。最重要的是:保持一致。
话虽如此,这里是我的一些规则(C#):
- 使用驼峰命名法(camelCase)来命名变量——我觉得这样比用下划线更容易阅读。
Public
属性的名字要以大写字母开头。- 我绝对不应该碰的东西名字前面要有下划线——比如,属性的后备字段(也就是存储数据的地方)只能通过属性来访问。如果我在其他地方看到下划线,那我就知道我做错了。
- 在合适的地方使用应用匈牙利命名法——比如,描述行ID的整数可以命名为
rowSelected
、rowNextUnread
等等。这和系统匈牙利命名法不同,后者会把它们标记为整数,比如iSelected
、iNextUnread
。系统匈牙利命名法并没有提供太多有用的信息,而应用匈牙利命名法则提供了类型所没有的信息:它告诉我像rowItemsPerPage
和colSelected
这样的操作是没有意义的,尽管它们编译时没有问题。