iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 10
0
自我挑戰組

TDD - 紅燈,綠燈,重構,30天 TDD之路有你有我系列 第 10

Day10. 阿伊屋欸喔,母音計數器(?-Codewars_Vowel Count

今天就用母音計數唄,看起來很潮
讓我回想起當年學KK音標的感覺(?

https://ithelp.ithome.com.tw/upload/images/20171227/20107209M8HiobmSaR.png

今天的題目非常的貼心,你不需要考慮到大小寫的問題,因為他只會輸入小寫XDDD跟空白
簡單來說 計算字串中的a、e、y、o、u的數量,就可以囉
題目看清楚了就來拆一下題目吧!

  1. 計算a、e、y、o、u的數量
  2. 印出數量

今天的題目跟昨天比較起來簡單好幾倍啊(有嘛? 好像差不多簡單XD

首先來吧! Test Code!!!

[TestMethod]
 public void Input_a_Should_Be_1()
 {
     Assert.AreEqual(1, Kata.GetVowelCount("a"));
 }

而Production Code 也就是老樣子會長成這個樣子

public class Kata
{
    public static int GetVowelCount(string str)
    {
        throw new NotImplementedException();
    }
}

老樣子,跑個測試,沒過很正常,commit一下

https://ithelp.ithome.com.tw/upload/images/20171227/20107209RDnaryUCyC.png

接下來把Production Code改一下,用最小步伐讓Test Case Pass吧!
考慮到計算他,所以就用Linq的Count方法把它做掉吧!

public static int GetVowelCount(string str)
{
    return str.Count(x => x.Equals('a'));
}

接下來跑個測試,PASS!

https://ithelp.ithome.com.tw/upload/images/20171227/2010720940rbULDP5X.png

接下來寫針對計算a這個字元的測試案例吧!

https://ithelp.ithome.com.tw/upload/images/20171227/20107209LSe0R8i5qa.png

都通過之後就再加上e的測試吧!

[TestMethod]
public void Input_e_Should_Be_1()
{
    Assert.AreEqual(1, Kata.GetVowelCount("e"));
}

接下來跑一下測試吧,紅燈! Commit!

https://ithelp.ithome.com.tw/upload/images/20171227/20107209IsBrlVpbsY.png

接下來只要在Count後面多一個OR的判斷就可以通過測試了

public static int GetVowelCount(string str)
{
    return str.Count(x => x.Equals('a') || x.Equals('e'));
}

現在我們完成他了,就來跑個測試,PASS,Commit一下唄!

https://ithelp.ithome.com.tw/upload/images/20171227/20107209H1zPJg9OP0.png

接下來照著補上測試案例,然後Production Code也跟著補上。

https://ithelp.ithome.com.tw/upload/images/20171227/201072093qzajDGudH.png

public static int GetVowelCount(string str)
{
    return str.Count(x => x.Equals('a') || x.Equals('e') || x.Equals('i') || x.Equals('o') || x.Equals('u'));
}

然後再Codewars上提交! Pass!!

https://ithelp.ithome.com.tw/upload/images/20171227/20107209AkeYaWB8YQ.png

通過! PASS! YA!
老樣子我最喜歡的部分就是去看看別人寫這題寫得怎麼樣XD

https://ithelp.ithome.com.tw/upload/images/20171227/20107209qmz2C8sx9x.png

哇勒,我怎麼沒想到可以反向思考呢…..
難怪我總覺得我的code一直重複那個Equals好像不是很好 QQ
看來還可以再加強了

https://github.com/SQZ777/Codewars_VowelCount
下一題,明天見!


上一篇
Day9. 轉吧轉吧七彩霓虹燈?-Codewars_RotateForAMax
下一篇
Day11. 成功的相反不是失敗,那是什麼?今天來講一下寫部落格/文章這件事好了。
系列文
TDD - 紅燈,綠燈,重構,30天 TDD之路有你有我30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言