更精確來說,程式設計是一種文字創作的體現,即使大家都擁有著相同的詞彙可以使用,但在不同的語法結構之下,就有著不同的生命。而雖然「重用」是程式設計很重要的課題,但以大多數狀況來看「重用」的理由,卻往往是以「不會寫」為出發點,這就像是申論題可以用各種方面去闡釋自己的回答,但卻提不出自己的主張一般。
因為不會寫的理由而採取了重用,通常面臨的就是需求不符的窘境。就像是申論題抄襲鄰座的答案,未必能完全闡述自己的主張,可能多答了,也可能少答了,鄰座犯的錯誤自己也照單全收,抄襲時渾然不覺,等到交卷(程式上線了)才後悔莫及。
現今Open Source當道,每當需求發生,程式設計師們腦海總會被「有沒有可重用的Solution」所盤據,於是設計師花了大量時間查詢Google, SourceForge... 期待有著前人已建立的苦海明燈,來解決眼前的困境,慶幸卻也不幸的,許多需求都有前人曾經實作過,但又有所不同,更糟的是為了要應用他人完成的需求,程式設計師可能得花更多的時間去研讀更多的文件,才能掌控眼前的solution,更遑論其中可能產生bug以及應用過程中的使用錯誤了。
程式設計不是海難求生,不是在水中第一時間搶到浮木就有生還機會的,別糟蹋了「重用」的精神。借用日本動漫「鋼の錬金術師」的煉金術法則,程式設計師同樣應該要能做到「理解」、「分解」」、「再構築」三個步驟,才能真正達到「重用」的目的,藉由「重用」將他人的solution內化成為自己的東西。
有人會發現,我這篇所指的「重用」很狹隘,幾乎指的就是那些Open Source的大型solution,請捫心自問,回想在現實生活中,程式碼中的重用設計,真正重用的有多少?你真正在乎的到底是自身程式碼的可重複使用性?還是所謂「不要重新造輪」的自我安慰呢?
「那些API怎麼辦?難道也要一個一個去理解、分解、再構築嗎?」或許有人會這樣反駁。
當然不是。那些API對我們程式設計師來說只是詞彙,你明白詞彙意義,應用它去作文,遇上新的詞彙庫(library),也同樣地去學習它來豐富自己的文章,就這麼單純,不要鑽牛角尖了。
程式設計師們啊!我們已經擁抱了這些由他人所構築的solution多久了呢?藉由他們所省卻的開發時間,是否讓你自己也成為了一位可構築同樣solution的程式設計師了呢?程設圈中的平凡與不平凡或許就僅有這一點差異,若你也有那麼一點點感觸,請試著開始構築屬於那僅屬於你的「純粹」吧!
No comments:
Post a Comment
有什麼想說的嗎?