Komentarze, styl i czytelność
Pisz przejrzysty, udokumentowany kod R zgodnie z przewodnikiem stylistycznym tidyverse.
Komentarze, styl i czytelność to bezpłatna lekcja R Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej R Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs R Academy zawiera 4 lekcji w sumie.
Komentarze jednoliniowe za pomocą #
W R znak # rozpoczyna komentarz. Wszystko od # do końca wiersza jest ignorowane przez interpreter. Komentarze są przeznaczone dla ludzi — wyjaśniaj dlaczego, a nie tylko co.
# This is a comment — R ignores it completely
x <- 42 # inline comment after code
# Bad comment (states the obvious):
y <- y + 1 # add 1 to y
# Good comment (explains intent):
y <- y + 1 # shift index to 1-based for output display
cat('x =', x)Nagłówki sekcji za pomocą ------
Powszechnie przyjęta konwencja w R polega na tworzeniu nagłówków sekcji przez dodanie co najmniej czterech myślników, znaków równości lub krzyżyków po tekście komentarza. RStudio rozpoznaje takie nagłówki i dodaje je do konspektu dokumentu, ułatwiając nawigację.
# Data Loading -------------------------------------------------------
# This section loads raw CSV files from the data/ folder
# Data Cleaning =======================================================
# Remove duplicates and fix missing values
# Modeling ############################################################
# Fit linear model and evaluate
cat('Section headers improve navigation')Konwencja nazewnictwa snake_case
Przewodnik stylu tidyverse zaleca używanie snake_case dla wszystkich nazw obiektów: małe litery i wyrazy oddzielone znakami podkreślenia. Dla zachowania spójności należy unikać kropek (które w innych językach przypominają wywołania metod) oraz camelCase.
# Good: snake_case
user_age <- 25
monthly_revenue <- 15000
calculate_mean <- function(x) mean(x)
# Avoid: dots in names (looks like OOP method calls)
user.age <- 25 # confusing
# Avoid: camelCase (inconsistent with tidyverse)
userAge <- 25
# Avoid: ALL_CAPS (reserved for true constants by convention)
MAX_RETRIES <- 3 # acceptable for config constants only
cat('snake_case wins')Spacje wokół operatorów
Zawsze umieszczaj spacje wokół operatorów przypisania i porównania. Znacznie poprawia to czytelność. Wyjątkiem jest lista argumentów funkcji, w której = przypisuje wartości nazwom argumentów.
# Good: spaces around <- and operators
x <- 10
y <- x + 5
result <- x * y - 2
is_valid <- x > 0 & y < 100
# Bad: cramped
x<-10
y<-x+5
# Function arguments: = without extra spaces is fine
mean(x = c(1, 2, 3), na.rm = TRUE)
# Comparison operators also need spaces
if (x > 0) cat('positive')
if (x >= 0 & y <= 100) cat('in range')Używaj <- zamiast = do przypisania
Chociaż R pozwala używać = do przypisania na najwyższym poziomie, powszechnie przyjęta konwencja nakazuje używać <- do przypisywania obiektów, a = rezerwować wyłącznie dla wartości argumentów funkcji. To rozróżnienie znacznie ułatwia szybkie odczytywanie kodu.
# Correct: <- for assignment
name <- 'Alice'
score <- 95.5
results <- c(1, 2, 3)
# Correct: = inside function calls
round(3.14159, digits = 2)
read.csv('data.csv', header = TRUE, sep = ',')
# Avoid: = for top-level assignment
# name = 'Alice' <- works but not idiomatic
cat('Assignment convention:', name, score)Limit 80 znaków w wierszu
Ograniczenie długości wierszy do 80 znaków zapewnia czytelność kodu w edytorach z podziałem na panele, na wydrukowanych stronach i w narzędziach do przeglądania kodu. W RStudio można wyświetlić znacznik marginesu w kolumnie 80, wybierając Tools → Global Options → Code → Display.
# Bad: one very long line (hard to read)
result <- some_function(argument_one = 'value', argument_two = 100, argument_three = TRUE, argument_four = 'long_string')
# Good: break at commas, indent continuation
result <- some_function(
argument_one = 'value',
argument_two = 100,
argument_three = TRUE,
argument_four = 'long_string'
)
cat('Readable at 80 chars')Bez średników
W przeciwieństwie do JavaScriptu lub C, R nie wymaga średników na końcu instrukcji. Średników można używać do umieszczania wielu instrukcji w jednym wierszu, ale przewodnik stylu zaleca: jedna instrukcja w wierszu, bez średników.
# Bad: semicolons and multiple statements per line
x <- 1; y <- 2; z <- x + y
# Good: one statement per line
x <- 1
y <- 2
z <- x + y
# The semicolon form is only acceptable in very short
# interactive throwaway code, never in scripts
cat('z =', z)Czytelne nazwy zmiennych
Wybieraj nazwy opisowe, ale nieprzesadnie długie. Dobra zasada brzmi: jeśli po sześciu miesiącach potrzebujesz więcej niż sekundy, aby zrozumieć nazwę zmiennej, jest ona zbyt krótka lub zbyt zagadkowa.
# Too cryptic:
d <- read.csv('data.csv')
tmp <- d[d$v1 > 0, ]
r <- lm(v2 ~ v1, data = tmp)
# Good names:
sales_data <- read.csv('data.csv')
positive_rows <- sales_data[sales_data$revenue > 0, ]
revenue_model <- lm(profit ~ revenue, data = positive_rows)
# Avoid abbreviations that are not universally understood:
# n_obs is fine (number of observations)
# nrv is not (nobody knows what this is)
cat('Names tell the story')Nawiasy klamrowe i wcięcia
Przewodnik stylu tidyverse określa następujące zasady: otwierający nawias klamrowy { umieszczaj w tym samym wierszu, a zamykający } w osobnym wierszu. Używaj 2 spacji do wcięć (nie tabulatorów). Spójne wcięcia mają kluczowe znaczenie dla czytelności zagnieżdżonej logiki.
# Good style: brace on same line, 2-space indent
if (x > 0) {
cat('positive\n')
} else {
cat('non-positive\n')
}
# Good function definition:
calculate_bmi <- function(weight_kg, height_m) {
bmi <- weight_kg / height_m^2
round(bmi, 1)
}
cat('BMI:', calculate_bmi(70, 1.75))Odstępy wewnątrz nawiasów i po przecinkach
Wstawiaj spację po każdym przecinku (tak jak w angielskim zapisie), ale nie wstawiaj spacji przed przecinkiem ani bezpośrednio wewnątrz nawiasów. Odzwierciedla to zapis matematyczny i ułatwia odczytywanie indeksowania.
# Good: space after comma, not before
x <- c(1, 2, 3, 4, 5)
m <- matrix(1:9, nrow = 3, ncol = 3)
# Subsetting: no space before [ or inside []
first_row <- m[1, ] # good
value <- m[2, 3] # good
# Bad:
# c(1,2,3) <- no space after comma
# m[ 1, ] <- space after [
# m[1 , ] <- space before comma
cat('Spacing is consistent')Używanie styler i lintr
Dwa narzędzia automatyzują egzekwowanie stylu w R. styler formatuje kod zgodnie z przewodnikiem stylu tidyverse. lintr statycznie sprawdza kod pod kątem stylu i potencjalnych błędów, bez jego uruchamiania. Oba narzędzia integrują się z RStudio.
# styler: reformat a file automatically
# install.packages('styler')
# styler::style_file('my_script.R')
# styler: reformat the whole project
# styler::style_dir('R/')
# lintr: check for style and potential bugs
# install.packages('lintr')
# lintr::lint('my_script.R')
# lintr reports issues like:
# line 10: [object_name_linter] Variable 'myVar' should use snake_case
# line 15: [spaces_around_ops_linter] No space before '<-'
cat('Style tools: styler + lintr')Szybkie sprawdzenie
Który z poniższych sposobów zapisu instrukcji przypisania w R jest poprawny według przewodnika stylu tidyverse?
Styl i czytelność — najważniejsze informacje
Dobrze sformatowany kod R jest profesjonalny, łatwy w utrzymaniu i sprzyja współpracy:
#do komentarzy — wyjaśniaj dlaczego, a nie tylko co- Nagłówki sekcji z użyciem
------lub======ułatwiają nawigację snake_casedla wszystkich nazw obiektów i funkcji- Spacje wokół
<-,+,==itd. - Używaj
<-do przypisania, a=tylko w argumentach funkcji - Maksymalnie 80 znaków w wierszu — dziel długie wywołania na kilka wierszy
- Bez średników — jedna instrukcja w wierszu
- Wcięcia dwuspacjowe, otwierający
{w tym samym wierszu - Używaj styler do automatycznego formatowania, a lintr do wykrywania problemów
# Putting it all together:
# Calculate summary statistics ----------------------------------------
calculate_summary <- function(values, remove_na = TRUE) {
cleaned <- values[!is.na(values)]
list(
mean = mean(cleaned),
median = median(cleaned),
sd = sd(cleaned)
)
}
test_scores <- c(85, 90, NA, 78, 92, 88)
stats <- calculate_summary(test_scores)
cat('Mean:', stats$mean, '\n')
cat('SD: ', stats$sd)Często zadawane pytania
Czy lekcja „Komentarze, styl i czytelność” jest bezpłatna?
Tak — pełny tekst „Komentarze, styl i czytelność” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu R Academy, przejdź na CoddyKit PRO. Kurs R Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Komentarze, styl i czytelność”?
Pisz przejrzysty, udokumentowany kod R zgodnie z przewodnikiem stylistycznym tidyverse. Ćwiczysz R Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć R Academy?
Nie wymagamy żadnego doświadczenia. R Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Komentarze, styl i czytelność”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji R Academy?
Tak. Każda lekcja R Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Używanie source() do ładowania skryptów
- Komentarze, styl i czytelność
- Katalogi robocze i ścieżki plików
- Projekty R i zarządzanie obszarem roboczym