由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 相关文章推荐
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
Mar 15 PHP
PHP5 面向对象程序设计
Feb 13 PHP
PHP永久登录、记住我功能实现方法和安全做法
Apr 27 PHP
php超快高效率统计大文件行数
Jul 05 PHP
PHP获取一年有几周以及每周开始日期和结束日期
Aug 06 PHP
php实现评论回复删除功能
May 23 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
PHP实现简易计算器功能
Aug 28 PHP
详解PHP 二维数组排序保持键名不变
Mar 06 PHP
PHP使用DOM对XML解析处理操作示例
Jul 04 PHP
php使用curl伪造浏览器访问操作示例
Sep 30 PHP
YII2框架使用控制台命令的方法分析
Mar 18 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
Javascript 继承机制的实现
2009/08/12 Javascript
jquery photoFrame 图片边框美化显示插件
2010/06/28 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
javascript简单实现图片预加载
2014/12/03 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
jQuery检测返回值的数据类型
2015/07/13 Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
2016/06/07 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
2017/07/26 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
2017/09/21 jQuery
Vue组件化开发思考
2018/02/02 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
2018/10/25 Javascript
vue中的过滤器实例代码详解
2019/06/06 Javascript
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
使用PYTHON接收多播数据的代码
2012/03/01 Python
Python中变量交换的例子
2014/08/25 Python
web.py 十分钟创建简易博客实现代码
2016/04/22 Python
python通过cookie模拟已登录状态的初步研究
2016/11/09 Python
python无限生成不重复(字母,数字,字符)组合的方法
2018/12/04 Python
python虚拟环境完美部署教程
2019/08/06 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
css3动画效果小结(推荐)
2016/07/25 HTML / CSS
钳工实习自我鉴定
2013/09/19 职场文书
公司行政经理岗位职责
2013/12/24 职场文书
创建服务型党组织实施方案
2014/02/25 职场文书
质量月活动策划方案
2014/03/10 职场文书
贺卡寄语大全
2014/04/11 职场文书
测绘工程专业求职信
2014/07/15 职场文书
个人委托书范文
2015/01/28 职场文书
学术会议开幕词
2016/03/03 职场文书
2019大学生社会实践报告汇总
2019/08/16 职场文书