為什麼需要學會這門培訓的技能
許多朋友對依賴注入的了解,可能僅止於框架(例如 .NET core 或是 autofac)與其 API 的用法,那實在是太可惜了。這門培訓會從物件導向的基本,以解決實務問題與需求為出發點,深入淺出帶著大家了解,為何我們的系統設計需要使用 interface,為何需要依賴注入,如何用組合取代繼承,如何把一條流程的 legacy code,透過一連串重構的手法,抽出關注點分離的物件以正交的方式組合在一起。
不只是 ASP.NET 中的 ActionFilter 或 Middleware,而是在任何物件組合的過程中,都可以加入橫切面的設計。試著想像一下,下列這些功能都可以動態的加載與卸載,舊的流程程式碼完全不需要修改,進而達到 OCP 開放封閉原則的期望。
- Feature Flag/Toggle:是的,這就是 Continuous Delivery 中與 trunk-based 互相搭配的核心設計,也是現代架構 migration、A/B testing 的基底設計。
- Authentication/Authorization 的檢查
- 泛用型的 Cache,加上 attribute 就能有 cache 效果
- 物件進出的 input/return log
- 重要資料或交易行為的軌跡稽核(Audit trail/log)
- precondition 與 postcondition 的檢查或處理,例如呼叫端傳入密文內容當參數,在傳入方法之前,能被解密成明文,呼叫端與服務端都不需要額外撰寫程式碼處理
- 統一的 error handling,當發生某種特殊的例外時,我們統一要做的例外處理
- 交易控管 (transaction commit 與 rollback)
活動簡介
物件導向三特性:封裝、繼承、多型,大家都會背。
物件導向兩抽象:abstract, interface,大家都看過。
好的物件導向原則:SOLID,大家都聽過。
到依賴注入(Dependency Injection)、橫切面設計(Aspect-Oriented Programming),大家可能用過,但就是照樣畫葫蘆,跟著前人這樣做。
想要知其然也之其所以然,這門培訓會從物件導向的基本,以解決實務問題與需求為出發點,深入淺出帶著大家了解,為何我們的系統設計需要使用 interface,需要依賴注入。
在沒有依賴注入框架的協助下,你該怎麼用基本原則來解決耦合過高的問題。怎麼應用設計模式來幾解決複雜度過高的設計問題。接著說明,我們可以透過依賴注入框架來幫助我們更方便地處理哪些繁瑣的處理。
我將帶著大家手把手,以幾乎不用手動多寫一行 code,甚至不用複製貼上,就能把 legacy code 重構成乾淨的設計,如何較無痛地引入 DI 與 AOP 設計,讓你具備基本的軟體架構設計能力,從此不再為擴充性跟可測試性煩惱。
解決實務設計的問題,例如:
- 你怎麼避免需求異動時,寫出像波動拳一般的 if/else,導致複雜度指數增加,測試案例全都要跟著調整。
- 需求異動時,怎麼樣可以只寫新的類別,靈活地切換實作類別,並組合出新的功能,達到開放封閉原則。
- 怎麼把安全性的處理(如 Authentication/Authorization)、例外處理、log 與 Cache 等與業務獨立的設計拆分出來,既滿足單一職責,關注點分離,且能在系統上像外掛一般加載設計。
- 了解如何透過標記式(Attribute/Annotation)設計來優化你的架構設計。
活動資訊(2 天實體課)
- 日期:2022/5/21 (六) ~ 2022/5/22 (日)
- 時間:09:00~18:00(表訂)
- 地點:台北市大安區金華街199巷5號 淡江大學台北校區 510教室 (暫定)
票種與票價
- 一般票:NT$ 26,000/per seat
- 早鳥票(4張):NT$ 24,000/per seat
- Odd-e 老友票:NT$ 24,000/per seat
- 團體票(3人以上) :NT$ 24,000/per seat
※ 可開立台灣三聯式發票、invoice、上課證明
最新票種優惠:組合優惠票
若您同時購入 Classic TDD by Example 的無限次不限時影音培訓課程,兩門課可共享 91折 優惠。例如:
- DI/AOP 一般票:26000 * 91% = NT$ 23,660
- Classic TDD by Example 一般票:36000 * 91% = NT$ 32,760
※ 兩門課額外折抵的金額高達:NT$ 5,580
報名方式:可直接填寫下方表單,或是點選上方報名按鈕連結。
若您有任何活動相關的疑問,請 email 給我:joeychen@odd-e.com
注意事項
※ 如您無法參加活動,可以轉讓您的報名資格給其他友人,只須來信更新報名資訊即可。
取消報名之退費方式:因部分必要支出與行政費用,完成繳費後如取消報名,將依據時間遞減退還費用。
- 活動前 7 天申請退費,退費用 0 %。
- 活動前 8 天申請退費,退費用 90 %。
- 如換人參加,請來信告知。
這門培訓內容適合誰
- 將舊系統的架構與商業流程,無痛 migrate 到新架構與流程,同時能一併支援 feature toggle 與 A/B testing 的設計
- 負責設計底層、共用元件、框架、服務、軟體架構的工程師
- 初階 coding 想往進階 design 到軟體架構設計的工程師
- 想剛好地提昇可擴充性、可測試性,降低設計複雜度的工程師
- 看到 legacy code 會手癢,想要好好重構它的工程師
進行方式
- 示範語言:C# (雖然設計概念可廣泛應用在 Java, Python, PHP 與 JavaScript,但第二天會示範到框架的部份,仍需要選擇一個語言來呈現框架可以帶來的簡潔與生產力)
- 課程依然沒有投影片,會有 flipchart 說明重點,會有 dropbox paper 紀錄講義,會有 github commits 來說明重構時每一步的變化
- 兩天課程會有大量的實作練習,不寫程式的朋友不建議報名
- 建立 Line 群組供課前、課中、課後方便進行討論、交流、發問、補充內容
- 讓大家自然寫出波動拳的 legacy code 來滿足需求,接著帶著大家首把手如何透過一路的重構來引入相關設計,解決問題
講師簡介
Joey Chen,江湖上人稱 91,是敏捷開發的狂熱者與傳教士,目前為 Odd-e 台灣團隊的負責人,也是 JetBrains 在台灣的培訓夥伴,同時擔任敏捷教練、技術教練與培訓講師的角色。
過去曾有多年外商大型交易系統的實戰經驗,輔導許多開發團隊敏捷轉型的成功經驗(一開始也有累積不少很有價值的失敗經驗),除了在各企業客戶成功導入 Agile, Scrum 與大規模 Scrum(LeSS)之外,還導入許多極限編程的工程實踐,例如單元測試、持續重構、測試驅動開發、驗收測試與行為驅動開發、持續整合、自動化生成文件、pair programming 與 code review 的實踐。
同時也是技術社群的活躍份子,從 2010 年開始連任九屆的微軟 MVP,兼任 MSDN 論壇板主,也曾經獲得年度 MSDN 文件庫刊登數量世界第一的榮耀。對微軟技術有愛,對 C# 有愛,對自動測試有愛,對重構與設計模式有愛。近年來對 Java, PHP, Python 也充滿濃厚的興趣,曾帶領客戶團隊中不會寫程式的 QA ,一起用 Python 完成超過百個 mobile UI 自動化測試。
擁有超過十年擔任開發團隊 tech leader, trainer, coach 與 mentor 的經驗,進行的企業內部與公開技術培訓課程已超過 100 場,培訓過的開發人員超過 1000 位,擔任研討會與社群活動的講師次數超過 30 次。
同時也是技術書籍的作者與譯者,與朋友合著的書籍包含《ASP.NET MVC 5:網站開發美學》、《ASP.NET MVC 4 網站開發美學》,翻譯的書籍有《Kent Beck 的測試驅動開發》、《單元測試的藝術-第二版》、《敏捷開發實踐》、《進入IT產業必讀的200個 .NET面試決勝題》,同時也在技術 blog 與 Facebook 粉絲頁擁有不少訂閱的粉絲群。