預警機制

R 防禦式程式設計

Dr. Colin Gillespie

Jumping Rivers

預警機制

  • 能避則避,儘量預防問題
  • 問題出現時,用合宜方式處理

例如,把 TRUE/FALSE 簡寫成 T/F

R 防禦式程式設計

問題 1:TRUE 與 FALSE

  • TRUE 與 FALSE 是特殊值
  • 不能被覆寫
TRUE <- 5
# Error in TRUE <- 5 : invalid (do_set) left-hand side to assignment
R 防禦式程式設計

問題 2:TRUE 與 FALSE

假設你在計算 F-統計量。很自然會寫成

# df 是 F 密度函式
(F <- df(1, 9, 67))
[1] 0.7798

但 R 會把正數視為 TRUE,所以

if(F) message("Yer aff yer heid!")
Yer aff yer heid!

F 現在被當成 TRUE 了!

R 防禦式程式設計
  • 養成只用 TRUE 和 FALSE 的習慣
    • 不要用 T 和 F
      • 若要測試是否為 TRUE,用 isTRUE()
isTRUE(T)
[1] TRUE
isTRUE(2)
[1] FALSE
T <- 10
isTRUE(T)
[1] FALSE
R 防禦式程式設計

來小試一下吧

R 防禦式程式設計

Preparing Video For Download...