【codeview】衝鋒也需挖對壕 編程多想一點

很久沒有更新了,真是服了自己的懶惰,經過幾周的加班,反而變懶了!

這是發生在前天一張戰役的收穫!

戰況喫緊,指導員命我火速對數據規則進行前端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;

代碼看起來雖然是變大了,但維護起來方便了很多,指導員欣慰的笑了……


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章