由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 相关文章推荐
ASP和PHP都是可以删除自身的
Apr 09 PHP
frename PHP 灵活文件命名函数 frename
Sep 09 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
Oct 22 PHP
深入解析yii权限分级式访问控制的实现(非RBAC法)
Jun 13 PHP
解析php取整的几种方式
Jun 25 PHP
如何使用PHP批量去除文件UTF8 BOM信息
Aug 05 PHP
YII CLinkPager分页类扩展增加显示共多少页
Jan 29 PHP
微信 getAccessToken方法详解及实例
Nov 23 PHP
PHP实现获取第一个中文首字母并进行排序的方法
May 09 PHP
Yii2框架中日志的使用方法分析
May 22 PHP
详解yii2使用多个数据库的案例
Jun 16 PHP
php实现与python进行socket通信的方法示例
Aug 30 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 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
php 模拟POST|GET操作实现代码
2010/07/20 PHP
PHP开发规范手册之PHP代码规范详解
2011/01/13 PHP
yii,CI,yaf框架+smarty模板使用方法
2015/12/29 PHP
简述php环境搭建与配置
2016/12/05 PHP
PHP7如何开启Opcode打造强悍性能详解
2018/05/11 PHP
JS的递增/递减运算符和带操作的赋值运算符的等价式
2007/12/08 Javascript
几个有趣的Javascript Hack
2010/07/24 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
JS字符串拼接在ie中都报错的解决方法
2014/03/27 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
2016/05/07 Javascript
Vue2.0使用过程常见的一些问题总结学习
2017/04/10 Javascript
javascript将url解析为json格式的两种方法
2017/08/18 Javascript
详解webpack-dev-server 设置反向代理解决跨域问题
2018/04/18 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
聊聊鉴权那些事(推荐)
2019/08/22 Javascript
Vue.js数字输入框组件使用方法详解
2019/10/19 Javascript
angularjs模态框的使用代码实例
2019/12/20 Javascript
python 图片验证码代码分享
2012/07/04 Python
Python中字典和JSON互转操作实例
2015/01/19 Python
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
Python爬虫天气预报实例详解(小白入门)
2018/01/24 Python
使用Python中的reduce()函数求积的实例
2019/06/28 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
澳大利亚免息网上购物:Shop Zero
2016/09/17 全球购物
《童趣》教学反思
2014/02/19 职场文书
消防安全宣传标语
2014/06/07 职场文书
2014年家长学校工作总结
2014/11/20 职场文书
财务工作失职检讨书
2014/11/21 职场文书
2015年父亲节活动总结
2015/02/12 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python