【发布时间】:2018-08-23 17:29:25
【问题描述】:
我已经阅读了很多流行的开源 PHP 项目标准手册。
很多强制变量空格下划线,很多强制camelCase。
全局函数和变量的命名应该与类方法/属性不同吗?
我知道最重要的是一致性,但我想听听对此的一些想法。
你会推荐什么?
【问题讨论】:
我已经阅读了很多流行的开源 PHP 项目标准手册。
很多强制变量空格下划线,很多强制camelCase。
全局函数和变量的命名应该与类方法/属性不同吗?
我知道最重要的是一致性,但我想听听对此的一些想法。
你会推荐什么?
【问题讨论】:
我觉得 camelCase 打起来更舒服一些,因为我觉得下划线打起来有点别扭。
不要使用全局变量。
我避免在 PHP 中进行过程编码,我发现 OOP 更容易让事情井井有条。此外,PHP 的全局命名空间中的东西还不够吗?
一般我会尽量坚持:
Item、Row、DB、Items。$column、$name
DEBUG、TYPE_FOO。get、perform、do)开头,后跟一个名词(单数或复数)描述其操作或返回的内容(getThing()、getThings() )这绝对取决于您编码的目的。如果我正在编写 PHP 或 PEAR,我使用 camelCase。如果我在做 Python/Django,我会使用 under_scores。如果我正在编写 ELisp,我会使用虚线分隔符。
【讨论】:
在 PHP 本身中,几乎每个原生函数都用下划线分隔。文档中的大部分 PHP 代码示例都是下划线分隔的。
在大多数语言中,我认为 Camel 或 Pascal Casing 更合适,但我认为在 PHP 中使用下划线分隔有明确的历史。
【讨论】:
Zend Frameworks naming convention(基于 PEAR)可能是 PHP 世界中最接近标准的。就个人而言,我更喜欢使用 lowercase_underscore 作为变量名,但除此之外我大多遵循 ZF 的约定。
10 周年更新:
如今,有一个标准,在社区中被广泛接受。你应该坚持下去:
https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md
【讨论】:
是的,最重要的是一致性。如果您是唯一的开发人员,请坚持使用一种方法。如果您正在与团队合作,请与其他团队成员交谈。区分全局变量、函数/方法和类将使阅读代码更容易。对于某些人来说,camelCase 比使用_underlines 更容易,因此您的团队需要讨论选项并选择一种样式。
【讨论】:
注意:我的 MySQL 表名使用下划线,MySQL 字段名使用 UpperCamelCase:
通常我将 $lowerCamelCase 用于变量名称和类属性,但如果它包含来自字段的值,我使用 $UpperCamelCase 字段名称,或者如果它是来自表的数据数组,我将使用$table_name。这样我就可以轻松地在grep 或SomeField 或some_table 中找到与它相关的所有内容。
您不必使用这个精确的系统,但是能够搜索对字段或表的所有引用是一个巨大的好处。
【讨论】:
我以前更喜欢使用 camelCase,但为了在更大的应用程序中保持一致性,我采用了 CodeIgniter 的样式指南。
即使您不使用他们的框架,您也可以欣赏为定义清晰而全面的样式所做的工作:http://codeigniter.com/user_guide/general/styleguide.html
【讨论】:
我的目标(无论名称的具体格式如何)是添加更多信息。名称是否提高了对代码的理解和/或表达了一些重要的东西?
如果成功了,那太好了,那么你就成功了。
如果名称没有添加任何内容,您为什么还要麻烦命名它?
本周早些时候我写过这篇文章:
【讨论】:
我建议阅读PEAR Coding Standards。由于 PEAR 是官方的 PHP Extension and Application Repository,它可以被认为是该语言的官方编码标准。
【讨论】: