由 if 想到的些问题
时间:2008-03-13
来源:互联网
原文链接: http://www.gracecode.com/Archive/Display/1076
在编写一段并不复杂的脚本的时候,发现了一个问题。先说说代码,它的主要功能是用 PHP 判断是否生成一段 Javascript,并使用 Cookie 记录状态。
<?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 在客户端执行的。
总结下,本人从这段代码想到的些废话:
在编写一段并不复杂的脚本的时候,发现了一个问题。先说说代码,它的主要功能是用 PHP 判断是否生成一段 Javascript,并使用 Cookie 记录状态。
<?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 嵌套得太多,就得重新考虑流程和算法
- 健壮的代码不是靠过分的判断保证而成的
- 将代码简化后,会发现很多还未发现的问题
- 过多的判断另个角度理解,是缺乏对代码的信心
作者: amdk6 发布时间: 2008-03-12
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28