PHP/MySQL 命名规范:驼峰式命名 vs 下划线命名?

13

在PHP模型代码中(至少是我自己的代码),经常直接引用MySQL表和字段名称,由于MySQL标识符大部分不区分大小写,因此我通常使用下划线命名约定使这些标识符更易读。

同时,似乎大多数人在创建PHP类库时使用camelCase约定,我也一直在尝试这样做。

此外,PHP内置函数本身不一致。有些使用camelCase,有些使用下划线,有些使用C风格命名(例如“strtolower”)。

结果,代码往往比我喜欢的要不可读得多,因为混合了camelCase、under_score和C风格的命名约定,它们很近地出现在代码中。

其他人是如何处理这个问题的?也许有人已经找到一些方法来组织他们的工作,使不同的命名约定不太可能出现在彼此相邻的位置?或者也许有一些类库,如果正确使用,可以使事情变得更加清洁?我知道这些关于样式的讨论可能会激烈,没有必要去那里,请给一些实际的建议!


似乎大多数回答都归结为“保持一致”——但未能解决在同一代码模块中出现的来自各种上下文的标识符应该如何处理的问题。 - rmw
1
就我个人而言,我没有真正的问题来保持它们分开。在设计MySQL数据库时,我只使用小写字母。在PHP/CI中,主要的控制器/模型函数名称是驼峰式命名法。我尽力避免在我的代码中使用下划线,但像tank_auth这样的插件确实会使用它们。我想这就是PHP灵活性的乐趣(和缺点)吧。 - Michael B
4
@Kyle 同感。其实很有趣。SQL从不使用驼峰命名法,而使用大量下划线。PHP则几乎不用下划线,却使用许多驼峰式命名法。我认为这很清晰:你可以从变量名中看出起源——是PHP还是SQL创建了这个变量名? - Rudie
1
下划线通常用于_constructor类型的函数(例如,在tank_auth中的_createuser)来表示它们的功能,但我强烈偏爱驼峰命名法,并花几分钟思考函数的名称。在我看来,简洁、可重复的英文描述比基于语法的描述符更好。 - Michael B
2个回答

8
如teresko所说,MySQL在*NIX平台上对名称大小写敏感,在Windows上不敏感。如果你开发的代码要支持两种平台(就像我一样),那么混用大小写可能会带来巨大的麻烦:例如,在Windows上转储数据库并在*NIX上还原后,所有大小写都会丢失。实际上,我们必须编写代码来检测和修复转储文件中的大小写问题,只为了这个原因。
但是,如果你不使用Windows,你使用什么并不重要,只要保持一致即可。

2
当涉及到模型和数据库表时,您可以使用以下方式:
  • 模型名称使用CamelCase(驼峰命名法),
  • 数据库表使用模型名称的复数形式(保持大小写一致,例如“camelcases”),
  • 表名按字母顺序排列,用下划线分隔(例如“camels_cases”是“cases”和“camels”之间的连接表),
对于类,我通常使用CamelCases(首字母大写),对于方法,我使用camelCases(首字母小写)。
但实际上,一致性和可读性才是最重要的。遵循一些知名和广泛实现的框架的命名约定可能是个好主意,比如Zend Framework(它提供了相当精确的编码标准指南),但是Kohana也可能是个不错的选择。重新发明轮子可能不是最好的主意 ;)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接