由 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.过多的判断另个角度理解,是缺乏对代码的信心
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |