很久没有更新了,真是服了自己的懒惰,经过几周的加班,反而变懒了!
这是发生在前天一张战役的收获!
战况吃紧,指导员命我火速对数据规则进行前端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;
代码看起来虽然是变大了,但维护起来方便了很多,指导员欣慰的笑了……