活動簡介

提醒您!

此為歷史活動,如您對本活動有興趣,您可以從以下管道得到我們最新活動資訊:

程式碼的鍊金術-重構Plus

活動規劃

軟體的演化是一個不斷適應變化的過程,就像人類會隨著環境的變遷而學習和成長一樣。在不同的需求和條件下,軟體必須能夠展現出不同的功能和特性,但我們不能每次都從零開始,所以如何保持軟體的彈性和可擴展性,是現代軟體工程師的重要技能。在這堂課中,我們不會只講理論,而是透過幾個實際的案例,分析其設計上的缺陷,並運用多種重構方法來建立可維護、可持續發展的軟體。
 

活動等級:中階

活動講師

Jeffray Huang
Jeffray Huang

現為系統架構及開發專業顧問,精通多種開發環境與程式語言,大型專案的跨領域整合尤其拿手,素有鬼才之稱。
2008~2016 Microsoft MVP、Microsoft Techdays 與 MSDN 資深講師、資策會客座講師;電腦書籍黃金年代的頂尖作者,出版過四本程式開發的相關著作,尤其是『極意之道--次世代 .Net Framework 3.5 資料庫開發聖典』至今在正體中文的世界裡仍然無人可出其右,堪稱為 LINQ Framework 中的聖經版本。

講師經歷:
  • 企業顧問
  • 2008-2017 Microsoft MVP
  • Tech-Day 2008-2015 講師
  • 台灣微軟資深特約講師
  • 資策會客座講師
  •  4本.NET 書籍作者
    • 深入剖析ASP.NET元件設計
    • Windows Forms框架設計實務
    • 極意之道-ASP.NET AJAX/Silverlight 聖典
    • 極意之道-次世代 .NET Framework 3.5 資料庫開發聖典

活動介紹

  1. 辨識重構點
  2. 重構三大兵器
    • Extract Method
    • Extract Class
    • Extract Interface
  3. 聚合與解離
  4. 辨識難以理解的程式碼 - Inline things
  5. Configuration Class 的設計
  6. 把非 DI 的 App 重構成 DI 版本

講者的話

關於重構-refactoring

這是一門很奇妙的課題,簡單的重構可能是把魔法數字變成常數、組態物件 - Replace Magic Number with Symbolic Constant 或是把某段抽成函式 - Replace Temp with Query(Extract method,因應情境不同) 複雜的可能是從某個類別抽出介面/抽象類別 - Extract interface / Extract abstract class 從某個類別抽出一群函式重組成另一個類別(解構大類別) Replace Methods with Method Object 拆解 if-else 波動拳成為更容易閱讀的模樣 - Replace Temp with Query/Dispatcher 重構的教條式多不勝舉,但通常圍繞著一個準則,Extract and Recombine(抽離與重組)但面對一個大類別,要做到抽離再重組依賴著工具及經驗,例如開始一塊塊的 Extract method,最後再重組成 Sub class,接著 Extract interface.....

一連串的動作充滿著陷阱及風險,雖然大家都知道可以用測試來避開,但面對一個沒有測試的大類別,要有測試前得先改(重構),這就像是雞生蛋、蛋生雞一樣的矛盾。

作為重構系列的第一堂課,我將其定義為入門等級,會講到一些教條及及如何解構、加測試,引領各位踏入第一道門,重構是一種習慣,不是一個階段,在整個軟體生命週期中,我們會不停的重構,目的就是為了延長軟體的生命週期。

軟體是如何腐化而死的?

很簡單,因為沒時間重構,一直加進新功能,改變舊有行為,最後進入一個把舊有程式註解掉寫新的,更甚之,由於不敢改,乾脆在舊有程式下寫新的程式的詭異狀態,當這些情況發生時,軟體基本上已經到達遲暮之時,重構的習慣就是延緩這個時機的到來。

是的,你沒看錯,是延緩,不是完全避免,存活超過 20 年以上的軟體很稀少,這來自很多因素,外在環境的改變,內在人員的輪動,但沒有重構的習慣一定佔很大百分比,說是加速 50% 也不為過。

喔,我沒有忘記 chatgpt,這堂課裡面你也會看到如何使用 chatgpt 來協助重構,這是一個嶄新的年代,我們要習慣 😊

 

注意事項

  • 本活動使用 C# 為主要語言

還想知道什麼就留言吧

持續學習

  • 我們使用 Microsoft Teams 做課程討論平台。了解更多

注意事項

  • 若報名人數不足15人,或因不可抗拒因素(如:天災、停電)主辦單位有權取消當次活動,並無息退還全額活動費用。
  • 主辦單位保留接受報名與否之權利,倘因故無法接受報名,將會無息退還全額活動費用。
  • 主辦單位保留對活動內容調整的權力。

退款方法

  • 因部分必要支出與行政費用,完成繳費後如取消報名,將依據時間遞減退還費用。
  • 活動前7天申請退費,退費用0 %
  • 活動前8天申請退費,退費用90 %
  • 收到申請表後我們會主動與您聯繫。

目前活動