檢視與重構程式碼

案例研究:用 Python 建構軟體

Mark Pedigo

Principal Data Scientist

定期程式碼審查的好處

  • 提升程式碼品質
    • 及早發現不一致
  • 知識分享
    • 協作
    • 保持一致
  • 一致性與最佳實務
    • 高標準

兩人一起在電腦上進行程式碼審查

案例研究:用 Python 建構軟體

程式碼審查範例

def factorial(n):
    if n == 0:
        return 1
    else:
        result = 1
        for i in range(1, n + 1):
            result *= i
        return result

就以下面向給回饋:

  • 功能性
  • 可讀性
    • 範例-不必要的 else
  • 邊界情況
    • 範例-階乘的負數輸入
案例研究:用 Python 建構軟體

重構程式碼的好處

  • 提升程式碼品質
  • 更易維護
  • 降低技術債

將麵條式程式轉化為流程圖

案例研究:用 Python 建構軟體

重構範例

# Original code
def factorial(n):
    if n == 0:
        return 1
    else:
        result = 1
        for i in range(1, n + 1):
            result *= i
        return result
# Refactored code
def factorial(n):
    if n < 0:
        raise ValueError("Not defined")

if n == 0: return 1
result = 1 for i in range(1, n + 1): result *= i return result
案例研究:用 Python 建構軟體

新公式的新函式

前式 $$m = P \cdot \frac{r (1 + r)^N}{(1+r)^N - 1}$$ 其中,$m$ 為每月還款額,$P$ 為貸款金額,$r$ 為月利率,$N$ 為期數

新式 $$P = m \cdot \frac{(1+r)^N - 1}{r (1 + r)^N}$$

案例研究:用 Python 建構軟體

路線圖

里程碑路線圖:標示專案已完成與即將開始的部分

案例研究:用 Python 建構軟體

一起來練習吧!

案例研究:用 Python 建構軟體

Preparing Video For Download...