XCodeFactory 強(qiáng)化靜態(tài)檢查!
發(fā)表時(shí)間:2024-06-10 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]如果眾多在運(yùn)行時(shí)的錯(cuò)誤/異常能在編譯時(shí)就檢查出來,將會(huì)大大減少程序中潛伏的危險(xiǎn)。這是我們寫程序時(shí)常常要注意的問題。 通過DataEntrance來使用XCodeFactory很方便,如為獲取某ID為200308160033的學(xué)生的姓名,通常這樣做:string name = Dat...
如果眾多在運(yùn)行時(shí)的錯(cuò)誤/異常能在編譯時(shí)就檢查出來,將會(huì)大大減少程序中潛伏的危險(xiǎn)。這是我們寫程序時(shí)常常要注意的問題。 通過DataEntrance來使用XCodeFactory很方便,如為獲取某ID為200308160033的學(xué)生的姓名,通常這樣做:
string name = DataEntrance.GetFieldValue(typeof(Student) ,"200308160033" ,"Name").ToString() ;
GetFieldValue的第三個(gè)參數(shù)是字段的名稱,如果以后因?yàn)闃I(yè)務(wù)的需要,該字段被改名或被刪除了,則上面的代碼仍然會(huì)通過編譯,只有在運(yùn)行拋出異常時(shí),才會(huì)發(fā)現(xiàn)此錯(cuò)誤。這給程序留下了太多潛伏的危險(xiǎn),因?yàn)槲覀兊臉I(yè)務(wù)經(jīng)常改變,而我們的數(shù)據(jù)庫表中的字段也經(jīng)常發(fā)生變化。
我希望在編譯的時(shí)候就能發(fā)現(xiàn)字段被刪除或修改而不能通過編譯,怎么做了?我是這樣解決的,在生成數(shù)據(jù)對(duì)象類的時(shí)候,為每個(gè)字段生成一個(gè)對(duì)應(yīng)的const string字段,該字段的值就是對(duì)應(yīng)字段的名字。如:
public const string _Name = "Name" ;
GetFieldValue的第三個(gè)參數(shù)是字段的名稱,如果以后因?yàn)闃I(yè)務(wù)的需要,該字段被改名或被刪除了,則上面的代碼仍然會(huì)通過編譯,只有在運(yùn)行拋出異常時(shí),才會(huì)發(fā)現(xiàn)此錯(cuò)誤。這給程序留下了太多潛伏的危險(xiǎn),因?yàn)槲覀兊臉I(yè)務(wù)經(jīng)常改變,而我們的數(shù)據(jù)庫表中的字段也經(jīng)常發(fā)生變化。
我希望在編譯的時(shí)候就能發(fā)現(xiàn)字段被刪除或修改而不能通過編譯,怎么做了?我是這樣解決的,在生成數(shù)據(jù)對(duì)象類的時(shí)候,為每個(gè)字段生成一個(gè)對(duì)應(yīng)的const string字段,該字段的值就是對(duì)應(yīng)字段的名字。如:
public const string _Name = "Name" ;
這樣上面的調(diào)用可改成:
string name = DataEntrance.GetFieldValue(typeof(Student) ,"200308160033" ,Student._Name).ToString() ;
如此一來,如果Name字段被刪除或者被修改,那么編譯就能發(fā)現(xiàn)這個(gè)錯(cuò)誤。還有更好的解決方案嗎?歡迎你和我討論。