1. 统一的编码规范

编码规范往简单说其实就是三个方面:

  1. 换行
  2. 空格
  3. 变量命名

放在 PHP 里面,还有一些附加的地方,比如关键字大小写,语法糖的使用(array()[]等)的问题。之前整理过PSR的标准,也找过php-cs-fixer这样的工具。这些都是规范代码的重要手段。有统一的标准,配合上工具的检查,形成统一的编码约束不是什么难题。

没有规范,不同的人甚至同一个人在空格、换行和命名上都有可能是十分随意的。代码一长,回使整个文件看起来无比杂乱。

典型的例子比如:ifelse的组合,可以写出无数种风格,比如:

<?php # 单语句不写大括号 if (true) doSomething(); # else 大括号换行 十分占篇幅 if (true) {     doSomething(); } else {     doElseThings(); } # 此外还有关键字后不带空格,随意缩进等等 # ... 

再比如变量函数命名的问题上,各种混搭风格层出不穷:

<?php # 全小写 $someparam1 = null; # 首字母下环线 $_some_param_1 = null; # 某些库的类,下划线和大小写混用 class Abstract_ClassA {  } 

这里并不探讨各种写法的优缺点,只是风格需要保持统一,不要混用。

2. 良好的编码习惯

如果你仔细看过 PSR 的标准,可能也会注意到某些地方其实是标准无法涉及到的。比如一个超长的表达式在什么时候换行,如何缩进等。

这里涉及到的就是编码习惯的约束问题。

比如方法的链式的调用的问题,比如某些数据库查询的封装:

<?php # 不换行的情况下句子会很长 $result = $this->db->select('id')->where('a', 1)     ->groupBy('a')->orderBy('id', 'DESC')->result();  # 这种情况下我建议是一个条件一行,保持缩进 $result = $this->db->select('id')     ->where('a', 1)     ->groupBy('a')     ->orderBy('id', 'DESC')     ->result(); 

还有数组定义,某些数组成员字符串很长的情况下的写法:

<?php $array = ['abcdefg', 'acbdfeg', 'bcadgfe', 'cdadgef'];  # 如果成员太长,我建议拆解,这样 $array = [     'abcdefg',     'acbdfeg',     'bcadgfe',     'cdadgef', ]; 

3. 寻找最优的写法

写代码的过程中,最优的写法和编码习惯又不是同一件事情。这里要说的指的是如何遵循 PHP 的语言特性或者框架的特征,充分发挥语言和框架的能力来减少冗余。

比如在获取前端传入的参数的时候,很多时候能见到这样的代码:

<?php $param = isset($_POST['param']) ? $_POST['param'] : ''; 

更有甚者一些框架将前端传入的参数封装了一层,比如$this->request->data['param'],如果再去用isset或者array_key_exists判断,整个获取参数的语句就会变得很长。

某些情况下使用三元运算符的时候需要注意?:是可以合并使用的。

其实我们应该去尝试封装这种写法,防止同样的变量出现在一个语句中多次的情况。对于默认值的赋予,可以调研框架是否有封装提供,或者通过强制类型转换的方式进行。

还有一种情况是条件和循环嵌套的时候。比如从数组里抽取某一个字段,或者对某一个字段的值进行处理的时候,善用array_map以及引用(&)往往能节省不少工作量。但是使用的时候也要注意数组指针最后的位置。

在根据条件返回结果时,需要善用return。还有就是合理的抽象与封装。

4. review 自己的代码

除了以上提到的在日常开发中需要注意的一些问题。还有就是事后的工作。

我相信很多人在看自己以前的代码的时候都有一种其实有更好的写法的感觉。随着时间的推移自己总会有更丰富的阅历,更多的想法。偶尔 review 自己的代码也是对过去的总结,也许会有新的感知。

5. 推广给你的队友

团队项目中,队友的配合对整个代码的规范起着决定性的作用。一个团队中有一个人不遵守规范,而又要到处修改代码的时候,很快就能破坏到所有的约束。

有统一的标准,有良好的执行力才能完成这件工作。

php 代码规范简洁相关推荐

  1. 前端代码规范(es6,eslint,vue)

    2019独角兽企业重金招聘Python工程师标准>>> 前端开发规范 一.HTML 1.语义化标签 HTML5 提供了很多语义化元素,更好地帮助描述内容.希望你能从这些丰富的标签库中 ...

  2. 项目Alpha冲刺——代码规范、本次冲刺任务与计划

    作业格式 课程名称:软件工程1916|W(福州大学) 作业要求:项目Alpha冲刺(团队) 团队名称: 那周余嘉熊掌将得队 作业目标:代码规范.本次冲刺任务与计划 团队信息: 队员学号 队员姓名 博客 ...

  3. 代码规范之华为公司代码规范

    华为公司代码规范 转于http://blog.sina.com.cn/s/blog_61176a740100ffer.html 内容简要:写代码习惯以及注释的要求. 1-1:程序块要采用缩进风格编写, ...

  4. 嵌入式C语言代码规范

    C语言代码规范 参考安富莱C语言编码规范 1.文件与目录 1.文件及目录的命名规定可用的字符集是[A-Z:a-z:0-9:._-]. 2.源文件名后缀用小写字母 .c 和.h. 3.文件的命名要准确清 ...

  5. 【代码规范】google开源c\c++项目代码规范

    版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载;https://blog.csdn.net/csdn_baotai https://blog.csdn.net/csdn_baotai/a ...

  6. 关于手思3.0 代码规范

    关于手思3.0 代码规范 工程之始可能需要的工具: 1.使用CocoaPods类库管理工具.CocoaPods安装和使用教程. 2.下载安装注释插件VVDocumenter-Xcode. 3.使用代码 ...

  7. Java技术:收集16 条 yyds 的代码规范,值得一读!

    今天给大家分享关于Java技术中16 条 yyds 的代码规范,读完肯定会有帮助! 一.MyBatis 不要为了多个查询条件而写 1 = 1 当遇到多个查询条件,使用where 1=1 可以很方便的解 ...

  8. JavaScript 代码规范

    所有的 JavaScript 项目适用同一种规范. JavaScript 代码规范 代码规范通常包括以下几个方面: 变量和函数的命名规则 空格,缩进,注释的使用规则. 其他常用规范-- 规范的代码可以 ...

  9. 现代软件工程讲义 3 代码规范与代码复审

    请参考原址:http://www.cnblogs.com/xinz/archive/2011/11/20/2255971.html 第10章 代码规范与代码复审 在第9章中,同学们完成了WC程序,经过 ...

最新文章

  1. 表单之label标签
  2. 【SICP练习】38 练习1.43
  3. Python3入门笔记(1) —— windows安装与运行
  4. java 日志输出 log4j 简介
  5. 有效降低传导辐射干扰的小技巧
  6. CRM呼叫中心inbox里interact操作介绍
  7. Java中的6颗语法糖
  8. IIS 7.0 安装SSL证书过程
  9. html-css练习题 (注册表单)
  10. snmp 获得硬件信息_信息系统项目管理师(三)
  11. OJ1027: 判断水仙花数
  12. OpenShift 4 - 通过DaemonSet在指定Node上运行守护程序
  13. java datastream
  14. python 生成器_python 生成器 - 刘江的python教程
  15. 2021 年 338 道架构技术面试大厂高频题汇总(附答案详解)
  16. 使用derby导入mongodb数据
  17. js切换图片会闪动_javascript 如何实现一个闪烁图片的效果呢?
  18. java 高斯投影_高斯投影正算公式以及java代码
  19. spyder python下载_【spyder编程软件下载】spyder官方下载 v2.1.0 最新版-七喜软件园...
  20. WINDOWS蓝屏代码大全

热门文章

  1. 中文流行歌曲歌词文本挖掘
  2. 怎么编写一个用户故事
  3. php定时计划任务实现方法
  4. 学习记录555@flowable排他网关、并行网关、包容网关
  5. The Rust Programming Language - 前言
  6. 自学Python之Udacity28天入门课程笔记
  7. PyTorch学习笔记(四)Logistic回归
  8. 图像映射——计算机视觉
  9. 软件测试实验 FindBugs
  10. 检查代码质量的插件Findbugs使用说明