有3种重要的命名约定:
对于变量来说,带下划线的似乎是开发人员使用最多的,所以我会坚持下去。我认为函数是相同的。
但是类和方法名称呢?开发人员最常使用这3种方法中的哪一种? (个人而言,方法是3.,类是2.)
请不要发布“使用您认为正确的东西”之类的东西,因为我正在编写的代码是其他开发人员的API,并且我想采用最流行的编码风格:)
#1 楼
大约一年前,我有同样的问题,所以我自己看了一些代码。这是我发现的(顺便说一下,常数在每个项目中都是ALL_CAPS
): ╔═══════════════════════╦═════════════╦════════════╦══════════════╦════════════╦════════════╗
║ PHP Project ║ Classes ║ Methods ║ Properties ║ Functions ║ Variables ║
╠═══════════════════════╬═════════════╬════════════╬══════════════╬════════════╬════════════╣
║ Akelos Framework ║ PascalCase ║ camelCase ║ camelCase ║ lower_case ║ lower_case ║
║ CakePHP Framework ║ PascalCase ║ camelCase ║ camelCase ║ camelCase ║ camelCase ║
║ CodeIgniter Framework ║ Proper_Case ║ lower_case ║ lower_case ║ lower_case ║ lower_case ║
║ Concrete5 CMS ║ PascalCase ║ camelCase ║ camelCase ║ lower_case ║ lower_case ║
║ Doctrine ORM ║ PascalCase ║ camelCase ║ camelCase ║ camelCase ║ camelCase ║
║ Drupal CMS ║ PascalCase ║ camelCase ║ camelCase ║ lower_case ║ lower_case ║
║ Joomla CMS ║ PascalCase ║ camelCase ║ camelCase ║ camelCase ║ camelCase ║
║ modx CMS ║ PascalCase ║ camelCase ║ camelCase ║ camelCase ║ lower_case ║
║ Pear Framework ║ PascalCase ║ camelCase ║ camelCase ║ ║ ║
║ Prado Framework ║ PascalCase ║ camelCase ║ Pascal/camel ║ ║ lower_case ║
║ SimplePie RSS ║ PascalCase ║ lower_case ║ lower_case ║ lower_case ║ lower_case ║
║ Symfony Framework ║ PascalCase ║ camelCase ║ camelCase ║ camelCase ║ camelCase ║
║ WordPress CMS ║ ║ ║ ║ lower_case ║ lower_case ║
║ Zend Framework ║ PascalCase ║ camelCase ║ camelCase ║ camelCase ║ camelCase ║
╚═══════════════════════╩═════════════╩════════════╩══════════════╩════════════╩════════════╝
因此,看完所有这些之后,我决定选择:
全局函数)
ClassName
评论
问题是某些框架比其他框架更受欢迎。例如,Zend是最受欢迎的框架之一,但使用camelCase变量。要真正了解大多数PHP开发人员的需求,您必须按流行度对框架进行加权,或者只是基于github或类似的东西进行度量。
–内森·美林(Nathan Merrill)
17年7月26日在20:20
在所有这些框架中,变量都不会以大写字母开头吗?即使引用一个类对象?
–亚当
17年12月28日在16:53
@Adam,关于变量,我没有发现任何以大写字母开头的内容。请注意,我只浏览了每个库的代码(库中各个部分的10至20个文件)。可能有一些,但我没有注意到。随时检查一下,让我们知道您找到了什么。 :)
–程序员
18年1月2日在14:41
@Adam个人,我看到的唯一以大写字母开头的局部变量的地方是在主要基于Microsoft技术构建的项目中
–乔纳森
18年9月13日在13:32
既然您花了所有时间来创建此表。谢谢。
– ed22
19-10-14在9:49
#2 楼
没有“最流行的编码样式”之类的东西,这完全取决于您团队的惯例和个人喜好。由于您是针对开发人员的,因此您应该针对您的平台研究流行的约定,并遵循您认为更方便,易读且更接近您的个人风格的约定。对于PHP,一组流行的命名约定是Zend Framework的。与选择的命名约定保持一致比该约定本身更重要。
评论
我对自己的想法没有更多的描述性。
–SeçkinSavaşçı
2012年5月19日15:17
最后一句话+1。
–拉杜(Radu Murzea)
2012年5月19日15:42
强烈同意你们所有人。到目前为止,这是最好的答案。我还要为最后一句话再加上+1。
–朱利奥·马尔基(Julio Marchi)
19年8月12日在19:54
#3 楼
尽管它可能不像Java版本那样普遍,但是遵循Apache PHP样式指南肯定不会受到伤害。对于命名约定:命名:FunctionNamesLike,$ localVariableName,$ objectVariable,
ClassNamesLike,MethodNamesLike,CONSTANTS_LIKE_THIS。全局名称
(类,函数,变量,定义)必须加前缀,以防止与PHP本身命名冲突。这种方法包括防止与PHP冲突或可能冲突的前缀。除了常量之外,
除非您模拟名称空间,否则请防止在名称中使用下划线,并且
确保一旦PHP具有名称空间(以及对象变量的
当然),便可以切换到实际名称空间。 >
,其后的类和方法名称为
PascalCased
。这里还列出了许多其他合理的样式指南。多数人似乎都同意类名应为
PascalCased
,但包括MIT样式指南在内的某些类则应指出方法应为camelCased
。接受以上答案。#4 楼
我们有一个怪异的系统,其中所有东西都有自己的约定:ClassesAreLikeThis。
#5 楼
我个人发现在对变量进行编码时,camelcase更为自然,但是由于PHP中的变量区分大小写,因此在代码中寻找您忘了创建camelcase的变量并不是一件有趣的事,因此我始终对变量使用大写字母大小写。尽管约定确实是可变的,但在有人对变量使用了驼峰的情况下进行编码,并尝试确保始终对THAT变量使用约定,这会令人沮丧。
评论
我看到您已经标记了问题php,但您可能应该在询问的上下文中更明确。这个问题在Objective-C中很容易回答,但在许多其他语言中则不可能回答。我不确定PHP是否已建立标准,但是知道您是否将Q限制为该语言将有助于人们回答。AS_SOMEONE_FORCED_TO_WORK_IN_C_I_SEE_THIS_CONVENTION_QUITE_OFTEN
对于PHP标准问题,我强烈建议您查看PSR标准集,以解决此问题以及其他样式问题。 php-fig.org/psr/psr-1