【codeview】冲锋也需挖对壕 编程多想一点
来源:互联网 发布:51聊天软件 编辑:程序博客网 时间:2024/04/28 07:38
很久没有更新了,真是服了自己的懒惰,经过几周的加班,反而变懒了!
这是发生在前天一张战役的收获!
战况吃紧,指导员命我火速对数据规则进行前端JS处理,看着满是>,<,=,!的规则文档我是两眼一抓黑!
无论是java还是js,只要是理论碰上了实际,规则就要从简单的if判断转战到战争机器:规则引擎;
别误会,咱不会设计规则引擎,在指导员的带领下也只是把规则引擎写了个盖而已,时间紧任务重,指导员允许在规则条目不多的情况下使用最原始的方法:if判断;
当伯乐遇上傻马,田忌就再也不赌马了;
我真的用了if if if if if …………当夕阳西下,高喊:指导员!规则加好了!
指导员盯着屏幕扫了两眼,眼角有泪划过……
尼玛,那是30多个if……我是有多实惠……
经验1:
有一个人的注册信息,分别是isGlass,isGamer,isGay
如果有三个东东,分别是google,westwood和battlefield,每个东东都有自己的一套规则,选择这个东东就会校验相关的值是否符合规则;
google:isGlass必须是true
westwood:isGamer必须是true
battlefield:必须是true 调侃一下男友3(橙子ID:NOKIA-LAN)
if(registerInfo.equals("google")){if(!isGlass){alert("正常视力想进谷歌?没门!");}}if(registerInfo.equals("westwood")){if(!isGamer){alert("没玩过红警?滚粗!");}}if(registerInfo.equals("battlefield")){if(!isGay){alert("晚上没时间的男子,哥没兴趣……");}}
想象一下,这只是很简单的模拟场景,我实际做的是11个外层业务判断,每个里面还包括3-4业务逻辑规则;
指导员意味深长的说:googel westwood battlefield 彼此在业务上没有关联,为什么要分三个if来判断呢,虽然你只能获取到一个registerInfo,可是你的程序还是走了3个if判断,只不过有2个没进去而已,这是不符合逻辑的;
好吧,指导员……咱痛下心扉同if一决死战!
最后利用js把代码改了一下
var registerInfo = {};registerInfo.company = {google:{name:"谷歌",invoke:function(){return checkGoogle()?true:false;}},westwood:{name:"中文叫啥?",invoke:function(){return checkWestwood()?true:false;}},battlefield{name:"男友3",invoke:function(){return checkBattlefield()?true:false;}}}function checkGoogle(){if(!isGlass){alert("正常视力想进谷歌?没门!");}}function checkWestwood(){if(!isGamer){alert("没玩过红警?滚粗!");}}function checkBattlefield(){if(!isGay){alert("晚上没时间的男子,哥没兴趣……");}}
在需要调用的页面:
var checkCompanyMethod = registerInfo.company[companyName];if(!checkCompanyMethod.invoke.call())return true;
代码看起来虽然是变大了,但维护起来方便了很多,指导员欣慰的笑了……
- 【codeview】冲锋也需挖对壕 编程多想一点
- 对编程的一点思考
- 对结对编程的一点感想
- 对/proc编程的一点总结(转载)
- 对编程和设计的一点浅见
- 我对编程的一点看法
- 对编程境界的一点感悟
- 对配置性编程的一点看法
- 结对编程的一点感受
- 关于对编程语言的一点理解
- 调试工具-CodeView
- 2014-1-27codeview
- 我对编程之道的一点浅见
- 在java编程思想中对synchronized的一点解释:
- 在java编程思想中对synchronized的一点解释:
- 对socket编程的一点理解-2011.2.17
- linux编程中对死锁的一点感想
- Android开发者-对Java和编程的一点总结
- 图--二分匹配模板
- RPG颜色参考表
- MySql数据库中null值与其他值的比较
- Keil C51对C语言的关键词扩展之一: _at_
- MYSQL的事务处理主要有两种方法。
- 【codeview】冲锋也需挖对壕 编程多想一点
- signed 的范围大小为什么不一样?
- Spring连接mysql长时间空闲报错:The last packet successfully received from the server was xx millisecond ago...
- 【Leetcode】Palindrome Partitioning
- js_day13---js函数
- java 静态方法和实例方法的区别
- WEB精品文章收藏
- cygwin下ndk编译protobuf
- <菜鸟上路>关于io流的实际应用代码(仅作测试)