提问人: 提问时间:10/25/2008 最后编辑:Toybuilder 更新时间:6/1/2017 访问量:1777
是否有变量命名约定的简明目录?
Is there a concise catalog of variable naming-conventions?
问:
这些年来,我遇到了许多不同风格的变量名称。
目前维基百科上关于命名约定的条目相当轻......
我很想看到一个简明的变量命名约定目录,通过名称/描述和一些例子来标识它。
如果某个约定特别受到某个平台社区的青睐,那也值得注意。
我正在把它变成一个社区维基,所以请为每个约定创建一个答案,并根据需要进行编辑。
答:
Sun 在这里发布了 Java 的变量名称约定列表。该列表包括用于命名包、类、接口、方法、变量和常量的约定。
关于变量的部分指出
除变量外,所有实例、类和类常量都与小写首字母混合大小写。内部单词以大写字母开头。变量名称不应以下划线 _ 或美元符号 $ 字符开头,即使两者都是允许的。
变量名称应简短但有意义。变量名称的选择应该是助记符,也就是说,旨在向偶然的观察者表明其使用意图。应避免使用单字符变量名称,但临时的“一次性”变量除外。临时变量的通用名称是整数的 i、j、k、m 和 n;C、D 和 E 表示字符。
一些例子包括
int i;
char c;
float myWidth;
我见过的最好的命名约定集是在《代码完成》一书中,Steve McConnell 在那里有一个很好的关于命名约定和许多示例的部分。他的例子贯穿了不同语言的许多“最佳实践”,但最终还是留给开发人员、开发经理或架构师来决定具体的行动。
PEP8 是 Python 代码的风格指南,是标准库的一部分,在 Python 社区中具有较大影响力。作为奖励,除了涵盖 Python 标准库使用的命名约定外,它还概述了一般的命名约定。
根据 PEP8:标准库中的变量、实例变量、函数和方法应该使用小写单词,并用下划线分隔以提高可读性:
foo
parse_foo
a_long_descriptive_name
若要将名称与保留字区分开来,请附加下划线:
in_
and_
or_
弱私有名称(不是通过“from M import *”导入)以单个下划线开头。使用名称修改强制执行隐私的名称以双下划线开头。
_some_what_private
__a_slightly_more_private_name
作为 Python“特殊”方法的名称以双下划线开头和结尾:
__hash__ # hash(o) = o.__hash__()
__str__ # str(o) = o.__str__()
无论您的命名约定是什么,它通常都无法让您轻松区分:
- 实例(通常是私有)变量
- 局部变量(用作参数或函数局部变量)
我使用基于局部变量的不定冠词(a、an、some)的命名约定,而实例变量则没有冠词,如这个关于变量前缀的问题中所述。
因此,前缀(无论是我的方式,还是该问题中列出的任何其他前缀)都可以是优化变量命名约定的一种方式。
我知道你的问题不仅限于变量,我只是想指出命名约定的那部分。
还有 Einar Hoest 的“Java 程序员短语手册”。
他分析了方法名称的语法结构以及方法主体的结构,并收集了以下信息:
add-[名词]-*这些方法通常具有参数并创建对象。 它们很少返回字段值。 这句话几乎出现在所有 应用。
诸如此类。。。从数百个开源项目中收集。
有关更多背景信息,请参阅他的SLE08论文。
评论