由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 相关文章推荐
PHP 截取字符串函数整理(支持gb2312和utf-8)
Feb 16 PHP
php URL跳转代码 减少外链
Jun 25 PHP
PHP中的生成XML文件的4种方法分享
Oct 06 PHP
php设置编码格式的方法
Mar 05 PHP
php读取csv实现csv文件下载功能
Dec 18 PHP
PHP判断变量是否为0的方法
Feb 08 PHP
使用ThinkPHP+Uploadify实现图片上传功能
Jun 26 PHP
php cookie名使用点号(句号)会被转换
Oct 23 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
Oct 30 PHP
php判断一个数组是否为有序的方法
Mar 27 PHP
php设计模式之委托模式
Feb 13 PHP
PHP面向对象程序设计组合模式与装饰模式详解
Dec 02 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学习 计数器实例代码
2008/06/15 PHP
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
apache和PHP如何整合在一起
2015/10/12 PHP
jQuery代码优化之基本事件
2011/11/01 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
AngularJS创建自定义指令的方法详解
2016/11/03 Javascript
详解JS获取HTML DOM元素的8种方法
2017/06/17 Javascript
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
vue iview实现动态路由和权限验证功能
2018/04/17 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
2019/04/26 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
python self,cls,decorator的理解
2009/07/13 Python
压缩包密码破解示例分享(类似典破解)
2014/01/17 Python
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
浅析matlab中imadjust函数
2020/02/27 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
django配置app中的静态文件步骤
2020/03/27 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
美国在线眼镜店:GlassesShop
2018/11/15 全球购物
小学生新学期寄语
2014/01/19 职场文书
餐厅经理岗位职责和岗位目标
2014/02/13 职场文书
公司营业员的自我评价
2014/03/04 职场文书
保护黄河倡议书
2014/05/16 职场文书
小学教师读书活动总结
2014/07/08 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python