Rà soát và tái cấu trúc mã

Nghiên cứu tình huống: Xây dựng phần mềm bằng Python

Mark Pedigo

Principal Data Scientist

Lợi ích của rà soát mã định kỳ

  • Nâng chất lượng mã
    • Phát hiện sai lệch sớm
  • Chia sẻ kiến thức
    • Hợp tác
    • Giữ đồng bộ
  • Tính nhất quán và thực hành tốt
    • Tiêu chuẩn cao

Hai người cùng rà soát mã trên máy tính

Nghiên cứu tình huống: Xây dựng phần mềm bằng Python

Ví dụ rà soát mã

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

Góp ý về:

  • Chức năng
  • Dễ đọc
    • Ví dụ - else không cần thiết
  • Trường hợp biên
    • Ví dụ - Số âm cho giai thừa
Nghiên cứu tình huống: Xây dựng phần mềm bằng Python

Lợi ích của tái cấu trúc mã

  • Nâng chất lượng mã
  • Dễ bảo trì hơn
  • Giảm nợ kỹ thuật

Xoắn mì spaghetti được chuyển thành sơ đồ luồng

Nghiên cứu tình huống: Xây dựng phần mềm bằng Python

Ví dụ tái cấu trúc

# 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
Nghiên cứu tình huống: Xây dựng phần mềm bằng Python

Hàm mới cho công thức mới

Công thức trước $$m = P \cdot \frac{r (1 + r)^N}{(1+r)^N - 1}$$ trong đó $m$ là khoản trả hàng tháng, $P$ là số tiền vay, $r$ là lãi suất tháng, và $N$ là số kỳ thanh toán hàng tháng

Công thức mới $$P = m \cdot \frac{(1+r)^N - 1}{r (1 + r)^N}$$

Nghiên cứu tình huống: Xây dựng phần mềm bằng Python

Lộ trình

Lộ trình cho thấy phần đã hoàn thành và phần sẽ bắt đầu trong dự án

Nghiên cứu tình huống: Xây dựng phần mềm bằng Python

Ayo berlatih!

Nghiên cứu tình huống: Xây dựng phần mềm bằng Python

Preparing Video For Download...