由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来处理多个提交任务
Oct 09 PHP
信用卡效验程序
Oct 09 PHP
PHP数组无限分级数据的层级化处理代码
Dec 29 PHP
解析PHP处理换行符的问题 \r\n
Jun 13 PHP
PHP中实现生成静态文件的方法缓解服务器压力
Jan 07 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
May 04 PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
PHP实现定时执行任务的方法
Oct 05 PHP
PHP定时执行任务的3种方法详解
Dec 21 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
Jul 27 PHP
PHP进阶学习之类的自动加载机制原理分析
Jun 18 PHP
TP5框架实现自定义分页样式的方法示例
Apr 05 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/12/15 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
PHP输入流php://input介绍
2012/09/18 PHP
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
在JavaScript并非所有的一切都是对象
2013/04/11 Javascript
web 屏蔽BackSpace键实例代码
2016/12/24 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
Nodejs中的require函数的具体使用方法
2019/04/02 NodeJs
基于Vue中使用节流Lodash throttle详解
2019/10/30 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
js实现图片实时时钟
2020/01/15 Javascript
[51:05]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第一局
2016/03/06 DOTA
[00:43]TI7不朽珍藏III——幽鬼不朽展示
2017/07/15 DOTA
Python查看多台服务器进程的脚本分享
2014/06/11 Python
python利用beautifulSoup实现爬虫
2014/09/29 Python
总结python爬虫抓站的实用技巧
2016/08/09 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
2020/01/28 Python
python如何更新包
2020/06/11 Python
python+selenium自动化实战携带cookies模拟登陆微博
2021/01/19 Python
css3实现波纹特效、H5实现动态波浪效果
2018/01/31 HTML / CSS
一些Solaris面试题
2013/03/22 面试题
MVC的各个部分都有那些技术来实现?如何实现?
2016/04/21 面试题
后勤采购员岗位职责
2013/12/19 职场文书
出纳会计岗位职责
2014/03/12 职场文书
2015年禁毒宣传活动总结
2015/03/25 职场文书
小学少先队活动总结
2015/05/08 职场文书
2015年银行个人工作总结
2015/05/14 职场文书
制定企业培训计划的五大要点!
2019/07/10 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书
python实现大文本文件分割成多个小文件
2021/04/20 Python
python基础之文件处理知识总结
2021/05/23 Python
Redis全局ID生成器的实现
2022/06/05 Redis