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
我正试图找出是否有符合要求的标准。感谢
答案 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)
答案 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标准文档。但是,如果我正在编辑或添加现有代码,我会尝试遵循前一作者的风格。