21.下列哪一項最能代表軟體重構(Refactoring)的目的?
(A)增加新功能
(B)使程式碼更易讀、更易維護,而不改變外部行為
(C)改變系統功能需求
(D)增加系統效能、提升硬體速度
統計: A(0), B(12), C(4), D(3), E(0) #3678252
詳解 (共 1 筆)
【解題思路】
解這題的關鍵字只有一句:
「Refactoring(重構)=不改變外部行為,只改善內部程式碼品質」
重構並不是加功能,也不是改需求,而是:
維持功能不變,但讓程式碼變得更乾淨、可讀、易維護。
因此看到選項 (B),就知道是標準答案。
【逐步解析觀念】
重構的精神來自 Martin Fowler 的經典定義:
「在不改變軟體外部行為的前提下,改善其內部結構。」
換句話說:
-
對使用者來說,功能完全一樣
-
對工程師來說,程式變清楚、變好維護、不易出錯
重構常見的情況:
-
程式碼寫久了變亂 → 需要整理
-
去除重複程式碼
-
讓命名更清楚
-
抽離函式、改善架構
都屬於重構的範疇。
【選項逐一破題】
(A) 增加新功能
這叫「開發新功能」,不是重構。
重構不會增加功能,只改善現有程式內部品質。
(B) 使程式碼更易讀、更易維護,而不改變外部行為
完全符合 Refactoring 的定義。
必選!
(C) 改變系統功能需求
那叫「需求變更(Requirement Change)」,不是重構。
(D) 增加系統效能、提升硬體速度
提升效能可能是重構的附帶效果,但重構不是用來改善硬體,也不是主要用效能當目標。
【延伸知識】
重構常見技術:
-
Extract Method(抽出方法)
-
Rename Variable(重新命名變數)
-
Remove Duplicate Code(移除重複程式碼)
-
Simplify Conditional(簡化條件式)
重構的三大目的:
-
可讀性更好(Readability)
-
更容易維護(Maintainability)
-
減少 Bug 發生(Reduce technical debt)
重構不是:
-
新功能開發
-
修 Bug
-
改需求
-
伺服器升級或效能最佳化
【記憶技巧】
一句話秒記:
「重構=不變功能、變漂亮。」
或補教班口訣:
「不改功能改內裝,就是重構。」
【常見錯誤】
-
以為重構會增加新功能
錯!重構一定不改外部行為,否則就不是重構。 -
把效能提升當成重構目標
效能提升可能發生,但不是重構的核心目的。 -
把重構和需求變更搞混
需求變了=功能改了,但重構功能不能變。