為什么我想談談架構,和代碼的復制粘貼這兩個話題呢,主要是前幾天看到一篇文章提到這兩個話題,在這里想談談我的一些看法。
很多新人,都很談架構,好象貼了架構這個標簽就顯示高檔似的,把設計模式當作聖經,實在可笑。做架構,不是捧着書,然后閉門苦思就能想出來的。
架構是做出來的,不是設計出來的
架構,說穿了就是解耦,把變化的東西抽離出來,這個是它的本質。一般來說,越接近底層的東西越是穩定,越接近業務層的東西越容易變化。如果想在業務層上作封裝,也就是說想作架構設計,必須充分了解業務,沒有足夠的編碼經驗是不可能做好的。所以我經常說,架構不是設計出來的,而是做出來的,只要你做完了,整個業務都確定了下來了,了解充分了,你才可能設計出合理的架構。因為,架構是依賴於需求的,都需求沒有確定下來的情況下做架構,需求一變,那些所謂的架構不是要改得一踏糊塗,最后連自己都看不下去了,再推倒重來。事實上,應該是在項目的后期,完工了,業務流程也確定了,這個時候才有架構可談。
架構設計,還要考慮成本,很多新手,往往會忽視這個問題,也就是說,你必須考慮做這個架構要花多少時間,能節省多少時間。如果花費遠大於收益,那就沒有意義了。但是他們往往會解釋,現在多花點時間,后期就能少花很多時間了。但是事實往往是,前期多花時間,后期也多花時間,老是想讓這個架構變得更完美而沉迷其中,不能自拔。我們往往過度沉迷於架構,而忘了做項目的目的。做項目的,是為了解決客戶業務上的問題,能夠提高他們的業務水平,這才是本質。
架構,其實沒啥的,你的代碼看得多了,寫得多了,自然就會有架構了,記住封裝變化這個核心就行了。其實閱讀代碼、分析代碼、編寫代碼都是真正的基本功,正所謂“練拳不練功,到老一場空”,寫程序也是,作為新人,應該多花時間去閱讀代碼,編寫代碼上面,把自己的基本功練扎實才是最為重要的。
代碼的復制、粘貼不是洪水猛獸
很多人都習慣性地鄙視CTRL+C,CTRL+V,好象一旦和它們沾邊,就是爛代碼,其實大可不必。我們考慮一下,為什么不能CTRL+C,CTRL+V 呢?因為這些代碼不好維護,打個比方說,有兩處相同的代碼,那么有可能就要改兩處。但是,你們有沒有碰到這么一種情況呢,我們先來假設一下,有三個地方,A、B,C,都調用到一個函數,這個函數稱為 M 吧。
但是,不久之后,接到一個需求上的變化,A 的業務改變了,需要修改 M 的函數,但B,C 的沒有變,那么我們習慣性的在函數 M 里加個 if 來判斷,如果是 A 的業務,就如何如何。
不久之后,又收到需求變化,B 的業務改變了,那么習慣性的,又會在 M 函數里加一個 if 邏輯塊。
不久之后,又收到需求變化,C 的業務改變了,那么習慣性的,又會在 M 函數里加一個 if 邏輯塊。
請問,這樣 M 函數充滿這么多的 if ,還容易維護嗎?還不如寫成三個函數呢。
所以,我們大可不必視復制粘貼為洪水猛獸,只要在可控的范圍內就行了,當然,如果業務確定下來是不會變化的,還是一個。什么是可控呢?我覺得復制只有兩、三個地方,都問題不大。總之,存在這是合理,很多時候,我們總習慣於高估自己,而低估別人。
最后,還是那句話,我現在失業中,想尋找一份從事研發方面工作,最好和數據庫、編譯技術打交道的,想找技術牛人的可以聯系。 希望各位鄉親父老多多關照,謝謝大家。^_^