上完課之後最重要的就是應用。
而我的課特別之處是,讓大家上完課後,想學更多、手癢想練習、想趕快在實務上發揮效果。
#專業點火
#超熱血
#TDD
內化技能是很難的事情。
不希望上的課白費,自己想了一個案例,用TDD開發麻將的聽牌程式。給定一副手牌,回傳聽哪些牌,寫了五天終於完成。支援萬筒條東南西北青發白。
從高階的Test Case拆分、案例排序、符合物件導向原則的職責分割,到低階的API該怎麼設計、重構。覺得收穫非常多。這幾天練習了很多設計的思考,像是回傳null到底是好還是不好,發現Collection Library都沒在回傳Null的。掌握Collection的使用,深刻感受到LINQ是C#的精華、Lazy Evaluation、學習用FluentAssertion、GetHashCode、Regex等等。
不得不說,TDD真的對於鍛鍊「設計」非常有幫助。整個開發的過程並不算快,常常要停下來思考很多事情。下一個會讓我演算法Fail的Test Case是什麼?覺得API的設計怪怪的,不夠好用該改嗎?怎麼命名重構抽出的方法。此時翻翻clean code、重構、實做模式、設計模式,閱讀感受和以前差了十萬八千里。
或許寫出可維護的程式本來就不是一件快的事情。我們平常所謂的快,其實是用放棄思考設計的時間換來的,欠債維護者還是得還。但思考這件事是可以鍛鍊的。
內化這些技能並不容易,練習的過程中察覺很多不足的地方,但覺得已經可以試著用在小專案的開發上了。
#感恩TDD讚嘆TDD
「c# linq null」的推薦目錄:
c# linq null 在 nullable tracking doesn't work well with linq #37468 - GitHub 的推薦與評價
Linq ; #nullable enable public class C { public IEnumerable ... One of the aim of NRTs is to work well with existing C# patterns. ... <看更多>
c# linq null 在 c# - Null replacement - Is this LINQ readable? - Code Review ... 的推薦與評價
List.ForEach might have its uses, but I wouldn't use it here. It's not "wrong" per se, but a classic foreach loop. ... <看更多>
c# linq null 在 Null value in linq where clause - Stack Overflow 的推薦與評價
... <看更多>
相關內容