二次开发-开发方法-自定义扩展-编码规范
Combodo编码标准
此页面是iTop编码约定的简要说明(主要用于PHP)。 iTop编码约定与[ /php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md]PSR-2标准,但也要注意很多重要的区别!
源代码文件以UTF-8编码(没有[ /wiki/Byte_order_mark]BOM在文件的开头)。
换行符必须为Lf。
PHP文件必须在文件<?php的开头使用长PHP开头的标签,但不得包含任何关闭标签的PHP。这样可以防止在文件末尾错误地添加多余的空白字符,这些空白字符将被附加到页面生成的标签上。
一个编辑器配置 文件可用[ /Combodo/iTop/blob/develop/.editorconfig]在iTop存储库中.
在iTop中,所有代码均以英语编写:函数,变量,类名和注释均应以有效的英语编写。
您可以使用任何喜欢的定界符,主要目的是保持代码可读性。
使用时[ /manual/en/language.types.string.php#language.types.string.syntax.heredoc]heredoc / [ /manual/en/language.types.string.php#language.types.string.syntax.nowdoc]nowdoc,我们建议使用分隔符[ ttps://]JetBrains的语言注入.
例子 :
$sFooBarBaz = "{$foo}-{$bar} {$baz}"; $sJs = <<<JS console.debug("this is some JS code"); console.debug("having the right delimiter keyword will help language injection !");
变量命名
变量,职能参数和对象属性使用混合大小写约定命名(即所有小写字母,每个单词开头都有大写字母)和用作类型提示的前缀字母:
- 一个前缀用于哈希或数组(PHP没有任何区别:每个数组实际上是一个哈希)
- i前缀用于整数
- o前缀用于PHP对象
- s前缀用于字符串
- 很少使用:f表示浮点数(即非整数),r或h可用于资源句柄。
例:
<?php
$iCount = 1; $sText = 'This is a text'; $oPage = new WebPage('test'); $fRank = 1.25; $hDir = ('/opt'); // No PHP closing tag
$iCount = 1; $sText = 'This is a text'; $oPage = new WebPage('test'); $fRank = 1.25; $hDir = ('/opt'); // No PHP closing tag
没有前缀的变量应该是混合类型(可以是字符串,数组或对象)
例:
public function Set($sAttCode, $value) {
...
}
- 用于循环计数器的局部变量(例如$ i,$ j)可能没有前缀。
- 在涉及大量数字变量的数学计算中,可以删除此类变量的前缀(例如$ x,$ y,$ xMax…)是可以接受的
- 由于历史原因,WebPage类(及相关类)以及MetaModel中的某些部分使用不同的约定:变量均为小写字母,并带有下划线字符以分隔单词。对象属性(成员)使用m_前缀作为前缀。
功能命名
函数和对象方法使用混合大小写约定命名(即所有小写字母,每个单词开头均带有大写字母)。即使PHP对职能的名称不区分大小写,这也有助于区分项目的功能与通常用小写形式编写的PHP内置功能。职能名称通常基于表示正在执行的职能的动词。
例:
关于可视化和其他关键字顺序,[ /php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md#1-overview]PSR-2状态 :
可视化必须在所有属性和方法上声明;摘要和最终结果必须在可视化之前声明;必须在可视化之后声明静态。
自 2020 年 8 月 28 日以来,此约定已更改。基本代码将随时更新(由于错误/增强原因修改时按函数函数)。
缩进使用制表符(将编辑器配置为将制表符显示为4个字符宽)
开括号(对于classes, functions, if/else, try/catch, switch)必须放在下一行,闭括号必须在正文之后的下一行。闭合支架必须与相应的开口支架垂直对齐。
例:
class NiceWebPage extends WebPage { ... public function SetContentType($sContentType) { if($sContentType == '') { // Do something } else { // Do something different } }}
编写职能调用时,在职能名称后紧跟在括号之间提供的参数:职能名称与参数列表之间没有空格。每个参数列表中的逗号后跟一个空格。
例:
二进制运算符(==,+,&&)被空格包围。
例外:串联运算符。不被空格包围,因为当使用非比例字体时,这倾向于使行更紧凑,并且不会降低代码的可读性。
例:
if (($aPerson[$this->iPersonId][0]) && ($aPerson[$this->iPersonId][0] != "")) {
if ($this->sSynchronizeOrganization == 'yes') {
$sName = $aPerson[$this->iPersonId]['first_name'].' '.$aPerson[$this-
>iPersonId]['last_name'];
}
}
php文件
存储库本身描述了编写PhpDoc的规则:请参阅[ /Combodo/iTop/tree/develop/.doc]/.doc/README.md.
这本身就是一个主题,请参见专用的Wiki页面:[ ttps://]如何翻译