由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 相关文章推荐
一个程序下载的管理程序(三)
Oct 09 PHP
mysq GBKl乱码
Nov 28 PHP
php将数据库导出成excel的方法
May 07 PHP
检查php文件中是否含有bom的函数
May 31 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
探讨:如何编写PHP扩展
Jun 13 PHP
深入解析PHP中逗号与点号的区别
Aug 05 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
Aug 10 PHP
ThinkPHP基本的增删查改操作实例教程
Aug 22 PHP
PHP向socket服务器收发数据的方法
Jan 24 PHP
php单文件版在线代码编辑器
Mar 12 PHP
yii2.0实现pathinfo的形式访问的配置方法
Apr 06 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
PHP的博客ping服务代码
2012/02/04 PHP
一个简单且很好用的php分页类
2013/10/26 PHP
PHP获取时间排除周六、周日的两个方法
2014/06/30 PHP
PHP之autoload运行机制实例分析
2014/08/28 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
2021/03/04 PHP
js程序中美元符号$是什么
2008/06/05 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
深入理解JavaScript编程中的同步与异步机制
2015/06/24 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
2015/09/01 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
vue webuploader 文件上传组件开发
2017/09/23 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
2017/11/27 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
vue2.0 路由模式mode=&quot;history&quot;的作用
2018/10/18 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
[01:02:48]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 LGD vs OG
2018/04/02 DOTA
使用python编写脚本获取手机当前应用apk的信息
2014/07/21 Python
Python中列表的一些基本操作知识汇总
2015/05/20 Python
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
对python中if语句的真假判断实例详解
2019/02/18 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
与UNIX有关的几个名词
2015/09/17 面试题
超市开业庆典策划方案
2014/05/14 职场文书
导游词之青岛太清宫
2019/12/13 职场文书
python超详细实现完整学生成绩管理系统
2022/03/17 Python
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技