iT邦幫忙

2024 iThome 鐵人賽

DAY 1
0
Software Development

程式淨化計畫:痛苦是重構的起源!系列 第 1

Code smells簡介與Boolean Blindness的重構

  • 分享至 

  • xImage
  •  

什麼是Code smells?

簡單來說, 是指在軟體開發過程中, 描述不良的程式設計或實作所擁有的常見特徵. 這些特徵會導致程式碼難以了解、維護或擴展.

有哪些code smells?

Code smell從早期有很多偉大的軟體工程專家、學者, 在論文與書籍提到, 而這網站Code Smells Catalog已經整理常見的code smell. 所以有提到重構的章節, 會引述網站上的分類.

什麼是重構?

針對code smell的解決, 也就是開發者改進現有的程式碼, 使它更好維護、好理解

重構有什麼好處?

讓程式碼好維護、好理解, 可造福後面的開發者(甚至是自己), 是一種積陰德!
千萬別省時間不做重構, 否則只會讓Big ball of mud快速成形.

Boolean Blindness

簡介

當有函數代入一個boolean值, 用來決定函數的功能, 但開發者會不太知道true/false到底有哪些含意.

重構前範例

假設有個外送平台, 提供使用者訂餐時要做外送還是自取. 此時函數這樣設計:

internal void MakeOrder(string foodName, bool delivery)
{
    if (delivery)
    {
        // process delivery logic
    }
    else
    {
        // process pick up logic
    }
}

重構後範例

因為bool delivery只能讓呼叫者知道有delivery選項,但不知false要做什麼.

為了使參數有意義, 因此建立一個enum OrderType:

internal enum OrderType
{
    Delivery,
    PickUp
}

再將MakeOrder的參數修改:

internal void MakeOrder(string foodName, enum orderType)
{
    if (orderType == OrderType.Delivery)
    {
        // process delivery logic
    }
    else
    {
        // process pick up logic
    }
}

所以後面的呼叫者, 可以清楚的知道要代入外送或自取的選項.


下一篇
Conditional Complexity的重構
系列文
程式淨化計畫:痛苦是重構的起源!31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言