由 php 中 if 想到的些问题

  在编写一段并不复杂的脚本的时候,发现了一个问题。先说说代码,它的主要功能是用 PHP 判断是否生成一段 Javascript,并使用 Cookie 记录状态

  

  /* 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

  

  }

  ?>

  粗看起来代码已经无懈可击,我们亲爱的 小马 还是发现了问题的存在。就是在 Javascript 中的那个判断是永远为 true

  if ('undefined' == typeof document.cookie['cookieName']) {

  // ...

  }

  因为这段代码是在 PHP 端有个前提,就是

  if (!haveCookie('cookieName'))的时候,才会在客户端显示。那么,当不满足这一条件,这段代码自然就不会扔给客户端。这样说似乎有点笼统,那么先撇开 Javascript 代码,我们就单纯使用 PHP 代码表述一下

  

  header("Content-type: text/javascript");

  if (!haveCookie('cookieName')) {

  if (!haveCookie('cookieName')) {

  setCookie('cookieName');

  }

  }

  ?>

  这样就显得清晰了很多,并很容易就能发现问题所在 -- 我们在不经意间就多做了一次判断,虽然这是 Javascript 在客户端执行的。

  总结下,本人从这段代码想到的些废话:

  1.代码越长,不见得效率就越高

  2.在不影响逻辑和流程的情况下,尽量将多个判断写在一起

  3.尽量将低复杂度的函数放前判断

  4.过多的判断容易造成程序效率降低,在判断中使用高时间复杂度的函数时尤其要注意

  5.如果发现 if 嵌套得太多,就得重新考虑流程和算法

  6.健壮的代码不是靠过分的判断保证而成的

  7.将代码简化后,会发现很多还未发现的问题

  8.过多的判断另个角度理解,是缺乏对代码的信心

时间: 2024-08-04 04:43:07

由 php 中 if 想到的些问题的相关文章

由php if 想到的些问题_php技巧

复制代码 代码如下: <?php  /* PHP code */  header("Content-type: text/javascript");  if (!haveCookie('cookieName')) {     // ... do something  ?>  /* Javascript code */  if ('undefined' == typeof document.cookie['cookieName']) {      setCookie('coo

Web网页设计师从游戏中能学到些什么

译者序:一直以来我都想写一篇关于游戏与交互设计之间关系的文章,因为我坚信好的设计和游戏一样有魔力,都能为 用户带来乐趣.这可能跟我之前在游戏公司任职过有关,潜移默化地受到感染和熏陶.当看到这篇文章时,共鸣了,这就是我想要说的,于是我决定译过来,跟更多 设计师产生共鸣,推动 "乐趣设计",同时也为自己这方面的想法写下第一笔. 好的设计应该是融会贯通的,有相似的细节和处理方法,当然,还要有一个能够吸引人的理由或法宝,如果你有过这方面的零碎念头,而没有能汇总在一起,往下看,这就是了! 游戏越

详解Linux驱动中,probe函数何时被调用_Linux

最近看到linux的设备驱动模型,关于Kobject.Kset等还不是很清淅.看到了struct device_driver这个结构时,想到一个问题:它的初始化函数到底在哪里调用呢?以前搞PCI驱动时用pci驱动注册函数就可以调用它,搞s3c2410驱动时只要在mach-smdk2410.c中的struct platform_device *smdk2410_devices {}中加入设备也会调用.但从来就没有想过具体的驱动注册并调用probe的过程. 于是打开SourceInsight追踪了一

抓拍明星趣味生活瞬间电视里光鲜生活中可爱

我们平时大多在电视上看到的明星都是衣着光鲜亮丽,装扮完美的演艺工作者,他们按照要求摆好Poss或是为了应酬而强颜欢笑,很多时候我们并不了解自己喜欢的明星,以为他们就是电视剧里的好人或者坏人,其实他们在生活中更可爱,也跟我们普通人一样,下面就来慢慢欣赏明星不为人知的另一面吧! 徐若瑄三十多岁了,但依然是那么年轻有朝气,长着一个小巧精致的娃娃脸庞,真是能骗过很多人的眼睛. 生活中的她开朗活泼,身材好得叫人羡慕,虽然那么瘦,但是依然要胸有胸,要腰有腰.[page] 蔡依林这张很有日本女优的味道,真是像

Flash中的物理运动动画编程

编程 本文译者:egoldy 文章出处: http://www.bit-101.com 文章性质:翻译 译者网站很值得一看:http://www.webstudio.com.cn/ Actionscript animation 简明教程 本教程节选自bit-101.com的未正式出版的新书making things move的新书介绍.主要内容是关于速度,加速度,弹性,缓动,摩擦力,重力等内容,这里没有非常详尽的内容,如果你想知道更详尽的内容,可以预定购买作者的新书making things m

浅议C语言中数组和指针的互操作

曾听好多朋友说,C是一种怀旧的语言,因为它的历史很久远,然而自从各种面向对象的编程语言的相续出现让它的影响力日减. 当然了,这是无可非议的,但是C的高效性是其他语言无妨比拟的,所以我们有必要把握其中的精华与奥妙,也就有必要知道其中的基本的数据结构的比如数组,稍微有点深度的堆栈.列表.结构体等的操作和实现.指针也是C语言中的一个很优秀灵活的结构,对它的了解也是必不可少的. 我们一般都认为数组是一维的数据存储结构,因为二位数组或者说矩阵都可以看作是多个一维数组的组合结构,定义在其上的数据存储访问方式

Windows中不规则窗体的编程实现

一.序言 在绝大多数的Windows应用程序中,其窗体都是使用的正规正矩的矩形窗体,例如我们常用的,"记事本","扫雷",等等.矩形窗体,具有编程实现简单,风格简洁的优点,所以在普通文档应用程序和简单小游戏中使用足矣.但在某些娱乐游戏程序中使用就略显呆板些了,这时若用不规则窗体替代原先的矩形窗体,将会使这类程序更添情趣.典型的例子有windows 自代的Media Player,新版本的Media Player有个控制面板的选项,选中这些面板,播放器就以选中的面板形

ActorLite:一个轻量级Actor模型实现(中)

从上一篇文章的反响来看,似乎大家对于这一话题并没有太大兴趣.而这篇文章将会 为大家带来一个简单但完整的Actor模型实现.此外,在下一篇文章中--可能会出现一 些让您觉得有趣的东西.:) 任务分配逻辑 如上文所述,这次要实现的是一个非常简单的Actor模型,使用基于事件的分配方式, 直接把任务交给.NET自带的线程池去使用.不过我们又该什么时候把一个Actor推入线程 池的执行队列呢?这其实取决于我们执行Actor的两个"基本原则": 如果Actor的邮箱中包含消息,那么要尽早执行.

PS合成世界末日黑暗战火场景中的美女教程

效果图1: 三联推荐:photoshop7.0迷你版免费下载    |  Photoshop CS5 中文免费下载  |  photoshop免费下载   查看更多PS教程 效果图2: 人物素材: 教程: 1.搭建场景,把天空补齐,添加火焰素材和塔楼,关于抠素材这儿我就不讲了,主要也就是选区工具的应用. 2.继续添加素材,为了增加气氛场景中加点烟雾效果,新建一层滤镜云彩,在这层上添加蒙版,在蒙版上也运用去彩滤镜,看图层中的效果降些透明度, 加入人物和飞机,再为人物添加阴影,主要运用复制人物,把明