每一次遇到強者,都覺得自己的書念得太少
Day 3
今天在公司看了幾乎整天的一些其他的文件,中午也沒有和91哥接觸到。下午五點時才得知91哥辦了一個Coding DOJO。
聽到這個活動我很興奮的就過去參加了。這一次應該是我第三次參加這種Pair programing的活動,在開始前,91哥跟我們分享了一些好用的Chrome Extension。
之後有機會再跟大家一起分享我自己也覺得很實用的Chrome Extension唄 :P
在之前的Coding DOJO中我們常常可以發現自己與別人程度的差異,還能學習其他人Coding的方式
這一次DOJO有限制要先寫測試,也就是以TDD的方式來做題目,這個題目在91的部落格中有寫過
可以先來這裡看一看:[TDD][Codewars] Mumbling
91幫我們重構整個Prodution Code後的感觸最深,之前透過DOJO的方式協作寫完的感覺都沒有像今天一樣有感覺
重構的過程中,我又多看到學到了不少之前沒看過或是已經被我遺忘的一些API,也讓我更了解到底該如何撰寫TDD。
以這次的題目Mumbling來說我們可以將需求拆解成以下
-
ToUpper方法
-
Repeat方法
-
ToLower方法
-
串接"-"方法
如果不了解該如何拆解以上這些動作,我們會思考到底該如何去把這個需求一口氣做完,在我們想要如何把這個需求一次做完時,就會出現很多很難閱讀又很難維護的Legacy Code
除了容易出現Legacy Code之外,也發現如果不把這些需求拆成細項,並且針對每一個細項去做的話,我們今天想要增加一個需求,也會很難去把需求補上。
拆成細項還有一個很大的好處是,它可以讓你知道該如何塞入你想要的測試資料,這點十分重要
如果沒有拆成細項的感知,很容易就會不知道該如何下手,還有不知道到底該怎麼做測試資料
最後91完成後我對完成的Code中的「yield return」提出發問,因為我真的是第一次看到它
91從IEnumerable開始 講到 yeild return實際運作的方式,有讓我真正了解他,這幾天應該會花點時間把IEnumerable整理好並寫出來 :P
Note:這個方法可以使用Linq的Select讓Production Code變得更簡化