我最近在打 WOW
召喚出惡魔守衛時, 他會大喊 "蠢貨, 你別想控制我"
昨天晚上, 走路回家時, 我突然也想這樣大喊 XD
2007年4月28日 星期六
2007年4月3日 星期二
向五星上將致敬
我的同事寫了類似這樣的程式
GENERAL ***** KPH;
你沒看錯, 這是真實存在的程式碼,
對我來講當然也是前所未聞
在同事的訕笑之下(也許是我帶頭 :P )
這位同事在後來又變本加厲了追加了一顆星星
這樣的程式到底有什麼問題呢?
難以維護? 這的確是個問題
這樣的程式感覺好像缺乏抽象化的概念以至於難以讀懂
但是對寫出這樣程式的人來講, 一定也要有些概念才寫的出來吧?
char * 的型態抽象成 string
char ** 的型態抽象成 array of string 或者是 pointer of string
char *** 的型態可能是 pointer of array of string
或者是..... 反正看你怎麼給空間來決定
這樣的程式有彈性嗎?
過了一陣子 我想到 這件事的重點是另一種抽象化
不只是概念, 連資料結構的實作也要抽象化
就是好多人一直在講的"物件的封裝".......的感覺
char * 這樣的寫法就把實作的方式給訂死了
如果我改寫成 string , 好處不只有在概念上
哪天我心情好把 string 的實作方式改成什麼亂七八糟的方式
只要操作的方式保持相同 有可能整個程式不需要更改還可以運作正常
我想到另外一件事
有一次這位同事為了一個"老闆的無理要求" 搞的人仰馬翻
老闆希望把資料在記憶體中用另一種方式儲存
因為這個要求
也因為資料的實作方式已經經由 char * 的方式給訂死了
這位老兄除了實作新的儲存方式外
還必須把所有的程式碼重頭檢查一次來確定資料的存取方式正確
我想這的確是浩大的工程....
BTW,
我目前的公司就是軟體工程等級為0的公司
每個人寫自己的程式, 同樣的程式, 每個人寫了他自己的版本
沒有任何交流, 同事之間也沒有所謂的程式碼再利用
GENERAL ***** KPH;
你沒看錯, 這是真實存在的程式碼,
對我來講當然也是前所未聞
在同事的訕笑之下(也許是我帶頭 :P )
這位同事在後來又變本加厲了追加了一顆星星
這樣的程式到底有什麼問題呢?
難以維護? 這的確是個問題
這樣的程式感覺好像缺乏抽象化的概念以至於難以讀懂
但是對寫出這樣程式的人來講, 一定也要有些概念才寫的出來吧?
char * 的型態抽象成 string
char ** 的型態抽象成 array of string 或者是 pointer of string
char *** 的型態可能是 pointer of array of string
或者是..... 反正看你怎麼給空間來決定
這樣的程式有彈性嗎?
過了一陣子 我想到 這件事的重點是另一種抽象化
不只是概念, 連資料結構的實作也要抽象化
就是好多人一直在講的"物件的封裝".......的感覺
char * 這樣的寫法就把實作的方式給訂死了
如果我改寫成 string , 好處不只有在概念上
哪天我心情好把 string 的實作方式改成什麼亂七八糟的方式
只要操作的方式保持相同 有可能整個程式不需要更改還可以運作正常
我想到另外一件事
有一次這位同事為了一個"老闆的無理要求" 搞的人仰馬翻
老闆希望把資料在記憶體中用另一種方式儲存
因為這個要求
也因為資料的實作方式已經經由 char * 的方式給訂死了
這位老兄除了實作新的儲存方式外
還必須把所有的程式碼重頭檢查一次來確定資料的存取方式正確
我想這的確是浩大的工程....
BTW,
我目前的公司就是軟體工程等級為0的公司
每個人寫自己的程式, 同樣的程式, 每個人寫了他自己的版本
沒有任何交流, 同事之間也沒有所謂的程式碼再利用
訂閱:
意見 (Atom)