企業應用開發架構談(三) (轉)
作為一個開發人員,很多年以來我都夢想有一個可以
寫出許多的程式,這樣在開發中過程中可以
節省多少時間呀。
我一向是一個很懶惰的人,編寫程式生成器讓我感到
許多樂趣,透過他我省去了許多的重複性的勞動,大大
加快了開發程式。程式生成器的很高,在開發
的許多環節都可以大顯生手:資料持久化、介面、中間
件等等。
$:為什麼需要程式生成器?
我沒有深入的研究過這個問題,所以關於這個問題我無法
講的很全面。不過從我的來講,歸納起來有以下幾點
:
1:抽象層次規範系統。
想象以下透過生成程式碼,你可以將實現技術,演算法,資料
結構等程式碼細節規範化,並對上層開發人員完全遮蔽。如
果需要修改實現,只需要簡單的修改定義的規範即可。
2:工作分工
在叫大規模的中,開發人員彼此間往往需要共同
維護程式碼,造成個人獨立地從事工作變的不可能。而透過
程式生成器為開發人員提供了一種工作分工的有效解決手
段。
3:可以生成系列產品
你可以透過程式生成器生成一系列的相關產品如:測試用
例、文件、圖表、其他相關程式碼等等。
4:程式族
透過成成,你可以針對同一問題,產生不同的實現,而成
為一個程式族,而不只是單一的特定系統。譬如:你可以
使用同一介面規範(xul)生成不同平臺(,)的
實現。
5:正確性和一致性
即便是你一個有多年開發經驗的開發人員,你對自己編寫
的程式碼有幾分信心?透過生成方式,可以大大減少錯誤。
軟體開發重構是免不了的,但是這往往會引發新的錯誤,
程式生成器,使的修改也變的方便許多,修改抽象的規範
即可,從而減少修改所引發的錯誤。
6:你
可以這麼說程式生成器,讓你有更多的時間不必浪費在重
復的編碼中,從而有時間去關注系統的效能。
$:理解程式的三中可變性。
可變性有三種:1.執行時可變性;編譯時可變性;生成時可變性。
執行時可變性
執行時可變性的資訊儲存在一個外部中並透過程式讀入。
在castor jdo中就是透過將儲存在檔案中的關係映
射資訊讀入來實現持資料久化的。前一篇文章中所講的配置
既是這種方式。
編譯時可可變性
編譯時將資訊合併到程式中。透過類與類的協作實現。
生成時可變性
將資訊透過一個定製程式的生成器讀入。SUN的JDO規範既是
這種方式。將配置資訊透過程式碼增強器讀入到程式中。生成
新的程式碼。
$:程式碼風格
世界上沒有兩片完全相同的葉子,同樣的開發人員編寫的代
碼在細節和結構上是不同的,而生成器生成的代應該是易維
護,容易理解,便於修改的。因而我們需要明白的是生成和
手寫需要遵循不同的規則。
規則1:為修改而設計。生成的程式本生不重要,重要的是
規範,沒人會去讀你生成的程式,他應該是對上遮蔽的。
規則2:注意程式的正確性。
規則3:更多的關注效能而不是可讀性和結構。
程式生成器生成的程式碼嚴格來講有三種風格:
1:物件導向的
以物件導向技術來組織程式的結構。功能上進行分解。便於
理解。
...............................................
........................................
public class TopFrame extends JFrame implemetns
ActionListner{
...............................
public void actionPerformed(ActionEvent e){
new Juggler().stop();
}
..............................
}
public class Juggler {
public synchronized void stop() {
}
}
2:面向程式碼的驅動
直觀,簡單的輸出程式碼需要做增加從需要的規範處獲取的資訊,
程式碼結構緊湊,從手寫觀點來看,不便於修改,但動態輸出無妨。
class Afrmae extneds Frame{
............................
public void entry(){
if(prop==start){
start();
}else if(prop==end){
end();
}else if(prop==suspend){
suspend();
}else{
System.exit(0);
}
}
............................
}
3:面向表格的驅動
資料與程式碼分離,規範資訊在專門的資料結構中,程式碼在適
當時候參照資料結構恢復資料。
class Employee{
private int id ;
public void setId(int newId){
this.id = newId;
}
public int getId(){
return id;
}
private String name;
public void setName(String newName){
this.name = newName;
}
public Stirng getName(){
return name;
}
}
class Data{ class Employee implements Persistence{ private int id ; public makePersistence( o){ for(int i=0;i 程式碼生成有兩種作用方式:和位元組碼。前者生成的程式碼
===>
//表資料。。。。
public String[] field={"ID","NAME"};
public String key = "ID";
public String tableName = "EMPLOYEE";
}
class Data{
//表資料。。。。
public final static String[] field={"ID","NAME"};
public final static String key = "ID";
public final static String tableName = "EMPLOYEE";
}
//........................
public void setId(int newId){
this.id = newId;
}
public int getId(){
return id;
}
private String name;
public void setName(String newName){
this.name = newName;
}
public Stirng getName(){
return name;
}
public String getTableName(){
Data.tablename;
}
public String[] getField(){
....................
}
.............................
}
class DAO{
.....
start= "INSERT INTO "+getTableName( ";
int count = o.getField().length();
prxQ = prxQ+"?";
}
sqlend= " ) VALUES ( "+ prxQ +" )";
sql = sqlstart+prxP+startend;
....
}
}
$:作用方式
為原始碼,後者是在位元組嗎基礎上進行程式碼增強。我把前者
稱為白盒方式,因為對於開發者來說可以看到生成碼內部的
結構,好處是便於實現,不好處是對外透明,不便於遮蔽;
後者成為黑盒方式,生成碼對外不透明,對開發人員完全屏
蔽實現,不容易實現,需要掌握額外的(BCEL 庫).
本章完。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-956557/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [轉]企業應用開發架構談(一)架構
- 企業應用開發架構談(一) (轉)架構
- 企業應用開發架構談(二) (轉)架構
- 企業應用架構研究系列三:應用系統整合應用架構
- 用Servlet開發企業級三層Web應用(一) (轉)ServletWeb
- 企業應用架構研究系列十九:Docker開發環境應用架構Docker開發環境
- 企業應用平臺架構架構
- LAMMP架構的企業級應用架構
- iOS應用架構談(1):開篇iOS應用架構
- SOA重塑證券企業應用架構應用架構
- 第五天-《企業應用架構模式》-併發應用架構模式
- 總結 - 設計模式,企業應用架構模式,架構模式設計模式應用架構
- 快速構建企業級應用的開發平臺
- 低程式碼開發:企業應用構建新模式模式
- 企業應用開發和開放原始碼專案 (轉)原始碼
- MicrosoftNet企業級應用架構設計(中)ROS應用架構
- 企業內應用區域網傳輸架構架構
- Android應用開發架構概述Android架構
- 中國企業ERP應用三條路(轉)
- 架構雜談《三》架構
- iOS應用架構談:架構設計的方法論iOS應用架構
- 談談關於 iOS 的架構以及應用iOS架構
- 淺談企業開發APP應用常見的型別有哪些APP型別
- 企業應用架構的基本模式之分離介面應用架構模式
- 企業應用架構的基本模式之入口模式應用架構模式
- 漫談企業資訊化安全 - 零信任架構架構
- Oracle開發:構建強大企業級應用的關鍵Oracle
- .NET應用架構設計—重新認識分層架構(現代企業級應用分層架構核心設計要素)應用架構
- 企業架構 - 企業架構成熟度模型(EAMM)架構模型
- iOS應用架構談(一):架構設計的方法論iOS應用架構
- TOGAF企業架構與軟體架構的對應圖架構
- Java的企業應用開發死期已到Java
- Java EE 6之企業應用開發Java
- 使用 Angular 打造微前端架構的 ToB 企業級應用Angular前端架構
- 用MDA和傳統方法開發一個三層架構應用的對比架構
- 大型直播平臺應用架構淺談應用架構
- 理解企業應用框架 (轉)框架
- 百萬年薪架構師之路:談應用系統架構設計架構