Thursday, September 12, 2013

最近在技術上多了不少體悟


最近在技術上多了不少體悟, 關鍵是要掌握住問題的需求, 接著不斷思考和嘗試, 避免卡在特定的規則或工具裡, 將重心放在隱藏在這些東西背後的核心思想。

直接看現有的工具或別人的作法很難有所體會, 但自己從頭邊做邊想, 會得出自己一套理論, 接著會出乎意料地更快理解這些工具和作法, 畢竟在足夠嚴苛的需求下, 方法可能有些差異, 背後的精神卻是類似的。

比方說, 若程式反應速度要求在 1ms 以內, 全部資料來源都得在記憶體或網路, 不能使用硬碟。那麼, 針對這種應用, 單機程式能做的事就是想辦法將東西塞在記憶體裡取用

再以 Test Driven Development 為例, 最重要的不是 TDD 的三步規則, 也不是相關工具要怎麼用, 而是導入「在設計的開頭, 就將測試視為主要考慮項目」, 其它東西都是這個想法的衍生

從這個角度出發, 實作久了自然會理解為什麼介面要開洞放入物件, 為什麼需要 factory 隔離生成和操作邏輯。至於是否真的有先寫測試, 個人覺得不是鐵則, 在有為測試而考慮的設計下, 在必要時補測試可能更划算

再往上拉一個層次來看, 解決問題的前提, 本來就是如何確認問題有被解決, 若無法確認問題有無被解決, 用什麼方法也是白搭, 不知成效如何。從這個角度往下看, 在設計之初就考慮測試, 並不是什麼新穎或強人所難的事。

但要走到這步, 如同學其它東西一般, 需要累積不少經驗, 不斷思考消化, 才能有自己一套系統化的想法, 從而視需求調整應用的方式。

https://plus.google.com/111353793049965752735/posts/8fVCDwQ7ik8

No comments: