1.contains
最近上了個新的產品,但是不希望所有的客戶都能使用,於是在配置檔案裡面做了乙個過濾,看起來很簡單乙個功能,只要判斷當前登入的客戶是否包含在這個配置的字串裡面就可以了,假設在config檔案裡面有乙個dfcorporation節點,值是'testa|testb'這樣的值,**如下,看上去沒有什麼錯誤嗎?
dfcorporation"];
if (wsflt.productsource == 4 && (!string.isnullorempty(wsflt.directflightchannel) && wsflt.directflightchannel.toupper() == "
zh-ws"))
} 其實是又問題的,關鍵在corporationids.contains(corporationid)這句,如果有乙個客戶**是'test',很明顯會驗證通過,沒有扮演過濾的作用,因為'testa|testb'是包含'test'的,於是做了下面的改進。
//公司,產品過濾
dfcorporation"];
string corparray = corporationids.split(new
char );
if (wsflt.productsource == 4 && !string.isnullorempty(corporationid) && (!string.isnullorempty(wsflt.directflightchannel) && wsflt.directflightchannel.toupper() == "
zh-ws"))
}if (!issupportzhws)
}
還可以這樣寫,利用list的contains方法
supportdirectairlinelist"];
if (!string
.isnullorempty(directairlinelist))
supportdirectairlinelist = new list(directairlinelist.toupper().split('|'
));
//直連航班過濾
if (wsflt.productsource == 4 && (!this.supportdirect || !this
.supportdirectairlinelist.contains(wsflt.airlinedibitcode.toupper().trim())))
2.語句上下文
注意上一句對下一句的影響,就像下棋一樣要能看到後面幾步,這個需要一定的功力。看下面的**,如果wsflt.directflightchannel="mu-ws" ,第一句會得到flt.directflightchannel="mu-ws",這個時候還沒有錯,再執行下面一句會得到flt.directflightchannel="mu",執行第三句會得到flt.directflightchannel="",很顯然這是錯誤的。
//是直連航班應該都有directflightchannel
if (!string
.isnullorempty(wsflt.directflightchannel))
正確的寫法如下,這個才是正解。
switch(wsflt.directflightchannel.toupper().trim())
如果傳入的是乙個字元『t』,下面這樣寫是不行的
db.addinparameter(dbcommand, "@isneedprint", dbtype.byte, o_ordersentity.isneedprint);
應該這樣
db.addinparameter(dbcommand, "@isneedprint", dbtype.ansistringfixedlength, o_ordersentity.isneedprint);
3.避免使用陣列下標
"flightagencyofdirectflights_hu
" value="
3u-ws:520,8l-ws:539,9c-ws:551,cz-sp:528,gs-ws:540,ho-ws:636,hu-ws:507,jd-ws:538,mu-sp:528,mu-ws:569,pn-ws:541,t8-ws:528,zh-ws:571,cz-ws:661
" />
//////
獲取直聯政策產品的票台
//////
直聯政策產品渠道標識
///票台
public
static
int getstrategyflightagencynew(string
directflightchannel)
else
if (dae ==directairlineenum.cz)
else
if (dae ==directairlineenum.hu)
else
if (dae ==directairlineenum.mu)
else
if (dae ==directairlineenum.jd)
else
if (dae ==directairlineenum._8l)
else
if (dae ==directairlineenum.gs)
else
if (dae ==directairlineenum.pn)
else
if (dae ==directairlineenum._9c)
else
if (dae ==directairlineenum.t8)
else
if (dae ==directairlineenum.muws)
//else if (dae == directairlineenum.zh)
//else
if (dae ==directairlineenum.zhws)
else
if (dae ==directairlineenum.hows)
return
result;
}
換一種寫法,使用字典來避免核對陣列下標的麻煩
//////獲取直聯政策產品的票台
/// ///
直聯政策產品渠道標識
///票台 public
static
int getstrategyflightagencynew(string
directflightchannel)
}
}if(dicdirectflightagency.containskey(directflightchannel))
}return
result;
}
KMP演算法(2) 其細微之處
系列文章目錄 kmp 演算法 1 如何理解 kmp kmp演算法 2 其細微之處 本篇來談一談kmp的一些細微之處,直接進入主題。p為模式串,下標從0開始 void getnext string p,int next else j next j 在s中找到p第一次出現的位置 int kmp stri...
金陵飯店 細微之處見真情
已經不記得什麼時候第一次來南京,對南京的印象還不錯。剛開始是住金陵飯店,後來找到了個新家 丁山香格里拉飯店。總覺得香格里拉的服務很標準,很多人性化的服務讓人很愉快。不記得從去年什麼時候,發覺香格里拉飯店已經悄無聲息地撤出了丁山飯店的管理,丁山重回丁山。由於路途有點遠,加上對服務的擔心,所以重新回歸金...
軟體構造的注意事項(細微之處見差距)
軟體結構設計的啟發式規則 1 模組功能的完善化 執行規定功能部分 出錯處理部分 需返回給呼叫者資料時,返回是否正確結束標誌。2 消除重複功能 3 將模組的影響限制在模組的控制範圍內 4 深度 寬度 扇出和扇入適中 5 模組大小適中 模組過大 可理解程度下降。模組過小 開銷大於有效作業系統介面複雜。6...