Systemy wczesnego ostrzegania

Defensywne programowanie w R

Dr. Colin Gillespie

Jumping Rivers

Systemy wczesnego ostrzegania

  • Unikaj problemów tam, gdzie to możliwe
  • Obsługuj błędy w sensowny sposób, gdy się pojawią

Przykład: używanie skrótów T/F zamiast TRUE/FALSE

Defensywne programowanie w R

Problem 1: TRUE i FALSE

  • TRUE i FALSE to wartości specjalne
  • Nie można ich nadpisać
TRUE <- 5
# Error in TRUE <- 5 : invalid (do_set) left-hand side to assignment
Defensywne programowanie w R

Problem 2: TRUE i FALSE

Załóżmy, że obliczamy statystykę F. Naturalne byłoby użycie

# df is the F-density function
(F <- df(1, 9, 67))
[1] 0.7798

R traktuje jednak liczby dodatnie jako TRUE, więc

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

F jest teraz traktowane jako TRUE!

Defensywne programowanie w R
  • Wyrabiaj nawyk używania TRUE i FALSE
    • nie T i F
      • Do testowania wartości TRUE używaj isTRUE()
isTRUE(T)
[1] TRUE
isTRUE(2)
[1] FALSE
T <- 10
isTRUE(T)
[1] FALSE
Defensywne programowanie w R

Czas na krótkie ćwiczenie

Defensywne programowanie w R

Preparing Video For Download...