在使用nameof之前 在實作需要class, property與method名稱的功能時, 程式碼各處寫了hardcode的字串來表示這些名稱.但總會有寫錯的...
Replace Error Code with Exception 簡介 假如有個函數, 它回傳特殊值來代表某種錯誤...? 重構前範例 假設有個購物車系統,...
Replace Exception with Test 簡介 假如有段邏輯, 只需要做個簡單的測試(判斷)即可完成功能, 但卻有例外狀況的處理. 重構前範例 假...
保持邏輯的局部性 簡介 假如有個複雜邏輯的演算法, 需要重構成一個函數, 但是這邏輯只會用在一個地方. 重構範例 假如有個手機遊戲, 根據會員的等級, 所消費的...
外覆方法 重構前 假如有個類別Employee, 用來處理支付薪水的函數Pay() public class Employee { public voi...
新生方法 重構前 假如有個類別TransactionGate, 用來處理每個交易的日期設定, 並賦予manager做處理. public class Trans...
Replace Constructor with Creation Method 簡介 假如有個類別, 它有很多的建構函數, 對使用者來說, 會混淆何時該呼叫哪...
Replace Method with Method Object 簡介 假如有個很長的函數, 有很多的區域變數且交織在一起, 難以用Extract Metho...
Breaking Yo-Yo Hierarchies 簡介 假如你在尋找一個方法的具體實作, 必須在這方法的類別階層裡上上下下尋找.這種階層稱為Yo-Yo Hi...
Replace Nested Conditional with Guard Clauses 簡介 假如你有一組巢狀式條件, 且很難去了解正常的程式碼執行流程.此...
Feature envy 簡介 當有個方法,他處理眾多的欄位、函數來自於別的class, 這方法稱之為feature envy. 重構前範例 假設有位富人, 聘...
Data clump 簡介 有些欄位會一起出現在不同的class與參數列表.當一個系統的各處程式碼常出現這些欄位且形影不離, 勢必得思考他們與類別或參數列表的關...
Conditional Complexity 簡介 在程式碼區塊使用不同的冗長的if/else/switch判斷條件, 該函數的複雜度越來越大. 重構前範例 假...
什麼是Code smells? 簡單來說, 是指在軟體開發過程中, 描述不良的程式設計或實作所擁有的常見特徵. 這些特徵會導致程式碼難以了解、維護或擴展. 有哪...
大家好,我是一宵三筵!接下來幾篇是實戰篇!也就是實際運用於工作會分享我平常是怎麼使用ChatGPT幫我完成工作的 那我個人在工作上,近期部門主要活動除了開發新的...
本章內容 型別層次(is-a)進行重構 原則 分類: 找出共通性、差異性,越接近根部,越通用,越接近底部,越具體。 合併: 分類後組成超型別(共通...
已經過了鐵人賽的三分之二了,也是花了近三分之一的篇幅跟大家分享,從故事中舉例可以做哪些優化。而這些痛點在改善之後,下一個發生問題的點又出現,然後又再一次次地發現...
本文同步於個人部落格: Simplifying Conditional Logic This article references the chapter 10...
本篇同步發文於個人網站: Organizing Data This article references the chapter 9 ” Organizing...
本篇同步發文於個人網站: Moving Features This article references the chapter 8 " Moving...
本篇同步發文於個人網站: Encapsulation This article references the chapter 7 ” Encapsulation...
本篇同步發文於個人網站: A First Set of Refactorings This article references the chapter 6 ”...
本文同步發自於個人blog - [Refactoring] Chapter 2 Principles in Refactoring - Book Summary...
Unit Test 應用於使用重構與測試手法優化 C# Code-3-前言 昨天已經把 DemoCalculate 中的 Calculate 方法檢驗參數的部分...
Unit Test 應用於使用重構與測試手法優化 C# Code-2-前言 昨天有提到我們在 Console 執行應用程式時,可以依序輸入 ID、名字、數學數值...
程式碼設計框架對測試碼可測試性的影響 今天進到核心技術的第三個系列—重構 (Refactoring) 與接縫 (Seam),那不免俗的先來看 Roy Osher...
上次在用函式來傳達你的心意> 0 <中我們把while迴圈內在做什麼用函式名稱詮釋出來,看起來像是在閱讀一篇文章一樣,這次讓我帶你看main裡面還有...
前情提要一下,上次在變數命名的善意那篇中我們把arr換成seats代表一堆位置,n1換成seat代表位置索引,n2換成number代表要放入seats內的值,這...
這是一小段泡沫排序法的程式碼,可是在說什麼呢?你可以試著閱讀他,但千萬不要勉強自己。 int main() { int arr[10] = {99, 0...
數據顯示,工程師完成最後 20% 的工作時間跟之前的 80% 一樣多 完成功能後,重構是另一個開始 昨天我們完成了一個跑得動的程式,但很明顯這不是一個好的程...