0Pricing
R Academy · Lezione

Commenti, stile e leggibilità

Scriva codice R pulito e documentato seguendo la guida di stile tidyverse.

Commenti, stile e leggibilità è una lezione R Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento R Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso R Academy include 4 lezioni in totale.

Commenti su una sola riga con #

In R, il carattere # introduce un commento. Tutto ciò che va da # alla fine della riga viene ignorato dall'interprete. I commenti sono per le persone: spieghino perché, non solo che cosa.

# 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)

Intestazioni di sezione con ------

Una convenzione R ampiamente adottata consiste nel creare intestazioni di sezione aggiungendo almeno quattro trattini, segni di uguale o cancelleti dopo il testo del commento. RStudio le riconosce e le aggiunge alla struttura del documento per facilitare la navigazione.

# 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')

Convenzione di denominazione snake_case

La guida di stile tidyverse raccomanda snake_case per tutti i nomi degli oggetti: parole minuscole separate da caratteri di sottolineatura. Eviti i punti, che in altri linguaggi ricordano le chiamate a metodi, e il camelCase, per mantenere la coerenza.

# 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')

Spazi intorno agli operatori

Inserisca sempre degli spazi intorno agli operatori di assegnazione e di confronto. Questo migliora notevolmente la leggibilità. L'unica eccezione è all'interno degli elenchi di argomenti delle funzioni, dove = associa i nomi agli argomenti.

# 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')

Usi <-, non =, per l'assegnazione

Sebbene R consenta di usare = per l'assegnazione al livello superiore, la convenzione della comunità è usare <- per assegnare valori agli oggetti e riservare = esclusivamente ai valori degli argomenti delle funzioni. Questa distinzione rende il codice molto più facile da leggere a colpo d'occhio.

# 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)

Limite di 80 caratteri per riga

Mantenere le righe sotto gli 80 caratteri garantisce che il codice sia leggibile negli editor a riquadri affiancati, nelle pagine stampate e negli strumenti di code review. In RStudio può visualizzare una guida del margine alla colonna 80 tramite 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')

Niente punti e virgola

A differenza di JavaScript o C, R non richiede punti e virgola alla fine delle istruzioni. I punti e virgola possono essere usati per inserire più istruzioni su una riga, ma la guida di stile raccomanda: un'istruzione per riga, niente punti e virgola.

# 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)

Nomi di variabili leggibili

Scelga nomi descrittivi senza essere eccessivamente lunghi. Una buona regola è la seguente: se sei mesi dopo deve riflettere per più di un secondo per capire il nome di una variabile, quel nome è troppo breve o troppo criptico.

# 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')

Parentesi graffe e rientri

La guida di stile tidyverse specifica quanto segue: la parentesi graffa di apertura { deve trovarsi sulla stessa riga, mentre quella di chiusura } deve trovarsi su una riga separata. Usi 2 spazi per il rientro, non le tabulazioni. Un rientro coerente è fondamentale per leggere la logica annidata.

# 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))

Spazi all'interno delle parentesi e dopo le virgole

Inserisca uno spazio dopo ogni virgola, come nella scrittura italiana, ma nessuno prima della virgola o immediatamente all'interno delle parentesi. Questo rispecchia la notazione matematica e rende facile da leggere l'indicizzazione.

# 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')

Usare styler e lintr

Due strumenti automatizzano l'applicazione dello stile in R. styler riformatta il codice secondo la guida di stile tidyverse. lintr controlla staticamente il codice per individuare problemi di stile e potenziali errori, senza eseguirlo. Entrambi si integrano con 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')

Verifica rapida

Secondo la guida di stile tidyverse, qual è il modo corretto di scrivere un'istruzione di assegnazione in R tra quelli seguenti?

Stile e leggibilità: concetti chiave

Il codice R ben strutturato è professionale, facile da mantenere e adatto alla collaborazione:

  • # per i commenti: spieghi perché, non solo che cosa
  • Intestazioni di sezione con ------ o ====== per facilitare la navigazione
  • snake_case per tutti i nomi di oggetti e funzioni
  • Spazi intorno a <-, +, == e così via
  • Usi <- per l'assegnazione e = solo negli argomenti delle funzioni
  • Massimo 80 caratteri per riga: divida le chiamate lunghe su più righe
  • Niente punti e virgola: un'istruzione per riga
  • Rientro di 2 spazi e { di apertura sulla stessa riga
  • Usi styler per la formattazione automatica e lintr per rilevare i problemi
# 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)

Domande Frequenti

La lezione «Commenti, stile e leggibilità» è gratuita?

Sì — il testo completo di «Commenti, stile e leggibilità» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso R Academy, passa a CoddyKit PRO. Il corso R Academy include 4 lezioni in totale.

Cosa imparerò in «Commenti, stile e leggibilità»?

Scriva codice R pulito e documentato seguendo la guida di stile tidyverse. Eserciti R Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare R Academy?

Non è richiesta alcuna esperienza precedente. R Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Commenti, stile e leggibilità»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione R Academy?

Sì. Ogni lezione R Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Uso di source() per caricare gli script
  2. Commenti, stile e leggibilità
  3. Directory di lavoro e percorsi dei file
  4. Progetti R e gestione dell'area di lavoro
← Torna a R Academy