我们写代码的时候,一个好的编码规范,对我们来说能够起到很多意向不到的效果。至少会有一下的好处:

  1. 提高我们的编码效率。整齐划一的代码方便我们进行复制粘贴嘛!
  2. 提高代码的可读性。
  3. 显示我们专业。别人看到了我们的代码,发现整个代码的书写流程都整齐划一,瞬间逼格就上去了!
  4. 方便团队协同工作。大家使用同一的规范,这样就消除了五花八分的书写方式,同一协调!

编码规范包含两大块,代码规范和注释规范

其实我们所写的php脚本,其实也就是由两大块组成的,即对代码的书写、对代码的注释!不同的框架,甚至不同的公司,对这方面都会有所不同,这里只是已将之言,仅仅是对自己的书写规范进行一个总结!希望能对其他的朋友以启示

代码的书写规范

文件夹的命名:
文件夹同一使用小写字母。如存放控制器的文件夹,直接命名为controller即可
文件的命名:
如果是类文件的话,那么文件的命名应该同类名称保持一致,统一使用大驼峰。如Session.class.php , 对应类名称为Session,如果是普通的工具脚本,那么统一使用小驼峰,如common.php
类名称的命名:
类名称同一使用大驼峰,Cookie类
方法名的命名:
统一使用小驼峰,一般使用 动词 + 名次 的形式来描述该方法的功能,如sendMessage,发送短信。
在面向对象中,遵循同样的规则,但是个别地方有所区别:

public getUserName()
protected _getTotalAmount()
private _setBlanceAmount()
变量的命名规范:

关于变量,我们需要多说几点:

1.无论在面向对象还是非面向对象的语法中,变量统一使用小驼峰,如:$workYears。
但是在面向对象中又有所不同,public 、 protected 、 private ,protected或者private属性的时候,前面加上了 _ 作为区别

public $startPosition = 1;
protected $_salaryAmount =1000;
private $_sex = 'formale';

2.如果是常量的话,统一使用大写,中间使用下划线进行分割。

define('CURRENT_SCRIPT', 'index.php');
const TRANSACTION_TYPE = 'income';

3、全局变量,使用大驼峰,前缀加上 _ ,所有的单词首字母大写。因为知道一个变量的作用域是非常重要的,所以局部变量和全局变量应该很明显的进行分开!

$_System_Config;
$_Root_Path;

缩进符
关于编码的缩进符号,我们统一使用制表符缩进!也许有的人会问为什么不适用空格缩进的呢?
原因很简单,大部分的编辑器都支持制表符等于多少个空格,而使用空格就没得调了!

运算符号
所有的两元运算符号,都应该前后使用空格进行

$name = 'zero';
$age > 18 ? 'adult' : 'children';

常见的流程语句规划
我们约定,所有的流程语句的花括号都单独占据一行。理由:如果遇到较为复杂的业务逻辑,花括号会出现很多的嵌套,这样一来我们会混淆个个对应的花括号!
1、分支语句

if($age >= 18 && $age <= 30)
{echo 'young man';
}
else if($age > 30 && $age <= 60)
{echo 'middle aged';
}
else
{echo 'old man';
}//下面这段代码高手我们一个问题,在if语句中,即使在可以不要花括号的情况下,花括号也是要写上的
if($age > 60)
{echo 'I am very old';
}switch($status)
{case 'forbiden':echo 'login forbidden';break;case 'normal':echo 'login in';break;default:echo 'status is wrong' :break;
}

2、循环语句

while($condition)
{statesments......;
}foreach($arrayList as $arrayKey => $arrayItem)
{states......;
}
do
{statements......;
}
while($condition)for($start; condition; changenumber)
{statements......;
}

2、注释的书写规范
很多人说好的代码是不需要注释的,其实,个人认为这是一句很扯淡的话(也可能他是对的,除非整个团队就他一个人,他包办了一切,不用看别人的代码)。
个人的观点是:多写注释,无论是对团队的其他人,还是对自己都是非常友好的!
根据个人的经验来看,注释至少有以下几个作用:
1、有利于提高代码的可读性,毕竟读你的注释要比读你的代码要容易的多!
2、有利于规划自己的代码布局!之所以这么说,是因为和代码注释的种类有关。“有利于代码的布局”,这种看着有点悬的事,光说是说不明白的,我们需要实实在在的例子做支撑!
3、由于我们的注释规范是按照phpdocumentor的要求,所以通过这个工具,还可以生成一份对代码的总体说明,相当于一个使用说明书!

代码注释的种类

块注释

块注释,个人认为主要用在了三个地方。对php脚本的描述、对一个大的功能模块的描述、在一行之内不能写完注释的时候,也应该放在块注释中

行注释

行注释,个人认为他是配合块注释进行工作的!一般用于描述一个大的功能模块的具体细节!

从上面的例子中我们可以看一下代码的布局大致是怎么回事,但是还需要我们在实践中慢慢摸索

下面附上一些php的编程规范,给大家参考下
一、文件标记:
1.所有php文件,其代码标记均采用完整php标签,不建议使用短标签(短标签容易和xml混淆,php从5.4开始默认不支持短标记)。
2.对于只有php的代码文件,建议省略结尾处的‘?>’。这是为了防止多余的空格或其他字符影 响到代码。

二、文件和目录命名
1.程序文件名和目录名均采用有意义的英文命名,不使用拼音和无意义的字母,只允许出现字母、数字、下划线和中划线字 符,同时必须以‘.php’结尾(模板文件除外),多个词间使用驼峰命名法。

例://类统一采用:DemoTest.class.php//接口统一采用:DemoTest.interface.php//其他按照各自的方式:demoTest.{style}.php

三、文件目录结构
规范的目录结构有助于团队协作开发和后期维护。

——app            //独立的应用
——class          //单个的类文件,共用的类文件
——conf/inc    //配置文件或目录
——data          //数据文件或目录
——doc           //程序相关文档
——htdocs       //document_root
——images       //所有图片文件存放路径
——css            //css文件
——js               //js文件
——lib              //共用类库
——template    //模板文件
——tmp            //临时文件目录
——cache    //缓存文件
——session  //SESSION文件
——template_c    //编译后的模板文件
——other
——upload      //上传文件
——manage    //后台管理文件目录

四、命名规范
1.变量命名:php中变量区分大小写,一个有效的变量名由数字、字母或下划线开头,后面跟任意数量的字母、数字、下划线。
a)程序整体以驼峰命名法,以小写字母开始,同时命名要有意义。(function displayName())
b)PHP全局变量键值两边都有‘_’,中间用驼峰命名法命名。($_GLOBAL['_beginTime_'])
c)普通变量整体采用驼峰命名法,建议在变量前加表示类型的前缀。不确定类型的以大写字符开头。
d)函数名要尽量有意义,尽量缩写。
2.类及接口命名:
a)以大写字母开头。
b)多个单词组成的变量名,单词之间不用间隔,各个单词首字母大写。
c)类名与类文件名保持一致。
d)程序中所有的类名唯一。
e)抽象类应以Abstract开头。
接口命名规则:
i)采用和类相同的命名规则,但在其命名前加‘i’字符,表示接口。
ii)尽量保持和实现它的类名一致。
3.数据库命名:在数据库相关命名中,一律不出现大写。
a)表名均使用小写字母。
b)表名使用同一的前缀且前缀不能为空。
c)对于多个单词组成的表名,使用‘_’间隔。
d)表字段命名规则。
i)全部使用小写字母。
ii)多个单词不用下划线分割。
iii)给常用字段加上表名首字母做前缀。
iv)避免使用关键字和保留字。

五、注释规范
1.程序注释:写在代码前面而不是后面,单行代码按照习惯写在代码尾部;大段注释采用/**/的方式,通常为文件或函数的顶部,代码内部使用’//’;注释不宜太多;代码注释应该描述为什么而不是做什么,给代码阅读者提供最主要的信息。
2.文件注释:文件注释一般放在文件的顶部,包括本程序的描述、作者、项目名称、文件名称、时间日期、版本信息、重要的使用说明(类的调用,注意事项等)。版本更改要修改版本号,并加上mofify注释。
3.类和接口注释:按照一般的习惯,一个文件只包含一个类。
4.方法和函数注释:方法和函数的注释写在前面,通常需要表明信息的主要可见性、参数类型和返回值类型。

  /***    连接数据库*    @param string $dbhost    数据库服务器地址*    @param string $dbuser    数据库用户名*    @param string $dbpwd    数据库密码*/

六、代码风格
1.缩进和空格:使用4个空格做为缩进,不使用Tab键;变量赋值时,等号两边留出空格。($url = '$_GET['url']';)
2.语句断行:尽量保证程序语句一行即一句;尽量不要使一行的代码过长,80个字符以内;如果一行的代码太长,请使用类似于‘.=’方式断行连接;执行数据库的sql语句操作时,尽量不要再函数内写sql语句,而先用变量定义sql语句,然后在执行操作的函数中调用定义的变量。
3.更好的习惯:在代码中使用下面列举的方法,可以使代码更优雅。

    1):多使用php中已经存在的常量,而不要自己定义。例://换行echo $msg."\r\n";echo $msg,PHP_EOL;php中PHP_EOL是一个预定义常量,表示一行结束,随着所使用系统不同,使用PHP_EOL代码可移植性更高2):在echo中使用逗号做连接符,比用‘.'做连接符代码更美观。3):单引号的效率高于双引号,但二者在使用上有区别,学会使用printf函数。例://echoecho  '每个'.$scholl.'大约有'.floor($avg).'个学生';//printf$format = '每个%s大于有$d个学生';printf($format,$school,$avg);4)  :详细的注释5):不要 滥用语法糖,语法糖就是语言中的潜规则,即不具备普遍代表性的语法。

为什么我们要培养自己的编码规范?相关推荐

  1. python 编码规范 PEP8整理

    我是用Python的IDE:pycharm来编写Python代码的,用IDE编写代码有一个好处就是语法高亮,智能提示.Python的代码样式规范称之为PEP 8规范,每次编写代码如果有出现不符合PEP ...

  2. java编码规范文档 下载_软件项目实训及课程设计指导——制定待开发项目中各种文档的规范...

    软件项目实训及课程设计指导--制定待开发项目中各种形式文档的规范 1.制定对课程设计项目开发过程中的规范性要求 (1)从"形式"到"内容"两个方面控制和要求开发 ...

  3. JavaScript最全编码规范

    转载: JavaScript最全编码规范 类型 ●基本类型:访问基本类型时,应该直接操作类型值 ●string ●number ●boolean ●null ●undefined var foo = ...

  4. 【C++】Google C++编码规范(三):智能指针

    [C++]Google C++编码规范(一):作用域 [C++]Google C++编码规范(二):类 std::unique_ptr std::unique_ptr是C++11标准里新推出的智能指针 ...

  5. 《阿里巴巴编码规范(JAVA)》学习认证考后感

    image.png <阿里巴巴 Java 开发手册>是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,系统化地整理成册,回馈给广大开发者. 本手册的 ...

  6. google python代码规范_如何用好python编码规范,写一手漂亮的代码

    前一段时间在编写python 代码的时候编辑器中一直在提示规范问题,因为强迫症的原因,我决定遵循python 的编码规范去编码,然后把需要注意的点记录下来, 帮助自己和大家一起成长. 这是我的main ...

  7. Python最简编码规范

    0.前言 本文是阅读<Python Coding Rule>之后总结的最为精华及简单的编码规范,根据每个人不同喜好有些地方会有不同的选择,我只是做了对自己来说最简单易行的选择,仅供大家参考 ...

  8. 华为java安全编码规范_Java安全编码之SQL注入

    随着互联网的发展,Java语言在金融服务业.电子商务.大数据技术等方面的应用极其广泛.Java安全编码规范早已成为SDL中不可或缺的一部分.本文以Java项目广泛采用的两个框架Hibernate和My ...

  9. 分享GitHub上一位老外的嵌入式C编码规范(收藏细读)

    简 介: 本文分析在头条上分享GitHub上一位老外的嵌入式C编码规范(收藏细读):嵌入式大杂烩. 关键词: 嵌入式,C语句,编程规范 分享GitHub上一位老外的嵌入式C编码规范(收藏细读) §01 ...

最新文章

  1. 代码流程图生成器_【进阶Python】第五讲:迭代器与生成器
  2. luoguP4213 【模板】杜教筛(Sum)杜教筛
  3. vue 根据for循环变量值设置子容器的样式
  4. 打印机提示手动进纸解决办法
  5. python链接mysql的代码
  6. C++ 信息管理系统
  7. stagefright概述
  8. 智能爆炸的真实(下)
  9. 【C语言】案例四十九 学生档案管理系统
  10. Lambert漫反射模型
  11. SpaceSniffer 磁盘清理软件 windows
  12. react调度时间原理_使用React,Twilio和Cosmic JS构建约会调度程序
  13. C语言实现设置桌面壁纸
  14. DATABASE_ROUTERS在Django中使用多个MySQL数据库进行配置
  15. 有意思的概率——似然值似然函数及最大似然估计讲解
  16. pmp证书报考流程+pmp备考+pmp学习干货+pmp指南汇总
  17. Effective STL之算法
  18. ruoyi 页面跳转_若依及vue-element-admin vue 管理系统第三方拼多多登录
  19. H5音频处理——踩坑之旅
  20. c语言监视,C语言设置监视哨的顺序查找、折半查找算法的实现

热门文章

  1. java根据模板导出word
  2. 在WordPress网站上添加图片点击放大效果
  3. 前端JS/VUE如何生成Vcard或其他文件--导出任意后缀的文件
  4. 随机数算法,伪随机加概率储蓄模拟真随机
  5. 记CVTE2016年春招暑期实习生招聘应聘经历
  6. 不知道取什么名字好呢……
  7. Linux利用at设置任务自动化,Linux未来任务的调度——at,batch,crontab命令
  8. 讲解用Pathping分析网络问题
  9. Docker开启远程管理端口2375
  10. 毕业设计-基于微信小程序的课程在线学习系统