×

微信扫一扫,快捷登录!

二次开发-开发方法-自定义扩展-编码规范

标签: 暂无标签
本帖最后由 adminlily 于 2020-12-14 16:24 编辑

Combodo编码标准
此页面是iTop编码约定的简要说明(主要用于PHP)。 iTop编码约定与[  /php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md]PSR-2标准[/url],但也要注意很多重要的区别!

源代码文件以UTF-8编码(没有[  /wiki/Byte_order_mark]BOM[/url]在文件的开头)。

换行符必须为Lf。

PHP文件必须在文件<?php的开头使用长PHP开头的标签,但不得包含任何关闭标签的PHP。这样可以防止在文件末尾错误地添加多余的空白字符,这些空白字符将被附加到页面生成的标签上。

一个编辑器配置 文件可用[  /Combodo/iTop/blob/develop/.editorconfig]在iTop存储库中[/url].

在iTop中,所有代码均以英语编写:函数,变量,类名和注释均应以有效的英语编写。

字符串定界符
您可以使用任何喜欢的定界符,主要目的是保持代码可读性。

使用时[  /manual/en/language.types.string.php#language.types.string.syntax.heredoc]heredoc[/url] / [  /manual/en/language.types.string.php#language.types.string.syntax.nowdoc]nowdoc[/url],我们建议使用分隔符[ ttps://www.jetbrains.com/help/phpstorm/using-language-injections.html]JetBrains的语言注入[/url].

例子 :

$sHtml = '<a href="h ">';

$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


没有前缀的变量应该是混合类型(可以是字符串,数组或对象)

例:

public function Set($sAttCode, $value) {
    ...
}

允许的例外
  • 用于循环计数器的局部变量(例如$ i,$ j)可能没有前缀。
  • 在涉及大量数字变量的数学计算中,可以删除此类变量的前缀(例如$ x,$ y,$ xMax…)是可以接受的
  • 由于历史原因,WebPage类(及相关类)以及MetaModel中的某些部分使用不同的约定:变量均为小写字母,并带有下划线字符以分隔单词。对象属性(成员)使用m_前缀作为前缀。


功能命名

函数和对象方法使用混合大小写约定命名(即所有小写字母,每个单词开头均带有大写字母)。即使PHP对职能的名称不区分大小写,这也有助于区分项目的功能与通常用小写形式编写的PHP内置功能。职能名称通常基于表示正在执行的职能的动词。

例:

function DisplayWelcomePopup(WebPage $oP) {    // Code goes here}

关于可视化和其他关键字顺序,[  /php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md#1-overview]PSR-2状态[/url] :

可视化必须在所有属性和方法上声明;摘要和最终结果必须在可视化之前声明;必须在可视化之后声明静态。

空格和缩进
自 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        }    }}

编写职能调用时,在职能名称后紧跟在括号之间提供的参数:职能名称与参数列表之间没有空格。每个参数列表中的逗号后跟一个空格。

例:

$sValue = Utils::ReadParam('param1', 'default_value');

二进制运算符(==,+,&&)被空格包围。

例外:串联运算符。不被空格包围,因为当使用非比例字体时,这倾向于使行更紧凑,并且不会降低代码的可读性。

例:

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.[/url]

词典条目
这本身就是一个主题,请参见专用的Wiki页面:[ ttps://www.itophub.io/wiki/page?id=2_7_0%3Acustomization%3Atranslation]如何翻译[/url]






上一篇:二次开发-开发方法-自定义扩展-定制化思路
下一篇:二次开发-开发方法-自定义扩展-语法样例

写了  篇文章,拥有财富 ,被  人关注

您需要登录后才可以回帖 登录 | 立即注册
B Color Link Quote Code Smilies

成为第一个吐槽的人

Powered by IT 运维管理
返回顶部