热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JoshChen_php新手进阶高手不可或缺的规范介绍

所以,今天就整理了一下PHP的规范,让大家参考参考。就像大家常说的一句话,“规矩是死的,人是活的。”。是的,但是,在规矩中成长的人都会拥有一堆非常让人羡

所以,今天就整理了一下PHP的规范,让大家参考参考。就像大家常说的一句话,“规矩是死的,人是活的。”。是的,但是,在规矩中成长的人都会拥有一堆非常让人羡

PHP规范
1. 为什么要编码规范
•编码规范(code conventions)对于程序员而言尤为重要,有以下几个原因:
1.在一个软件的生命周期中,80%的花费用于维护。

2.几乎没有任何一个软件在其整个生命周期中均由最初的开发人员来维护。

3.编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码。

4.如果将源码作为产品发布,就需要确认它是否被很好地打包并且清晰无误,和其他已构建的任何产品一样。

2. 概要
•用四个空格代替tab缩进。
•去掉PHP文件底部的“?>”。
•每行程序一般少于80字符,超出部分,分成多行书写。
•每行只写一条语句,不允许把多个短语句写在一行中。
•应为文件和函数添加注释。
•应及时删除废除的注释代码。
•变量、函数的命名应规范。

3. 编辑器设定
3.1. 缩进
所有的缩进使用空格取代Tab制表符。PHP文件采用4个空格的缩进,HTML文件以及HTML文件中嵌入的Javascript代码采用2个空格的缩进;单独的 Javascript以及CSS文件采用4个空格的缩进。

3.2. 字符编码
所有PHP、HTML文件均保存为No Bom UTF-8的字符编码。

4. 代码布局
4.1. 文件底部
去掉文件底部 “?>”。

4.2. 相对独立的程序块之间、变量说明之后必须加空行
示例:如下例子不符合规范

代码如下:


if (!$valid_ni()){
... // program code
}
$repssn_ind = $ssn_data['index']->repssn_index;
$repssn_ni = $ssn_data['index']->ni;
应如下书写:

if (!valid_ni(){
... // program code
}

$repssn_ind = $ssn_data['index]->repssn_index;
$repssn_ni = $ssn_data[index]->ni;


4.3. 较长的语句要分成多行书写
一行程序需小于80字符

较长的语句要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。

循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低优先级操作符处划分新行,操作符放在新行之首示例:

代码如下:


$perm_count_msg->len = NO7_TO_STAT_PERM_COUNT_LEN
+ STAT_SIZE_PER_FRAM * strlen( $len );

$act_task_table[$frame_id * STAT_TASK_CHECK_NUMBER + $index]->occupied
= $stat_poi[index]->occupied;

$act_task_table[taskno]->duration_true_or_false
= sys_get_sccp_statistic_state( $stat_item );

if (($taskno <$max_act_task_number)
&& (n7stat_stat_item_valid ($stat_item))){
... // program code
}

for ($i = 0, $j = 0; ($i <$bufferKeyword['word_index']->word_length)
&& ($j word_length); $i++, $j++){
... // program code
}


4.4. 一行只写一条语句
不允许把多个短语句写在一行中,即一行只写一条语句。示例:如下例子不符合规范

$rect->length = 0; $rect->width = 0;
应如下书写:
$rect->length = 0;$rect->width = 0;4.5. 始终包含大括号
这是因为懒于多敲两个字符而给代码清晰带来问题的又一个情形。

示例:如下例子不符合规范

代码如下:


if ($condition) do_stuff();
if ($condition)
do_stuff();
while ($condition)
do_stuff();
for ($i = 0; $i <$size; $i++)
do_stuff($i);


应如下书写

代码如下:


if (condition){
do_stuff();
}
while ($condition){
do_stuff();
}
for ($i = 0; $i <$size; $i++){
do_stuff();
}


4.6. switch写法
示例:如下例子符合规范

代码如下:


switch (){
case ‘1':
..program
break;
case ‘2':
..program
break;
}


4.7. 大括号放在哪儿
程序块的分界符(大括号‘{'和‘}')应各独占一行并且位于同一列,同时与引用它们的语句左对齐。

而在函数体的开始、类的定义、以及if、for、do、while、switch、case语句中的右大括号应放在行尾, 左大括号应与右大括号所在行的行首处在同一列

示例:如下例子不符合规范

代码如下:


for (...)
{
... // program code
}

if (...)
{
... // program code
}

function example_fun()
{
... // program code
}
应如下书写:for (...){
... // program code
}

if (...){
... // program code
}

function example_fun(){
... // program code
}


4.8. 符号之间使用空格
采用这种松散方式编写代码的目的是使代码更加清晰。

由于留空格所产生的清晰性是相对的,美国空间,所以,在已经非常清晰的语句中没有必要再留空格,如果语句已足够清晰则括号内侧(即左括号后面和右括号前面)不需要加空格,服务器空间,多重括号间不必加空格。在长语句中,如果需要加的空格非常多,那么应该保持整体清晰,而在局部不加空格。给操作符留空格时不要连续留两个以上空格。

示例:如下例子不符合规范

代码如下:


$i=0;
if($i<7) ...
if ( ($i <7)&&($j > 8) ) ...
for($i=0; $i<$size; $i++) ...
$i=($j <$size)?0:1;
do_stuff( $i, "foo", $b );


应如下书写:

代码如下:

推荐阅读
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • CSS标签、类名和ID选择器的使用区别
    本文讲解了CSS中标签选择器、类名选择器和ID选择器的使用区别,主要包括加空格和不加空格的区别。通过示例代码,说明了加空格表示选择当前节点的后代节点,而不加空格表示一个元素的多个类名不能加空格的规则。 ... [详细]
author-avatar
美丽凍人2502938087
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有