21.下列哪一項最能代表軟體重構(Refactoring)的目的?
(A)增加新功能
(B)使程式碼更易讀、更易維護,而不改變外部行為
(C)改變系統功能需求
(D)增加系統效能、提升硬體速度

答案:登入後查看
統計: A(0), B(12), C(4), D(3), E(0) #3678252

詳解 (共 1 筆)

#7222619

【解題思路】

解這題的關鍵字只有一句:

「Refactoring(重構)=不改變外部行為,只改善內部程式碼品質」

重構並不是加功能,也不是改需求,而是:

維持功能不變,但讓程式碼變得更乾淨、可讀、易維護。

因此看到選項 (B),就知道是標準答案。

【逐步解析觀念】

重構的精神來自 Martin Fowler 的經典定義:

「在不改變軟體外部行為的前提下,改善其內部結構。」

換句話說:

  • 對使用者來說,功能完全一樣

  • 對工程師來說,程式變清楚、變好維護、不易出錯

重構常見的情況:

  • 程式碼寫久了變亂 → 需要整理

  • 去除重複程式碼

  • 讓命名更清楚

  • 抽離函式、改善架構

都屬於重構的範疇。

【選項逐一破題】

(A) 增加新功能
這叫「開發新功能」,不是重構。
重構不會增加功能,只改善現有程式內部品質。

(B) 使程式碼更易讀、更易維護,而不改變外部行為
完全符合 Refactoring 的定義。
必選!

(C) 改變系統功能需求
那叫「需求變更(Requirement Change)」,不是重構。

(D) 增加系統效能、提升硬體速度
提升效能可能是重構的附帶效果,但重構不是用來改善硬體,也不是主要用效能當目標。

【延伸知識】

重構常見技術:

  • Extract Method(抽出方法)

  • Rename Variable(重新命名變數)

  • Remove Duplicate Code(移除重複程式碼)

  • Simplify Conditional(簡化條件式)

重構的三大目的:

  1. 可讀性更好(Readability)

  2. 更容易維護(Maintainability)

  3. 減少 Bug 發生(Reduce technical debt)

重構不是:

  • 新功能開發

  • 修 Bug

  • 改需求

  • 伺服器升級或效能最佳化

【記憶技巧】

一句話秒記:

「重構=不變功能、變漂亮。」

或補教班口訣:

「不改功能改內裝,就是重構。」

【常見錯誤】

  1. 以為重構會增加新功能
    錯!重構一定不改外部行為,否則就不是重構。

  2. 把效能提升當成重構目標
    效能提升可能發生,但不是重構的核心目的。

  3. 把重構和需求變更搞混
    需求變了=功能改了,但重構功能不能變。

0
0

私人筆記 (共 1 筆)

私人筆記#7746981
未解鎖
軟體工程與重構(Refactoring...
(共 64 字,隱藏中)
前往觀看
1
0