由php if 想到的些问题


Posted in PHP onMarch 22, 2008
<?php  
/* PHP code */  
header("Content-type: text/javascript");  
if (!haveCookie('cookieName')) {  
   // ... do something  
?>  
/* Javascript code */  
if ('undefined' == typeof document.cookie['cookieName']) {  
    setCookie('cookieName', 3600);  
}     // ... do something with Javascript  
<?php  
}  
?>

粗看起来代码已经无懈可击,我们亲爱的 小马 还是发现了问题的存在。就是在 Javascript 中的那个判断是永远为 true
if ('undefined' == typeof document.cookie['cookieName']) {  
    // ...  
}

因为这段代码是在 PHP 端有个前提,就是

if (!haveCookie('cookieName'))的时候,才会在客户端显示。那么,当不满足这一条件,这段代码自然就不会扔给客户端。这样说似乎有点笼统,那么先撇开 Javascript 代码,我们就单纯使用 PHP 代码表述一下

<?php  
header("Content-type: text/javascript");  
if (!haveCookie('cookieName')) {  
   if (!haveCookie('cookieName')) {  
       setCookie('cookieName');  
   }  
}  
?>

这样就显得清晰了很多,并很容易就能发现问题所在 -- 我们在不经意间就多做了一次判断,虽然这是 Javascript 在客户端执行的。

总结下,本人从这段代码想到的些废话:

代码越长,不见得效率就越高
在不影响逻辑和流程的情况下,尽量将多个判断写在一起
尽量将低复杂度的函数放前判断
过多的判断容易造成程序效率降低,在判断中使用高时间复杂度的函数时尤其要注意
如果发现 if 嵌套得太多,就得重新考虑流程和算法
健壮的代码不是靠过分的判断保证而成的
将代码简化后,会发现很多还未发现的问题
过多的判断另个角度理解,是缺乏对代码的信心
最后,再次感谢 小马 同志。

PHP 相关文章推荐
基于initPHP的框架介绍
Apr 18 PHP
php json_encode值中大括号与花括号区别
Sep 30 PHP
PHP6 中可能会出现的新特性预览
Apr 04 PHP
一个php生成16位随机数的代码(两种方法)
Sep 16 PHP
php简单获取目录列表的方法
Mar 24 PHP
PHP浮点数精度问题汇总
May 13 PHP
简单概括PHP的字符串中单引号与双引号的区别
May 07 PHP
php 使用curl模拟ip和来源进行访问的实现方法
May 02 PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 PHP
php解压缩zip和rar压缩包文件的方法
Jul 10 PHP
关于Curl在Swoole协程中的解决方案详析
Sep 12 PHP
设定php简写功能的方法
Nov 28 PHP
php实现mysql数据库备份类
Mar 20 #PHP
php 常用字符串函数总结
Mar 15 #PHP
php str_replace的替换漏洞
Mar 15 #PHP
PHP执行速率优化技巧小结
Mar 15 #PHP
请php正则走开
Mar 15 #PHP
可以在线执行PHP代码包装修正版
Mar 15 #PHP
PHP Token(令牌)设计
Mar 15 #PHP
You might like
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
微信公众平台开发之天气预报功能
2015/08/31 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
在表单提交前进行验证的几种方式整理
2013/07/31 Javascript
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
node.js中的fs.lstatSync方法使用说明
2014/12/16 Javascript
JS中prototype的用法实例分析
2015/03/19 Javascript
jQuery实现购物车计算价格功能的方法
2015/03/25 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
2015/06/20 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
2015/09/01 Javascript
Javascript实现鼠标框选操作  不是点击选取
2016/04/14 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
微信小程序实现城市列表选择
2018/06/05 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
关于vue.js中实现方法内某些代码延时执行
2019/11/14 Javascript
vue 子组件watch监听不到prop的解决
2020/08/09 Javascript
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
python 布尔操作实现代码
2013/03/23 Python
python正则实现计算器功能
2017/12/14 Python
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
Python使用re模块实现信息筛选的方法
2018/04/29 Python
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
Python类装饰器实现方法详解
2018/12/21 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
开学典礼策划方案
2014/05/28 职场文书
小学兴趣小组活动总结
2014/07/07 职场文书
中学生打架检讨书
2014/10/13 职场文书
解析python中的jsonpath 提取器
2022/01/18 Python
python如何为list实现find方法
2022/05/30 Python