如何减少bug(php 版本)
来源:互联网 发布:中国it从业人数 编辑:程序博客网 时间:2024/06/04 23:36
重点内容变量声明在使用
foreach 循环要注意赋值,特别是里面有if 判断时;
eg :
$arr = [ ['id'=>1, 'name' => 'hhee'], ['id'=>0, 'name' => 'hhee0'], ['id'=>3, 'name' => 'hhee0'], ['id'=>4, 'name' => 'hhee0'],]$result = $temp = array();foreach($arr as $v){ $temp['title'] = 'xxx'; if($v['id']==0){ $temp['extra'] = 'extra'; } $result[] = $temp;}
ok 这里就出问题了
$result = [ ['title' => 'xxx'], ['title' => 'xxx', 'extra' => 'extra'], ['title' => 'xxx', 'extra' => 'extra'], ['title' => 'xxx', 'extra' => 'extra'],];
这就有可能跟我们预期的不一样了
变量类型,比如count(xx) , 如果xx 不是数组,返回的结果为1,有时候我们从缓存取数据,可能因为key 不存在,返回false , 如果这时候你把它当数组使用,就会出问题
缓存key 不存在,返回false ,如果你业务 存进去就是一个bool ,这时候就会出问题.
array_push(
array_merge 参数必须都是数组,否则报错,如果在生产环境,一般屏蔽了报错,这时候得到的结果就是一个bool 的false
变量比较,php 是弱类型语言,比如
1 == '1' true1 == '1a' true '1a' 会被转换成整型(1),false == '0' truefalse == '0q' truestrpos() , 这个函数,可能返回0 ,表示在第0个位置匹配到了子字符串,所以不能直接if(!strpos('xxx','x')){}, 而是 if(strpos('xxx','x')!==false){}
切记 如果要做类型比较的时候,注意类换转换问题
if 做逻辑判断的时候
if(a == 1){ xxx}elseif(a == 3){ xxx}
这代码可能就会出现bug,最好是补全else这个分支
注意return , 一个方法最好只返回一种数据结构
if(a == 0){ return 'a';}elseif(a == 1){ return array(0,1)}elseif(a < 0 ){ return array('ok' => false , 'msg' => 'a 不能是小于0 的数' )}return false;
以上这种写法是错误的,调用这个函数的人,就要去判断多种情况,很容易产生bug,应该统一返回的数据结构。 比如 array('ok' => , 'msg' => 'msg' , 'data' => 'data')
, 类似这种类型,具体情况具体分析。
try catch 问题
try{ DB::beginTrans(); DB::exec("xxxx"); DB::exec("xxx"); }catch(Exception $e){ DB::rollback(); } DB::commit();
这里要注意,try 里面如果出现异常,那么就会rollback ,事务已经不存在了,这时候在commit 就会出错
代码提交
我们在使用svn , 或者git 的时候,提交的时候一定要注意在检查一遍,因为你在本地开发,可能有些文件需要根据本地环境进行适当修改,如果不小心提交上去了,那么测试环境,肯定会出现错误,如果一不小心合到online版本,那么可能就是个灾难了,线上环境就会出错!(我就差点出现这个错误。还好在性能测试阶段发现了)
- 如何减少bug(php 版本)
- 如何减少bug
- 如何减少BUG
- 如何减少bug
- 程序员如何减少代码的BUG量
- Java基础学习总结(81)——如何尽可能的减少Java代码中bug
- PHP版本5.*的BUG
- 如何减少PHP-FPM的内存占用
- ddcms的一个bug(php版本不兼容问题)
- 关于程序员如何减少程序Bug的若干建议
- 测试人员如何减少产品的遗留bug
- 如何减少换页错误(如何减少缺页中断)
- 如何查看php版本
- 如何减少php代码低级错误及修改流程
- 关于减少BUG的思考
- 注重代码质量,减少bug
- 怎么减少编程中的 bug ?
- php mongo扩展 1.2.9版本的一个bug
- Eclipse下的Android工程改名
- 最小费用流bellman-ford算法总结
- 链表中环的入口节点
- 赛码网OJ题目--股神
- 设计模式之禅
- 如何减少bug(php 版本)
- magento 修改xml的布局
- 线段树的构造 II
- Ubuntu14.04 LTS下破解myeclipse2015
- Wireshark入门与进阶系列四之过滤语法
- 设计莫原则和模式
- Struts2 return JSON data and convert the date field
- hdu4322 Candy 最小费用最大流
- 多线程_02_实现线程的方式