Day 3_與91接觸的這4天

每一次遇到強者,都覺得自己的書念得太少

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變得更簡化