Vai al contenuto
Allin

camelCase vs snake_case: guida alle convenzioni di denominazione nel codice

Pubblicato il 20/06/2025 · 3 min di lettura · Strumenti per sviluppatori

Daniel Okonkwo

Daniel OkonkwoSviluppatore front-end e redattore Tech presso Allin

Performance web · Formati di file

Verificato su 2 fonti

Vedi il profilo
In breve

camelCase unisce le parole senza spazi e mette in maiuscola ogni parola tranne la prima, come firstName. snake_case usa parole minuscole unite da trattini bassi, come first_name. PascalCase mette in maiuscola ogni parola, come FirstName, e kebab-case unisce parole minuscole con trattini, come first-name. La scelta giusta è dettata dal tuo linguaggio e dalla sua guida di stile: camelCase per le variabili JavaScript, snake_case per Python, PascalCase per i nomi di classe, kebab-case per URL e CSS.

camelCase, snake_case, PascalCase e kebab-case spiegati: come appare ciascuno, dove è la convenzione e come sceglierne uno con coerenza.

Le quattro convenzioni in breve

Tutte e quattro risolvono lo stesso problema: gli identificatori non possono contenere spazi, quindi i nomi di più parole hanno bisogno di una regola di unione. camelCase scrive myUserName, con la maiuscola a ogni parola tranne la prima. PascalCase, detto anche UpperCamelCase, mette in maiuscola anche la prima parola, dando MyUserName. snake_case mette tutto in minuscolo e unisce con trattini bassi, my_user_name. kebab-case fa lo stesso con i trattini, my-user-name.

Le differenze sono puramente stilistiche per un umano, ma non per un computer: myUserName e my_user_name sono identificatori diversi. Ecco perché convertire tra convenzioni deve essere deliberato, e perché una discrepanza tra il nome di una colonna di database e ciò che il tuo codice si aspetta è una classica fonte di bug.

Dove ogni convenzione è la norma

Le convenzioni sono stabilite dalle comunità dei linguaggi. JavaScript e Java usano camelCase per variabili e funzioni e PascalCase per classi e tipi. Python e Ruby preferiscono snake_case per variabili e funzioni, riservando PascalCase alle classi. C# usa PascalCase per metodi e proprietà. kebab-case è raro nel codice perché i trattini si leggono come segni meno, ma domina in URL, nomi di classe CSS e attributi HTML.

Un caso speciale è la costante. Molti linguaggi scrivono le costanti di compilazione in SCREAMING_SNAKE_CASE, uno snake_case tutto in maiuscolo come MAX_RETRIES. Questo segnala a colpo d'occhio che il valore non deve mai cambiare, ed è uno dei pochi posti in cui lo snake_case maiuscolo è idiomatico.

Scegliere e convertire con coerenza

La regola più importante è la coerenza all'interno di una base di codice. Non mescolare firstName e first_name per lo stesso concetto. Quando attraversi un confine, come leggere colonne snake_case da un database in un'applicazione in camelCase, converti al margine, in un punto chiaramente nominato, invece di disseminare conversioni ovunque.

La conversione è meccanica: dividi il nome in parole e riuniscile con la regola di destinazione. L'unica parte delicata è la divisione, perché camelCase non ha separatore. Un convertitore rileva i confini di parola a ogni maiuscola, mentre snake_case e kebab-case si dividono sul loro delimitatore, permettendoti di spostare un nome tra due stili in modo affidabile.

Convertitore di case (codice)Converti identificatori tra camelCase, snake_case, kebab-case, PascalCase e CONSTANT_CASE, uno per riga. Le sequenze di maiuscole si separano bene: parseHTTPResponse dà parse_http_response.Prova lo strumento

Domande frequenti

Qual è la differenza tra camelCase e PascalCase?
Solo la prima lettera. camelCase inizia in minuscolo (userName); PascalCase mette in maiuscolo anche la prima parola (UserName). PascalCase è detto anche UpperCamelCase.
Perché il kebab-case non si usa per i nomi di variabile?
Perché la maggior parte dei linguaggi legge il trattino come operatore di sottrazione, quindi first-name verrebbe interpretato come first meno name. È sicuro in URL, CSS e HTML, dove il trattino è solo un carattere.
Quale convenzione usare per i campi JSON di un'API REST?
Non c'è una regola unica, ma camelCase e snake_case sono entrambi comuni. Scegline uno, documentalo e mantieni coerenti tutti i campi dell'API così i client possono farci affidamento.
C'è un nome per il MAIUSCOLO con trattini bassi?
Sì, si chiama SCREAMING_SNAKE_CASE, o snake case maiuscolo. È la convenzione comune per le costanti, come MAX_SIZE o API_KEY.

Articoli che potrebbero interessarti

Tutte le guide
SpiegazioneIl cifrario di Cesare spiegato: come funzionano lo scorrimento e ROT13Il cifrario di Cesare sposta ogni lettera di una quantità fissa. Scopri come funziona lo scorrimento, perché ROT13 è un caso speciale, come cifrare e decifrare a mano e perché il cifrario oggi non offre alcuna sicurezza reale.TutorialCome convertire JSON in CSV: appiattire array di oggetti in righe e colonneUna guida pratica per trasformare un array JSON di oggetti in un file CSV pulito, incluso l'appiattimento dei campi annidati e i casi limite.SpiegazioneCos'è uno slug di URL? Perché minuscolo, con trattini e buono per la SEOUno slug di URL è la parte leggibile e con trattini di un indirizzo web che nomina una pagina. Scopri perché gli slug sono minuscoli, come aiutano la SEO e come generarne uno da un titolo.ConfrontocamelCase, snake_case, kebab-case: quale usare, e perché raramente scegli tuLe convenzioni non sono gusto. Il trattino è l'operatore meno, quindi kebab-case non può essere un identificatore nella maggior parte dei linguaggi: ecco perché lo usano CSS e URL. In più, il viaggio di andata e ritorno sugli acronimi che corrompe i nomi in silenzio, e la regola che lo risolve.TutorialBasi delle regex: guida per principiantiUn'espressione regolare è un modello per cercare testo. Ecco i mattoni — classi di caratteri, quantificatori e ancore — con un esempio.SpiegazioneFare l'escape di una stringa per JSON: tre caratteri sono obbligatori, e uno è una trappolaLa RFC 8259 impone l'escape di esattamente tre cose dentro una stringa JSON. Tutto il resto è facoltativo. Ciò che rompe davvero le pipeline è un surrogato spaiato: legale nel testo JSON, impossibile in UTF-8, e sostituito in silenzio non appena i tuoi dati vengono scritti.

Strumenti correlati

Fonti

Hai notato un errore in questo articolo?