PHP特定 - 清洁代码,命名约定和文档

时间:2009-11-18 17:13:56

标签: php syntax coding-style

PHP的干净代码,命名约定和文档的一些最佳实践是什么?

我看到用户/人说这是一种不好的做法,例如:

// Create an array to hold x values
$arr_x = array();

这是一个不必要的注释,因为单独的语法解释了功能。这应该更多的是描述脚本/函数功能的标题注释,而不是程序的变量/流程。实施例

/**
 * Create an array
 */
function create_array() {
   return array();
}

$arr_x = create_array();

// This is just to show the comments and the code is not tested or used except for this example

这引导我走上正确的语法,编码和文档的路径(标题命名的原因)。

变量,函数和脚本命名约定可接受的是这个个人偏好?

$varX
function varX()
varX.php

$var_x
function var_x()
var_x.php

我正试图找出是否有符合要求的标准。感谢

10 个答案:

答案 0 :(得分:7)

Zend Framework有一个PHP编码标准文档here,应该涵盖如何命名变量和函数等内容。

何时以及如何发表评论的具体程度要低于平台。我认为一个好的一般规则是评论为什么完成某些事情,而不是如何。代码应该写得足够清楚,以使如何显而易见。 (当然也有例外,例如使用可能需要解释的特别复杂的算法。)

答案 1 :(得分:4)

没有标准,只有开发者的意见。

我更喜欢用下划线分隔的变量:

$my_var

但对于函数我更喜欢驼峰式的情况:

function myFunction() {}

至于评论,是的,有时候根本不需要诸如// create array之类的评论,但是不要使用一个衬垫来推迟它们,它们在执行时不会减慢你的脚本速度。我喜欢用一行来巧妙地描述复杂脚本的每一步。

只要您的代码对您和您的开发人员(项目中的其他人,第三方公司等)可读,那么您就可以了。

答案 2 :(得分:3)

最重要的是要保持一致。除了基本知识,如描述性变量,函数和方法名称,所有真正重要的是一致性。

如果你不想过于考虑它,可以随意使用一种流行的编码风格指南,如PEAR项目或JacobM Just发布的Zend Framework标准。

答案 3 :(得分:1)

我使用codeigniter,这是他们的风格指南。
http://codeigniter.com/user_guide/general/styleguide.html

答案 4 :(得分:1)

找到您喜欢的标准,或者与php_codesniffer支持的现有代码库最匹配的标准 - 并安装该工具 - 至少您可以使用工具检查代码是否存在差异

答案 5 :(得分:1)

一个重要的是一致性。无论您为开发团队选择什么 - 上面提到的任何标准 - 确保您的开发组织中的每个人都坚持这一点。否则,代码将很难阅读,并且很难进行代码审查。

答案 6 :(得分:1)

Drupal是用PHP编写的最大的开源代码库之一。

他们必须有一些好的代码约定。

http://drupal.org/coding-standards

答案 7 :(得分:1)

编码标准在php中一直在变化。如果你看一下旧的框架,他们都使用Camel案例,我认为这会导致代码中的错误。这对于像java这样的语言是有意义的,但不是php。

最新的编码标准和框架工作避免使用cammel案例,并且优先选择lower_case下划线分隔变量名称。例如:fat_yak,而不是fatYak。

php的问题是它将接受一个未声明的新变量,并且由于Case很重要,因此可能有两个具有相同名称但不同情况的变量。因此,重要的是始终使用带有变量的小写,以避免简单的错误,否则可能无法检测到。同样的原则应该扩展到方法名称,因为在编写扩展类和覆盖方法名称时会遇到同样的问题。 (有可能错放大写字母并最终得到第二个功能,而不是按照您的意图替换原始功能。)

我认为有一些非常好的编码标准会被这个camelCase方面所破坏。

这个原则也应该扩展到文件名。鉴于unix服务器与Windows服务器的不同,只要总是使用小写,就可以避免许多问题。不是那些带有大写字母的命名类可能是一个非常邪恶的行为。

在类名中使用CamelCase很好。如果你在这里犯了错误,它会立即被拿走。事实上,在课程开始时使用大写字母对于您自己的理智是强制性的。 (我会把它们命名为Fat_yak,而不是FatYak,但我在那个上是少数,所以可能会闭嘴......虽然它会使命名文件更容易...例如:Fat_yak.php而不是FatYak.php)

使用4个空格而不是制表符是一个非常有用的想法,特别是如果使用了许多不同的编辑器。 (代码在所有编辑器上看起来都一样)

其他一切都是50-50的命题......每个标准似乎都选择了两个选项中的一个。这是编码标准令人失望的方面,因为没有出现明确的领导者。

eg: 
"true" or "TRUE"

eg:
function blah(){

}

or

function blah()
{

}

答案 8 :(得分:0)

我称之为反模式。当有一些数据类型改变时你会做什么?您是否只需更改整个项目以及许多其他使用您代码的项目?

我宁愿使用简单的:

$x
function x()
x.php

答案 9 :(得分:0)

JacobM刚刚发布了一个很好的PHP标准文档。但是,如果我正在编辑或添加现有代码,我会尝试遵循前一作者的风格。