六月份安排兩天時間去參加了 91 主講的 『重構與 TDD 實戰營』,這門課早在三月時就已經報名了。但當時其實有點猶豫,猶豫什麼呢?早在前2年就上過TDD的課了,也不斷的在實踐,重構能力不敢說足以飛天,但跑在地上應該也是不成問題吧,但衝著 91 開的課,還是硬著頭皮報名下去了。
這兩天,完完全全被 Diss 到爆啊!!!!! 以為是跑在地上,沒想到根本是只有在地上爬的等級 Orz
光第一天的 WorkShop ,心想列個測試案例有什麼難的?事實是,好的測試案例是經過排序且都是有目的,可以在 TDD 的過程中一步一步前進,將產品堆疊出來。 即便 Joey 再次示範後,讓我們再做另一個 WorkShop,仍然無法做完全漂亮的測試案例。
而 91 竟然可以直接拿我們 WorkShop 寫出來的爛 Code,直接重構給我們看,這種硬底子的實力絕對不是事先 Set 好的內容。而且還可以同時帶 Java、PHP、.Net 不同的語言的同學,上課時還抓出「疑,這段 Code 有換人寫哦,應該是寫 Java 來接替的。」
上完後慶幸還好當時有報名,讓我知道原來我可以如何善用我的斧頭,讓本來可能只能發揮 10% 功力的斧頭,瞬間解除封印。但重點是斧頭從木斧變成鐵斧後,使用的人也要強化自己的力量,才揮得動,這門課最重要的就是讓你知道你可以怎麼樣強化你的力量,讓你可以配得上用這把鐵斧。
這門課讓我學到3件事
人生最可怕的就是你不知道你不知道
上課前我覺得 TDD、重構就是那樣了,能有什麼不一樣的嗎?上完課後的感想就是「無知是幸福的,同時也是可怕的」。
知道不等於會
第一天的 WorkShop ,Joey 已經示範過完整的 TDD 與重構流程,晚上許多人想爭口氣重做一次 WorkShop 練習,希望能夠扳回一城。但事實上有進步,但仍然不到如同 Joey 一般的水準。需要不斷的練習、練習、練習,才能夠變成自己的內功。
天下武功、唯快不破
很多人都說開發都沒時間了,那有時間寫測試?為什麼沒時間?撇除其他你不可以控的因素外,你唯一能夠改變的就是寫 Code 的速度。當你重構一個動作可能要花一、二分鐘,而且還有可能 Complie Error,就要更多時間 Debug;而我可能只要 10秒(這算久的),我還有把握不會Complie Error。一個動作的時間差距可能就有2分鐘了。假設一個重構需要30個動作才能做完,可能需要一個小時,而我可能五分金鐘就做完了,剩下的55分鐘我就可以寫更多有效的測試來提高程式品質。