2015年12月30日 星期三

我終於看完大話重構了...


之前一直看到朋友在 FB 牆上推薦這本書,買了 2-3 個月,這週終於把他看完了,適合有 coding 經驗的人,有一定的工作經驗,書本的範例讀起來會更有感覺,而且會默默地(也沒有真的到多默默啦... 畢竟目錄也有寫 :P)大概瞭解到幾種設計模式,像是 SRP, OCP, AOP, DIP, 橋接, 策略, 命令, 裝飾者模式~

最有感觸的段落是:
* 如何解決繼承氾濫
* 減少使用 if else 的幾個方法


封面講的重構七步驟其實就是:
1. 拆分大函數 (大函數是罪惡根源 XD) (Extract Method)
2. Extract Class
3. 提高程式的復用率 (DRY, 抽方法, 抽類別, 封裝, 抽取父類別)
4. 找出可擴展點 (幾個方法: OCP, hooks, AOP)
5. 降低程式依賴度 (工廠, 依賴反轉, 橋接, 策略, 命令, 組合, 裝飾者)
6. 分層 (比方說 web 是有幾種層次, MVC 層, BUS 層, DAO層等等)
7. 領域驅動設計

老實說,第9章我自己是看得很吃力,講的那幾個模式 (橋接, 策略, 命令, 裝飾者),我有點不知道如果是 php 會怎麼實作(也許我應該去讀一下 PHP設計模式那本書)... 然後書中的範例主要都是用 java 的 Spring 框架,用了一堆 <Bean>  也是開始會有點亂掉 ><。然後 OCP 本來覺得沒有這麼複雜,看了第九章之後,慢慢 fadeOut 了~ 可能我要再過一段時間再回來看這本書吧... 等級沒這麼高,還需要時間培養一下...


最終的重點就也是那些網路上大神的常談:
1. 有時候無招勝有招,學了 Design Pattern 不一定要急著用在自己的專案上,主要還是要考量情況
2. 沒有人可以一次重構就到位,小碎步前進
3. 重構是一種習慣,重點在於你有沒有這樣的意識


看完之後,確實手癢癢,可是主要是如果有人帶你學這些,會更快,我也希望我早點遇到一個可以教我 refactor 我的程式碼的人。以重構七步驟來說,1-3 step 都曾經在工作上有前人的教導我才慢慢起步。

(我是很想學重構,也算有興趣,只是時程有壓力的話,我承認還是拋開我的羞恥心了...,客戶是我的老大)



1 則留言:

  1. 小弟最近也想找這本書來看,
    因為借了一本 掌握Java SE8程式設計 :Lambda的逆襲 ...就順便看到本書的審校者的經歷(非常長一串。。),裡面有這一本書,尤其是最近想進一步的了解 Eclipse 的 refactor 的 automation(之前有借一本 Eclipse 的專書,不過沒有時間看完他就還了@@)

    我承認還是拋開我的羞恥心了...最後一句是重點(筆記)...提早交卷的才可以先下課。。(後面接著上課的是誰,干我屁4)(誤)

    回覆刪除

若你看的文章,時間太久遠的問題就別問了,因為我應該也忘了... XD

Vue multiselect set autofocus and tinymce set autofocus

要在畫面一進來 focus multiselect 的方式: 參考: https://jsfiddle.net/shentao/mnphdt2g/ 主要就是在 multiselect 的 tag 加上 ref (例如: my_multiselect), 另外在 mounted...