很久沒有更新了,真是服了自己的懶惰,經過幾周的加班,反而變懶了!
這是發生在前天一張戰役的收穫!
戰況喫緊,指導員命我火速對數據規則進行前端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;
代碼看起來雖然是變大了,但維護起來方便了很多,指導員欣慰的笑了……