阅读更多

0顶
0踩

编程语言

转载新闻 PHP 代码规范简洁之道

2016-04-19 10:09 by 副主编 mengyidan1988 评论(0) 有5975人浏览
1.统一的编码规范

编码规范往简单说其实就是三个方面:
  • 换行
  • 空格
  • 变量命名

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

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

典型的例子比如:if 和 else 的组合,可以写出无数种风格,比如:
<?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.推广给你的队友

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

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

来源:Scholer's Blog
来自: Scholer's Blog
0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • php编码规范

    php代码规范类文档总结,提升开发效率、简洁、快速。。。

  • Pink Floyd -- The Wall

    http://www.blogcn.com/user18/yorick_dc/blog/5578871.htmlhttp://www.blogcn.com/user18/yorick_dc/blog/5684190.html有关Pink Floyd《The Wall》电影的分析------(一)screen.width/2)this.width=screen.width/2"

  • 迷幻中被压抑的愤怒和孤独:pink floyd

    乐队风格:专辑摇滚;英国迷幻/迷幻音乐;硬摇滚;前卫/艺术摇滚《echoes》是我买的最后一本pink floyd的专辑。它收录了pink floyd多年来的经典作品,但是我觉得对于pink floyd的fans而言,这并不是一本很好的合辑,因为pink floyd的作品根本不适合用来做合辑。我一向以为这支伟大乐队的作品应该一张一张专辑的听。每一支虽然都有它美妙的旋律,但是当它们合在一起的

  • 游戏《饥荒》开发架构技术分析

    翻译来自:http://forums.kleientertainment.com/topic/25850-wots-the-diff-prefabs-components-stategraphs-and-brains/ Wots The Diff?? Prefabs, Components, Stategraphs, And Brains 有啥区别? 预设,组件,状态图,大脑

  • [CF1142E] Pink Floyd

    传送门 题意:一个\(n\)个点的竞赛图,给出\(m\)条红色的边,其方向确定,其余边均为绿色,方向未知。你可以询问不超过\(2n\)次,每次询问一条绿色边的方向。要求找到一个点\(x\),使得\(x\)出发到任意一个点都有至少一条同色路径。\(n ,m\leq 10^5\)。可能会在交互过程中动态构造图。 考虑没有红色的边时怎么做。显然在询问过程中会形成若干棵绿色的外向树,每次询问...

  • 浪漫的老鼠(The tale of despereaux)电影赏析

     1. They lived in a special world, built on courage and chivalvy and honor. They pledged their lives to each other.  To fight for truth, to defend the weak, to seek justice. 我们都有一个梦想去维持世界的公正,去锄强扶弱。我们都

  • PHP 的代码简洁之道(Clean Code PHP)

    PHP 的代码简洁之道(Clean Code PHP)

  • php 代码规范简洁

    1. 统一的编码规范 编码规范往简单说其实就是三个方面: ...这些都是规范代码的重要手段。有统一的标准,配合上工具的检查,形成统一的编码约束不是什么难题。 没有规范,不同的人甚至同一个人在空格

  • 前端企业级代码规范(巨详细)

    良好的代码规范,不仅能够让代码简洁清晰,还可以减少 bug 的出现,更能够让看代码的人赏心悦目。 总结八个字: 统一 规范 方便 高效 1.编辑器风格 参考google编码风格 每行200字符后,建议换行 (若不影响...

  • PHP代码注释方法,PHP代码注释

    写在前面注释可以理解成代码中的解释和说明。使用注释不仅能提高程序的可读性,而且有利于程序的后期维护工作,注释内容不会被程序所执行。个人项目个人站点:LN电影网个人博客:L&amp;N博客PHP 的注释 PHP 注释有 3...

  • Kaggle:Bag of Words Meets Bags of Popcorn 学习记录

    *Kaggle案例分析:Bag of Words Meets Bags of Popcorn-part1项目表述: 这是一个关于情感分析的话题。Google的Word2Vec(文本深度表示模型)是一个由深度学习驱动的方法。旨在获取words内部的含义。Word2Vec试图理解单词之间的含义与语义关系, 它类似于recurrent neural nets(递归神经网络)或者深度神经网络, 但是计算效率

  • [CF1142E]Pink Floyd

    Description 这是一道交互题 有一张n个点的竞赛图,其中有m条边为粉红色,另外的边为绿色 你现在只知道这m条边的方向,你每次可以询问交互库某条绿边的方向 你需要用不超过2n次询问找到一个点x,使得对于其余所有点y,存在一条x到y的颜色相同的路径 n,m&lt;=10^5 Solution 先考虑没有粉色怎么做,这个很简单,直接维护当前的关键点x,对于每个点y询问(x,y),如果是x-&g...

  • PHP编码规范总结

    学习PHP开发也有一两年之久了,一直以来都没有说要去写...然后将经验分享出去,这样也遵循Apache Licence了嘛(^∇^),那么本文是我自己在学习PHP时所使用的一些编码规范:文件格式、命名规范、注释规范、代码风格。

  • php在线翻译,PHP 在线翻译函数代码

    代码分享给大家复制代码 代码如下:/*** GOOGLE翻译 英汉** @param string $text 翻译句* @return unknown*/function googleTran($text){if(empty($text)) return "";sleep(1);//反间碟$wf=@file_get_contents('...

  • PHP 之道

    PHP 之道 收集了现有的 PHP 最佳实践、编码规范和权威学习指南,方便 PHP 开发者阅读和查找 使用 PHP 沒有规范化的方式。本网站主要是向 PHP 新手介绍一些他们没有发现或者是太晚发现的主题, 或是经验丰富的专

  • PHP编码规范文档

    为了提高工作效率,保证开发的有效性和合理性,并最大程度提高...本规范包含PHP开发时程序编码中命名规范、代码缩进规则、控制结构、函数调用、函数定义、注释、包含代码、PHP标记、常最命名等方面的规则。 1 ...

  • php代码规范草案(phpchina)

    Zend Framework规范以下文为主:Zend Framework 编码规范http://bbs.phpchina.com/viewthread.php?tid=142789二。常规规范1.变量命名与类的命名(1) 类型 + 变量名: $inum基于PHP语言弱类型的特点,以匈牙利命名法为...

  • 代码简洁之三:减少注释 增加代码可读性

    最近一直在研读《代码简洁之道》这本书,里面很多非常细致的对代码重构和简化的好的思想和方法值得学习,我做了一些笔记,在之前的一些博客中也有涉及。 关于注释,各家有各家的想法。有人认为注释越详细越好,从...

  • 代码的规范性

    保证您的代码规范,保证结构表现行为相互分离。 2.简洁。保证代码的最简化,避免多余的空格、空行,保持代码的语义化,尽量使用具有语义的元素,避免使用样式属性和行为属性。任何时候都要用尽量简单、尽量少的元素...

  • 代码之美,正则之道

    甚至, 你压根没遇到过上述情况, 你只是一遍又一遍的调用 replace 而已 (把非搜索文本全部替换为空, 然后就只剩搜索文本了), 面对别人家的简洁高效的语句, 你只能在心中呐喊, replace 大法好. 为什么要学正则表达式. ...

Global site tag (gtag.js) - Google Analytics