Clean Coder:DI 與 AOP 進階實戰,202001 第三梯次

這門培訓會從物件導向的基本,以解決實務問題與需求為出發點,深入淺出帶著大家了解,為何我們的系統設計需要使用 interface,為何需要依賴注入。

在沒有依賴注入框架的協助下,你該怎麼用基本原則來解決耦合過高的問題。怎麼應用設計模式來幾解決複雜度過高的設計問題。接著說明,我們可以透過依賴注入框架來幫助我們更方便地處理哪些繁瑣的處理。

帶著大家手把手,把 legacy code 重構成乾淨的設計,如何較無痛地引入依賴注入與 AOP 設計,讓你具備基本的軟體架構設計能力,從此不再為擴充性跟可測試性煩惱。

報名這裡去➟【202001 Clean Coder-DI與AOP進階實戰 報名表單

預計開課日期

  • 上課日期:2020/1/4(六)~2020/1/5(日),共 2 天
  • 表定上課時間:09:00~17:00
  • 上課地點:台北市大安區金華街199巷5號,淡江大學台北校區,教室待訂

課程簡介

物件導向三特性:封裝、繼承、多型,大家都會背。

物件導向兩抽象:abstract, interface,大家都看過。

好的物件導向原則:SOLID,大家都聽過。

到依賴注入(Dependency Injection)、橫切面設計(Aspect-Oriented Programming),大家可能用過,但就是照樣畫葫蘆,跟著前人這樣做。

想要知其然也之其所以然,這門培訓會從物件導向的基本,以解決實務問題與需求為出發點,深入淺出帶著大家了解,為何我們的系統設計需要使用 interface,需要依賴注入。

在沒有依賴注入框架的協助下,你該怎麼用基本原則來解決耦合過高的問題。怎麼應用設計模式來幾解決複雜度過高的設計問題。接著說明,我們可以透過依賴注入框架來幫助我們更方便地處理哪些繁瑣的處理。

我將帶著大家手把手,以幾乎不用手動多寫一行 code,不用複製貼上,就能把 legacy code 重構成乾淨的設計,如何較無痛地引入依賴注入與 AOP 設計,讓你具備基本的軟體架構設計能力,從此不再為擴充性跟可測試性煩惱。

解決實務設計的問題,例如:

  • 你怎麼避免需求異動時,寫出像波動拳一般的 if/else,導致複雜度指數增加,測試案例全都要跟著調整。
  • 需求異動時,怎麼樣可以只寫新的類別,靈活地切換實作類別,並組合出新的功能,達到開放封閉原則。
  • 怎麼把安全性的處理(如 Authentication/Authorization)、例外處理、log 與 Cache 等與業務獨立的設計拆分出來,既滿足單一職責,關注點分離,且能在系統上像外掛一般加載設計。
  • 了解如何透過標記式(Attribute/Annotation)設計來優化你的架構設計。

課程主題涵蓋範圍(視學員情況調整)

  • 耦合過高導致的問題,以及為何會出現複雜度過高
  • 依賴反轉原則、介面導向設計、依賴注入設計
  • 工廠模式(Factory)、策略模式(Strategy)、裝飾者模式(Decorator)、單例模式(Singleton)
  • 依賴注入框架簡介
  • 橫切面攔截器設計、獨立測試攔截器

※ 本次課程使用的依賴注入框架為 Autofac

這門課適合誰

  • 負責設計底層、共用元件、框架、服務、軟體架構的工程師
  • 初階 coding 想往進階 design 到軟體架構設計的工程師
  • 剛好地提昇可擴充性、可測試性,降低設計複雜度的工程師
  • 看到 legacy code 會手癢,想要好好重構它的工程師

※ 建議上課前要先初步了解物件導向三特性、interface 與 SOLID,要練習過執行單元測試以及 IDE 基本的重構功能,要看得懂 UML class diagram,知道「反射」可以拿來幹嘛。

可以簡單參考我 blog 上兩個系列的文章內容:

課程進行方式

  • 此課程以 C# 搭配 Visual Studio/Rider 進行,重構的部份倚賴 ReSharper/Rider
  • 自備筆電
  • 課程依然沒有投影片,以 flip chart 解說,以 dropbox paper 條列大綱與重點,以 GitHub 為 lab repository 來源
  • 兩天課程會有大量的實作練習,不寫代碼的朋友不建議報名
  • 建立 Line 群組供課前、課中、課後方便進行討論
  • 從滿足需求但帶著問題的產品代碼,如何一路重構來引入相關設計,解決問題

票價(含稅)

  • 一般票:NT$ 25,600/per seat
  • 早鳥票(4張):NT$ 22,600/per seat
  • Odd-e 老友票(單元測試、極速開發、重構與TDD、C#進階設計):NT$ 23,600/per seat
  • 團體票(4人以上): NT$ 23,600/per seat

※ 可開立台灣三聯式發票、invoice、上課證明

講師簡介

Joey Chen,江湖上人稱 91,是敏捷開發的傳教士與點火師,目前為 Odd-e 台灣團隊的負責人,同時擔任敏捷教練與培訓師的角色,擁有 CSM, CSPO, CSD 證照。過去有多年外商大型交易系統的實戰經驗,輔導許多開發團隊敏捷轉型的成功經驗(一開始也有累積不少很有價值的失敗經驗),導入許多極限編程的工程實踐,例如單元測試、持續重構、測試驅動開發、驗收測試與行為驅動開發、持續整合、自動化生成文件、pair programming 與 code review 的實踐。

同時也是技術社群的活躍份子,從 2010 年開始連任八屆的微軟 MVP,兼任 MSDN 論壇板主,也曾經獲得年度 MSDN 文件庫刊登數量世界第一的榮耀。對微軟技術有愛,對 C# 有愛,對自動測試有愛,對重構與設計模式有愛。

擁有多年擔任開發團隊 tech leader, trainer, coach 與 mentor 的經驗,進行的企業內部與公開技術培訓課程已超過 50 場,培訓過的開發人員超過 500 位,擔任研討會與社群活動的講師次數超過 30 次。

同時也是技術書籍的作者與譯者,與朋友合著的書籍包含《ASP.NET MVC 5:網站開發美學》、《ASP.NET MVC 4 網站開發美學》,翻譯的書籍有《單元測試的藝術-第二版》、《敏捷開發實踐》、《進入IT產業必讀的200個 .NET面試決勝題》,同時也在技術 blog 與 Facebook 粉絲頁擁有不少訂閱的粉絲群。


或許您會對下列培訓課程感興趣:

  1. 2019/12/21(六)~2019/12/22(日):演化式設計:測試驅動開發與持續重構 第七梯次(台北)
  2. 2020/1/4(六)~2020/1/5(日):Clean Coder:DI 與 AOP 進階實戰 第三梯次(台北)
  3. 2020/02/08(六):【針對遺留代碼加入單元測試的藝術】 第八梯次(台北)
  4. 2020/02/09(日):【極速開發+】 第九梯次(台北)
  5. 2020/02/28(五)~2020/3/1(日) C#進階設計-從重構學會高易用性與高彈性API設計 第三梯次(台北)

想收到第一手公開培訓課程資訊,或想詢問企業內訓、顧問、教練、諮詢服務的,請洽 Facebook 粉絲專頁:91敏捷開發之路