使用CodeSmith要注意的幾點
來源:互聯網
上載者:User
新的項目即將開始了,專案經理老蔡說上次項目的持久層架構不太適合B/S項目,原因是反射用得太多了,並且資料層內部自己又封裝了好幾層,所以決定從新設計一個執行效率更高的架構。
老蔡設計了下他構思好的持久層和資料層的介面,然後叫我先做個模型,如果可以抽象出來的通用代碼再添加到架構了裡,然後就開始做資料層,業務實體類,後台管理頁面的代碼CodeSmith模板。
第一次編寫CodeSmith模板就馬上要應用到大項目上真是有點壓力,但是也對自己能被指派這個任務而感到高興,因為我從第一次使用CodeSmith產生代碼後就一直都對CodeSmith充滿好奇。
花了差不多一天時間瞭解了下CodeSmith的API,學了下怎麼編寫基本的模板,然後我就開工了。先手動做了一個模型,基本操作都OK了,提取出可以通用的代碼到架構裡,然後就開始動手寫模板了。
現在項目接近尾聲了,在項目過程中我的模板被測出了不少Bug,就連我做完一個專門的單元測試後還是有隱含的Bug,但是對於底層代碼的模板品質是很重要的,萬一以後又發現Bug,那麼從新產生項目代碼的量就更大了。
我把我所遇到的Bug與其它一些問題列在這裡,希望可以讓剛剛接觸CodeSmith的朋友在編寫模板的時候不要犯和我一樣的錯誤。
1.命名空間的規範要先和專案經理協商好,以免到時候產生的程式碼不符合要求
2.實體物件某個屬性為null時我沒有進行判斷就把null值賦值到DataParameter裡,記得如果值為null時要賦值DBNull
3.根據實體物件自動產生Sql語句的時候最好使用DataParameter傳參數,不要直接字串拼接,比較安全
4.自動產生Sql語句時要注意最好列名和表明都加上方括弧"[ ]",防止列名和Sql關鍵字重複時出現錯誤
5.模板中輸入中文的字串儲存模板再開啟後變成亂碼,可以用EditPlus這類軟體編輯模板,然後儲存為UTF-8編碼,以後都用EditPlus或類似軟體儲存模板,不要直接用CodeSmith儲存
嗯。。。其他的有想到再補充吧,對了還有一點就是不要像我一樣糊裡糊塗的,肯定可以少很多Bug