090723 T Code Generate 的思考

來源:互聯網
上載者:User

今天看了公司(易車)原來團隊開發的部分項目的代碼,發現很多項目是基於Typed DataSet或NetTiers的,兩者都是代碼產生器(Code Generator,以下簡稱CG),前者是VS內建的工具,而後者則是第三方開發,同樣的還有CodeSmith、動軟等。這些CG的輸入/資訊來源,大都是資料庫中的中繼資料。

其實,我個人也開發過CG。
第一個是在上海外高橋實習時用於轉換C語言到C#語言的轉換器。
另一個則是配合hxy.LayersFramework架構的產生器,其輸入主要來自於LINQTOSQL根據資料庫中繼資料產生的原始碼,輸出則是該架構對應的實體類、管理類、資料訪問層等。其產生的程式碼與一般的CG產生的程式碼的用途還有些區別:這些代碼只在一開始時產生一遍,然後手工在上面定義新的內容。而上面的CG產生的程式碼一般不允許修改,也不能新增內容。因為一旦這樣後,再產生時,會丟失這些更改。

所以,我並沒有去開發一款適合福士使用的CG,如類似於Code Smith的。因為其實代碼CG的作用是協助開發人員編寫重複而乏味的代碼。而這類代碼在各個應用程式下可能會各不相同。這時,很可能需要開發一個適應此情況的CG。
例如,我目前的開發模式習慣使用UML來對Model關係建模,然後使用C#語言編寫介面定義具體的模型。大部分情況下,這些介面都會直接映射到資料表中去,這時,我需要的應該是這樣一個CG:對應一個C#介面原始碼或檔案的輸入,可能需要輸出對應的表的建立語句sql、實現這個介面的類、類的管理器……等。
當然,是否需要開發這個CG,需要對成本及收益或效果進行估算。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.