![]() ![]() ![]() |
|
|
|
2010/05/16 01:16:20瀏覽4797|回應2|推薦0 | |
Code Complete這本書(第二版),台灣這的譯名是軟體建構之道,對岸的則是翻作代碼大全,這是一本探討軟體開發領域方方面面的一本書。對從事軟體相關行業的人來說,新的技術,新的開發工具,新的軟體開發專案管理方式,新的軟體設計思維,推陳出新,一步也不曾放慢下來過,不管是在軟體公司工作,還是一般企業的MIS人員,不斷的學習是必須的,必須要努力去追趕最新技術的腳步,才能夠維持自己的競爭力,讓自己有價值,在我因緣際會讀到這本書之前,我一直是這麼認為的。傻蛋算是比較有自己想法的人,認為工作必須要有價值,要能幫別人解決問題,對其他人有用,工作才有意義,因此,在技術上的鑽研,我一直是放在次要的位置,能替別人解決管理或是作業面上的問題,是第一優先,在這個過程中必須要使用到的技術與工具,自己就必須要去好好磨練鑽研一番的,正所謂工欲善其事,必先利其器也,不過也就是這種態度,我並不是一個典型的全能工程師,這也懂點那也懂些,工程師的技術領域很廣,什麼都想學一些就不容易專注於解決問題上了,所以我不會沒事跑去學對我自己來說是陌生的技術,畢竟學也學不完,要用到的時候再去磨磨,通常也不嫌晚。所以每次換工作領域的時候,基本上都要重新學習那個環境必須的技術,反正上手也快,我也懶得讓自己成為技術面的專家,反正團隊的工作又不是一個人單打獨鬥,總有喜歡搞新技術的同事,可以分工合作,讓工作的效率可以更好。對於概念上了解一些,但掌握不夠透徹的那些新技術,我一直都是抱著敬畏的態度看待,設法讓它能在我解決工作上的需求時能為我所用,站在有效管理的角度看待這些懂不到十分的技術,通常也是馬馬虎虎,可以達到自己的目的,工作上的效率也不差,但是,既然懂不到十分,就留有一些神秘的想像空間,或許很高明吧,我也沒有明確的立場與能力能去判斷這些我不清楚的模糊地帶,就只能敬畏之了,即使我內心嚴重懷疑這個新技術根本就是垃圾,也只能謹慎的敬之畏之,到我讀到Code Complete這本書為止都是如此的。 之所以會接觸到這本書,是之前工作的時候,同事很熱衷在一些設計模式上,所以也要跟著讀讀這些Design Pattern的書,說到底,物件導向的程式設計,從唸書的時候就開始碰,也就是個一知半解,從沒有感受過物件導向設計在解決問題時有任何強大的威力,搞得一團糟的例子倒是很常見。自己在工作時用物件導向的開發工具進行設計,其實之前一直就不是用所謂物件的思維在設計,物件什麼的,就是依據語言的特性,弄出和其他常見的物件導向設計感覺不會差太多的東西出來,敷衍敷衍,自己關心的是在解決問題,把使用的工具管理好,讓問題明確,設計單純有彈性,盡可能模組化減少整合上不必要的麻煩,這是自己的直覺,也不知道這樣到底是不是對,或許有更高深的領域還是我所不知道的吧。那時候讀了幾本設計模式方面的書,傻蛋多疑的個性又犯了,總覺得這些先進的觀念沒頭沒尾,難以有效掌握運用,懷疑啊,所以就上Google找找相關的討論與書評,來設法找出自己疑問的答案。我在亞馬遜上面發現,喜歡設計模式的讀者,大多數都會買另外一本叫Code Complete的書,而且該書的綜合評價和其他書簡直不在同一個檔次,一本不是剛出的新書能有這樣的評價和熱度,很有可能是經典之作,值得去看看。讀完這本書之後,我之前的敬畏與疑惑一掃而空,當然,這是傻蛋自己個人的看法喔,就是,物件導向的設計根本就沒有什麼魔力可言,最好的設計也不過就和自己之前的直覺作法差不多而已。物件導向設計的重要原則是,重視介面的使用,少用沒理由的繼承設計,而是以更實際的情況,組合物件,來作設計的指引。其實最高的原則,不管是否物件導向,都是要控制軟體的複雜度,都是要管理自己做的設計,更有效率的滿足實際需求,所有好的實踐,最終都是有這個目標在指引的,沒什麼神秘的。介面是一致的規範,和物件導向最初的繼承重用性相去甚遠,為什麼要多用介面,少用繼承而多用組合,這道理是通的,有頭有尾的,因為軟體設計老是被一些聰明的工程師搞到複雜不堪,定義介面等於是規範必需要守的紀律,自然能讓工作更加明確的切割與模組化,軟體開發的品質與效率必然也會提高了,而多用組合少用繼承,則是很根本的總結了,當初物件導向的理想是不切實際的,現實世界少有完全的繼承,而多的是組合,這也只不過是忠實的反映現實而已,硬要發揚物件繼承重用的威力,把彈性的空間給謀殺了,只是給自己找麻煩,如此而已。不敢說自己是設計高手,不過,對於流行的那些設計框架或開發模式,也可以冷眼看待了。 最後這一段完全違反主流,傻蛋的個人見解,那就是,物件導向是個扭曲的存在,它是一種非理性的流行,崇高但不可能實現的理想必定會製造災難。而在物件導向潮流之下設計領域的菁英從成功案例中粹取出來一些經驗而成為了些所謂的設計模式,這些模式是在物件理念下扭曲的找出有效的設計方式,似乎和原本的物件導向理念不甚協調,於是在這個體系下又衍化出種種的設計模式,設計哲學更深奧了,但這對以複雜為天敵的軟體開發工作來說可不正是拿石頭砸自己的腳嗎?如果沒有了目標導向,沒有明確的目的與需求在指引軟體的研發,去學設計模式,不正像金傭筆下笑傲江湖裡的華山派劍法一樣,招是死的,盲目崇拜學習的人也跟著狗屁不通了呢?此乃一人之言,歡迎抨擊吐嘈啊! 最後的總結是,Code Complete這本書在軟體開發領域上可真是融會貫通的必要經典之作啊,以物件導向這個框架為前提的話,我覺得這書已經是到了極致了,在學末節的華山派劍法之流的技術之前,先把獨孤九劍的總訣式給摸透,是不是一項好投資呢? PS.最近會以工作為重,幾個想寫的題目懶懶的一直不想動,會不常更新唷... |
|
( 不分類|不分類 ) |