【问题标题】:PHP - Function/variable namingPHP - 函数/变量命名
【发布时间】:2018-08-23 17:29:25
【问题描述】:

我已经阅读了很多流行的开源 PHP 项目标准手册。

很多强制变量空格下划线,很多强制camelCase。

全局函数和变量的命名应该与类方法/属性不同吗?

我知道最重要的是一致性,但我想听听对此的一些想法。

你会推荐什么?

【问题讨论】:

    标签: php naming-conventions


    【解决方案1】:

    我觉得 camelCase 打起来更舒服一些,因为我觉得下划线打起来有点别扭。

    不要使用全局变量。

    我避免在 PHP 中进行过程编码,我发现 OOP 更容易让事情井井有条。此外,PHP 的全局命名空间中的东西还不够吗?

    一般我会尽量坚持:

    • 类是 StudlyCaps 单数或复数名词,视情况而定:ItemRowDBItems
    • 变量是小写名词、单数或复数,具体取决于它们的含义:$column$name
    • 常量是单数大写名词:DEBUGTYPE_FOO
    • 方法是驼峰式,以单数动词(getperformdo)开头,后跟一个名词(单数或复数)描述其操作或返回的内容(getThing()getThings() )

    这绝对取决于您编码的目的。如果我正在编写 PHP 或 PEAR,我使用 camelCase。如果我在做 Python/Django,我会使用 under_scores。如果我正在编写 ELisp,我会使用虚线分隔符。

    【讨论】:

    • 同意,我正在学习 OO 以及什么是静态类(将我所有的字符串格式化程序等移出全局命名空间)
    • 不同意,见this,他们谈论全局变量,他们并不总是坏事。
    【解决方案2】:

    在 PHP 本身中,几乎每个原生函数都用下划线分隔。文档中的大部分 PHP 代码示例都是下划线分隔的。

    在大多数语言中,我认为 Camel 或 Pascal Casing 更合适,但我认为在 PHP 中使用下划线分隔有明确的历史。

    【讨论】:

      【解决方案3】:

      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

      【讨论】:

      • 链接已损坏。
      【解决方案4】:

      是的,最重要的是一致性。如果您是唯一的开发人员,请坚持使用一种方法。如果您正在与团队合作,请与其他团队成员交谈。区分全局变量、函数/方法和类将使阅读代码更容易。对于某些人来说,camelCase 比使用_underlines 更容易,因此您的团队需要讨论选项并选择一种样式。

      【讨论】:

        【解决方案5】:

        注意:我的 MySQL 表名使用下划线,MySQL 字段名使用 UpperCamelCase:

        通常我将 $lowerCamelCase 用于变量名称和类属性,但如果它包含来自字段的值,我使用 $UpperCamelCase 字段名称,或者如果它是来自表的数据数组,我将使用$table_name。这样我就可以轻松地在grepSomeFieldsome_table 中找到与它相关的所有内容。

        您不必使用这个精确的系统,但是能够搜索对字段或表的所有引用是一个巨大的好处。

        【讨论】:

          【解决方案6】:

          我以前更喜欢使用 camelCase,但为了在更大的应用程序中保持一致性,我采用了 CodeIgniter 的样式指南。

          即使您不使用他们的框架,您也可以欣赏为定义清晰而全面的样式所做的工作:http://codeigniter.com/user_guide/general/styleguide.html

          【讨论】:

            【解决方案7】:

            我的目标(无论名称的具体格式如何)是添加更多信息。名称是否提高了对代码的理解和/或表达了一些重要的东西?

            如果成功了,那太好了,那么你就成功了。

            如果名称没有添加任何内容,您为什么还要麻烦命名它?

            本周早些时候我写过这篇文章:

            http://caseysoftware.com/blog/useful-naming-conventions

            【讨论】:

              【解决方案8】:

              我建议阅读PEAR Coding Standards。由于 PEAR 是官方的 PHP Extension and Application Repository,它可以被认为是该语言的官方编码标准。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2010-11-18
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2018-07-11
                • 2012-07-10
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多