在做过大量的代码审查后,我经常看到一些重复的错误,以下是纠正这些错误的方法。
$items = []; // ... if (count($items) > 0) { foreach ($items as $item) { // process on $item ... } }
foreach 以及数组函数 (array_*) 可以处理空数组。
不需要先进行测试可减少一层缩进
$items = []; // ... foreach ($items as $item) { // process on $item ... }
function foo(User $user) { if (!$user->isDisabled()) { // ... // long process // ... } }
这不是 PHP 特有的情况,不过我经常碰到此类情况。你可以通过提前返回来减少缩进。
所有主要方法处于第一个缩进级别
function foo(User $user) { if ($user->isDisabled()) { return; } // ... // 其他代码 // ... }
你可能遇到以下情况:
$a = null; $b = null; $c = null; // ... if (!isset($a) || !isset($b) || !isset($c)) { throw new Exception("undefined variable"); } // 或者 if (isset($a) && isset($b) && isset($c) { // process with $a, $b et $c } // 或者 $items = []; //... if (isset($items['user']) && isset($items['user']['id']) { // process with $items['user']['id'] }
我们经常需要检查变量是否已定义,php 提供了 isset 函数可以用于检测该变量,而且该函数可以一次接受多个参数,所以一下代码可能更好:
$a = null; $b = null; $c = null; // ... if (!isset($a, $b, $c)) { throw new Exception("undefined variable"); } // 或者 if (isset($a, $b, $c)) { // process with $a, $b et $c } // 或者 $items = []; //... if (isset($items['user'], $items['user']['id'])) { // process with $items['user']['id'] }
$name = "John Doe"; echo sprintf('Bonjour %s', $name);
看到这段代码你可能会想笑,不过我的确这样写了一段时间,而且我仍然会看到很多这样写的!其实 echo 和 sprintf 并不需同时使用,printf 就可以完全实现打印功能。
$name = "John Doe"; printf('Bonjour %s', $name);
$items = [ 'one_key' => 'John', 'search_key' => 'Jane', ]; if (in_array('search_key', array_keys($items))) { // process }
我经常看到的最后一个错误是 in_array 和 array_keys 的联合使用。所有这些都可以使用 array_key_exists 替换。
$items = [ 'one_key' => 'John', 'search_key' => 'Jane', ]; if (array_key_exists('search_key', $items)) { // process } 我们还可以使用 isset 来检查值是否不是 null。 if (isset($items['search_key'])) { // process }
到此这篇关于常见的5个PHP编码小陋习以及优化实例讲解的文章就介绍到这了,更多相关常见的5个PHP编码小陋习内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!
本文向大家介绍PHP程序员常见的40个陋习,你中了几个?,包括了PHP程序员常见的40个陋习,你中了几个?的使用技巧和注意事项,需要的朋友参考一下 1、不写注释 2、不使用可以提高生产效率的IDE工具 3、不使用版本控制 4、不按照编程规范写代码 5、不使用统一的方法 6、编码前不去思考和计划 7、在执行sql前不执行编码和安全检测 8、不使用测试驱动开发 9、编码
有一类DP状态方程,例如: dp[i]=min{dp[j]−a[i]∗d[j]} 0≤j<i,d[j]≤d[j+1],a[i]≤a[i+1] 它的特征是存在一个既有 i 又有 j 的项 a[i]∗d[j] 。编程时,如果简单地对 i 和 j 循环,复杂度是 O(n2) 的。通过斜率优化(凸壳优化),把时间复杂度优化到 O(n)。 斜率优化的核心技术是斜率(凸壳)模型和单调队列。 一、把状态方程变
DFS(深度优先搜索)是一种常见的算法,我们平时遇到的大部分题目都可以用 DFS 解决,但是一般情况下,这都是骗分算法,很少会有爆搜为正解的题目。因为 DFS 的时间复杂度特别高。 一、定义 DFS(深度优先搜索)定义上的深度优先搜索的思路与树的先序遍历非常相似,是针对图的搜索而提出的一种算法,下面是算法导论上的解释: 在深度优先搜索中,对于最新发现的顶点,如果它还有以此为顶点而未探测到的边,就沿
本文向大家介绍常见的python正则用法实例讲解,包括了常见的python正则用法实例讲解的使用技巧和注意事项,需要的朋友参考一下 下面列出Python正则表达式的几种匹配用法: 此外,关于正则的一切http://deerchao.net/tutorials/regex/regex.htm 1.测试正则表达式是否匹配字符串的全部或部分 2.测试正则表达式是否匹配整个字符串 3.创建一个匹配对
本文向大家介绍PHP常见算法合集代码实例,包括了PHP常见算法合集代码实例的使用技巧和注意事项,需要的朋友参考一下 许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣,下面是一些常用的算法和实例,大家可以好好学习下 一、文件夹遍历 二、九九乘法表 三、无限极递归分类 ①、递归算法 ②、引用算法 四、冒泡排序 五、选择排序 六、插入排序 七、快速排序 到此这篇关于PHP常见算法
计算机科学中最有趣的事情之一就是编写一个人机博弈的程序。有大量的例子,最出名的是编写一个国际象棋的博弈机器。但不管是什么游戏,程序趋向于遵循一个被称为Minimax算法,伴随着各种各样的子算法在一块。本篇将简要介绍 minimax 算法,并通过实例分析帮助大家更好的理解。 一、概念 Minimax算法又名极小化极大算法,是一种找出失败的最大可能性中的最小值的算法。Minimax算法常用于棋类等由两