[軟體課程] 程式碼重構(Refactoring)實踐 by C#.NET (, 12 Hrs)

報名資訊

上課日期: (星期六、日)
週六日上課 (09:30 ~ 16:30),共 12 小時。尚未開放報名
上課地點:上課前一週公佈 (另會以電話/電郵通知已報名學員);近捷運交通方便。
(歡迎來電洽談企業內訓包班課程,課程案例與實作可以採該單位專案內容來規劃)

課程介紹

重構 (refactoring) 是在不改變程式碼外在行為的前提下,對程式碼做出修正,以改善程式碼內部的結構。

重構的目的為何?當然是為了增進程式碼的品質。重構的好處是什麼?當然是讓程式碼更具彈性可維護與延展性。重構是為了誰?當然要先為了自己,程式碼簡潔易讀好維護,工作才可能輕鬆有意義,而後才有可能擴展到團隊乃至全公司,形成一種善文化。獨善其身,才有可能兼善天下。

本課程會先提供一個小案例來示範重構的進程,如何把一支看起來雜亂不堪的 C#.NET 程式,逐漸地萃取精煉,成為簡潔易讀的程式,透過 UML 類別與物件循序圖的表達,更容易了解程式碼結構重整的脈絡。整個過程必然伴隨著單元測試的把關,如此才有可能且放心地去重構程式碼。

先約略知道如何做,並能作為爾後重構的範本,再來才是講授重構的原則與核心要點,諸如「Extract (mehtod, class, interface)」、「傳遞參數/回傳值的資料物件組織」、「冗長條件判斷式的多型簡化」等。每一種重構的要點都會整理成範例程式碼 (重構前/重構後),並透過 UML 類別/循序圖來解析。

另外也會介紹 Visual Studio 2017 IDE 的重構機制,針對主要幾個的重構模式,操作示範如何簡化重構的工作,同樣都會寫成範例程式碼,讓學員可以直接作為範本,帶回去應用在工作實務上。

課程目標

  • 了解重構的目的與價值,並掌握重構的主要原則。
  • 了解如何在重構之前撰寫單元測試程式,才能確保重構後仍能保持功能的正確性。
  • 了解如何應用重構模式,檢視並重整程式碼的結構,以增進程式碼的品質。
  • 知道如何使用 IDE 重構工具,來簡化重構的工作。

課程對象

  • 以 微軟 .NET 的程式設計開發者。
  • 技術職主管,希望能導入重構機制至開發/維護單位。
  • 學校資訊講師/在學相關資訊科系學生。

課程大綱

課程單元 課程大綱
熱身 —
第一個重構小案例
  • 嗅出程式碼的壞味道 – 準備重構 (refactoring)
  • 第一步 — 撰寫單元測試程式 (unit test code)
  • 利用萃取 (eXtract) 的技巧分解與重整程式碼陳述
  • 使用 UML 類別 (class) 與 循序 (sequence) 圖解析程式碼結構與物件呼叫關係
重構原則與實踐
  • 從 4W (What, Why, When, Where) 說明與解釋重構
  • 第一原則-重構絕不能影響已上線的系統
  • 檢視重構的基本標準
    • 方法 (method) 內的陳述控制在 30 行以內
    • 傳遞的參數不超過 5 個
  • 重構核心要點
    • 萃取 (eXtract)
      • 方法的單一性 (atomic)
      • 類別 (class) 的提煉
      • 將實作與操作 (operation) 隔離的介面 (interface)
    • 組織作為參數/回傳值傳遞的資料物件 (data object)
    • 簡化條件判斷式 (conditional expressions)
      • 以列舉型態 (enumeration) 取代旗標 (flag)
      • 以多型 (polymorphism) 取代條件判斷式
      • 確實分離條件判斷邏輯與處理邏輯
  • 企業層級系統重構
    • 隔離 UI 與 資料庫的直接耦合 (coupling)
    • 將業務邏輯 (business logic) 從 UI 及 資料庫抽離出來
重構工具應用
使用 Visual Studio 2017
  • 建構單元測試 (unit test)
    • 規劃單元類別測試案例與測試數據
    • 利用 MSUnit 測試框架 (test framework) 撰寫單元測試
  • 利用 Quick Action (快速動作) 提示重構程式碼
    • 修正方法 (method)的參數
    • 重新命名 (類別/方法/欄位/變數)
    • 提煉方法 (eXtract method)
    • 提煉介面 (eXtract interface)
    • 封裝欄位 (encapsulate field)
    • 移除暫存變數 (temporary variable)
    • 使用明確的型態 (explicit type)

課程費用

  • 原價: NT$12,000元(含稅);線上報名並預繳報名費用者優惠:NT$5,800 (含稅)。
  • 舊生優惠:NT$5,400元(含稅)。
  • 同人同行,費用再折抵95折、四人同行則折抵為9折。
  • 本系列課程若期再次旁聽,原價五折 (NT$2,700)。
  • 清貧或由家扶中心推薦,可留言說明或電話聯繫,所有費用 免費!

**備註**

  • 上述課程費用已含電子教材檔、UML Model檔、程式源碼 (含版控)。
  • 為確保報名足額人數,煩請報名完成後再以 ATM 轉帳預約費用 ($1000,當然也可一次繳清)。
  • ATM 轉帳帳號請參考報名表單內匯款帳號。並請於報名確認信所附鏈結點選編輯,可於報名表備註欄位內,註明您的轉帳帳號末 5 碼與轉帳金額。
******

參考產出

o Visual Studio 使用 Quickfix 重構工具簡單說明與錄影操作示範。

o 實作案例-PlaceOrder 重構演練
實作案例-PlaceOrder 重構演練

o PlaceOrder 類別圖 (Class Diagram)
PlaceOrder 類別圖 (Class Diagram)

o Refactoring by QuickFix Tool
Refactoring by QuickFix Tool

o Extract to Interface Class Diagram
Extract to Interface Class Diagram

o 重構進程 by 物件合作循序圖
重構進程 by 物件合作循序圖

o 重構的程式碼
實作案例-PlaceOrder 重構演練

備註資訊

授課講師:
 Kenming Wang
 o 具有近20年豐富教學與顧問輔導經驗。
 o 擅長引導學員反思並找出答案。
 o 專長大型系統架構規劃、企業/系統流程與系統分析、
  巨觀/微觀結構設計、精通 .NET/Java 兩大平台技術應用。
 o 專職軟體設計顧問/講師。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *