Naming stuff

Author
Published

January 10, 2024

1 Om at navngive ting

1.1 Mening / formål

Lad variabler, funktion og filers navne være sigende for deres mening.

# 1 
d <- d %>% 
  mutate(s=factor(c("M", "F"))[as.numeric(substr(id,nchar(id),nchar(id))) %% 2])

# 2 
mData <- d %>% filter(s=="M")

Kig på koden og foreslå bedre variable navne

# 1 
data <- data %>% 
  mutate(sex=factor(c("M", "F"))[as.numeric(substr(id,nchar(id),nchar(id))) %% 2])

# 2 
data_males_only <- data %>% filter(sex=="M")
males_only_data <- data %>% filter(sex=="M")
data <- data %>% 
  mutate(sex=cpr2sex(id))

Desværre findes funktionen cpr2sex ikke i hverken basis R eller Tidyverse, men vi kan jo lave den selv:

# Requires a custom function like this -- which could be sourced from file

cpr2sex <- function(x) {
  # This function takes a string (x), presumed to be a valid Danish CPR
  # and return "F", "M" or NA depending on the last character in the string
  # If the last CPR character is an even number, it indicates female sex, and
  # an odd number indicates male sex.
  if (str_sub(x, str_length(x), str_length(x)) %in% c("0","2","4","6","8")) {
    return("F") 
  } else if (str_sub(x, str_length(x), str_length(x)) %in% c("1","3","5","7","9")) {
    return("M") 
  } 
  return(NA) # Last character in CPR is not a ciffre
}

Vi kunne så gemme denne funktion i en separat fil og ’source’e den … eller skrive en ny R pakke.

1.2 Sammensatte navne

  • Brug under_scores
  • Brug ikke camelCase
  • Brug ikke kebab-case