由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 相关文章推荐
在IIS上安装PHP4.0正式版
Oct 09 PHP
动易数据转成dedecms的php程序
Apr 07 PHP
php 遍历数据表数据并列表横向排列的代码
Sep 05 PHP
PHP文章采集URL补全函数(FormatUrl)
Aug 02 PHP
php number_format() 函数通过千位分组来格式化数字的实现代码
Aug 06 PHP
用PHP实现弹出消息提示框的两种方法
Dec 17 PHP
PHP中echo和print的区别
Aug 28 PHP
使用PHP+AJAX让WordPress动态加载文章的教程
Dec 11 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
Mar 21 PHP
微信 开发生成带参数的二维码的实例
Nov 23 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
Jul 22 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
Jun 17 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
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
PHP SplObjectStorage使用实例
2015/05/12 PHP
PHP封装返回Ajax字符串和JSON数组的方法
2017/02/17 PHP
js玩一玩WSH吧
2007/02/23 Javascript
基于jquery的一行代码轻松实现拖动效果
2010/12/28 Javascript
javascript面向对象编程代码
2011/12/19 Javascript
js修改input的type属性及浏览器兼容问题探讨与解决
2013/01/23 Javascript
使用jQuery插件创建常规模态窗口登陆效果
2013/08/23 Javascript
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
JS实现模拟风力的雪花飘落效果
2015/05/13 Javascript
javascript实现图片跟随鼠标移动效果的方法
2015/05/13 Javascript
jquery实现多条件筛选特效代码分享
2015/08/28 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
2015/09/24 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
2017/09/11 Javascript
js移动端图片压缩上传功能
2020/08/18 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
2017/12/23 Javascript
vue项目实战总结篇
2018/02/11 Javascript
element-ui upload组件多文件上传的示例代码
2018/10/17 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
[01:00:14]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第三场
2018/04/10 DOTA
跟老齐学Python之集合的关系
2014/09/24 Python
Python编程中的文件操作攻略
2015/10/16 Python
Python新手们容易犯的几个错误总结
2017/04/01 Python
Python实现替换文件中指定内容的方法
2018/03/19 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
django使用LDAP验证的方法示例
2018/12/10 Python
小学生自我鉴定
2013/10/12 职场文书
高三上学期学习自我评价
2014/04/23 职场文书
敬老院活动总结
2014/04/28 职场文书
市场开发计划书
2014/05/07 职场文书
2015年银行员工工作总结
2015/04/24 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
2019年二手房买卖合同范本
2019/10/14 职场文书