Tempo di Lettura: 6 minuti
Se siete soliti fare un salto nei forum o nei blog dei programmatori prima o poi vi imbatterete in questo termine dal gusto arcano: CamelCase. Ma cosa significa?
Il CamelCase è la pratica di scrivere parole composte o frasi unendo tutte le parole tra loro, ma lasciando le loro iniziali maiuscole. Il nome (letteralmente “carattere a cammello“) deriva dai “salti” all’interno di una parola (dato dall’inserimento delle maiuscole che aiutano a distinguere le parole di cui è composta), che fanno venire in mente le gobbe di un cammello.
Naming delle variabili
Se qualcuno di voi ha mai programmato allora gli sarà sicuramente venuto in mente questo metodo di scrivere, perché, molto probabilmente, lo avrà usato, del tutto inconsapevolmente, quando avete fatto del “naming” delle variabili, ovvero quando avete dovuto assegnare i nomi alle variabili (a meno che non siete solitii dare dei nomi svincolati dal contesto, come, $a o $pippo o $pluto).
Infatti, tralasciando i cognomi come McCartney e alcuni esempi degli anni ’50 come CinemaScope, il CamelCase è diventato relativamente comune tra i programmatori durante gli anni ’70, per usare più parole per una variabile o un nome di programma, mantenendo comunque la leggibilità. Il motivo per cui questo metodo di scrivere si è diffuso tra i programmatori è dato, principalmente, dal fatto che nelle pratiche di programmazione, gli spazi e i segni d’interpunzione non sono permessi durante l’assegnazione dei nomi delle variabili; è facile capire, quindi, come, per rendere più leggibile e comprensibile il nome di una variabile, sia nata l’esigenza di rendere maiuscole le iniziali di ogni parola di cui è composta (anche se, nel caso specifico, la prima lettera è lasciata minuscola: thisVeryLongName).
Ragioni storiche
Ma perché, allora, non si usa il metodo, altrettanto valido, di separare le parole con un trattino (“-“) o con un underscore (“_”)? La ragione è principalmente storica.
Il CamelCase è stato molto usato dai programmatori Java perché è stata per anni la convenzione ufficiale di Sun per la scrittura dei nomi di classe e di variabile.
Questa pratica contrasta la tradizione del C di unire le sillabe insieme o di segnare le sillabe spezzate con il carattere di underscore.
Per questo motivo, quindi il CamelCase, risulta molto comune in certe community dei linguaggi (inizialmente Pascal; attualmente Java e Visual Basic) e tende ad esser associata alla programmazione orientata agli oggetti.
Quindi, riassumendo, quando un programmatore C vuole scrivere thisverylongname o this_very_long_name, la versione CamelCase di un programmatore Java sarebbe thisVeryLongName.
Per terminare ricordiamo che nella programmazione, il carattere di underscore è spesso usato come prefisso, ovvero è il primo carattere di una variabile: _listingNumber.
In quanti modi diversi è possibile scrivere una parola per renderla leggibile?
Ma quanti altri modi esistono di scrivere una parola o variabile (Letter case)? Ebbene sinora ne ho trovati ben 11 diversi, anche se non tutti possono essere applicati alle variabili. Non c’è nulla di rivoluzionario in queste tecniche e probabilmente le usate tutti i giorni, senza però conoscerne il nome.
Così avremo:
- CAPITAL o UPPER CASE: la parola è scritta tutta in maiuscolo
VARIABILE
- lower case: la parola è scritta tutta in minuscolo
variabile
- Start Case: la prima lettera di ogni parola (separate da spazi) di una frase è scritta in maiuscolo:
This Is A Start Case
- Title Case: a differenza dello “Start Case” la prima lettera di ogni parola di una frase è maiuscola mentre le congiunzioni, le preposizioni e gli articoli sono sempre scritti in minuscolo. Un esempio sono i titoli delle canzoni o degli album: su iTunes li vedrete sempre scritti in Title Case.
This is a Title Case
- Capitalization o Capitalisation: la parola ha solo la prima lettera maiuscola (upper case letter) e tutte le altre sono minuscole (lower case letters)
This is a title case
- unicase: sono quelle lettere che non hanno una versione maiuscola e minuscola (presenti per esempio nell’alfabeto Arabico o Ebraico). Un esempio comune è la: @
- CamelCase o Medial Capitals: è la pratica di scrivere parole composte o frasi in modo che le parole siano unite tra loro senza spazi o segni di interpunzione ma ogni loro lettera iniziale è maiuscola. Molto usato laddove, specie nelle pratiche di programmazione, gli spazi non sono permessi (e l’uso di “-” e “_” risulta antiestetico)
nomeVariabileDaAssegnare
- Pascal Case: è una pratica di scrittura (della vecchia guardia di programmatori Pascal) che è molto simile al CamelCase, ma si contraddistingue da essa perché anche la prima lettera della parola è maiuscola. E’ per questo che questo metodo è anche conosciuto con il nome di UpperCamelCase
NomeVariabileDaAssegnare
Bisogna anche dire che non tutti sono soliti fare distinzione tra CamelCase e Pascal Case, raggruppando le due categorie nella sola CamelCase.
- embedded_underscore: ogni segni di interpunzione o spazio è eliminato ed è sostituito dal carattere di underscore (“_”). Di solito le lettere o sono tutte maiuscole (UPPER_CASE_EMBEDDED_UNDERSCORE)
NOME_VARIABILE_DA_ASSEGNARE
o tutte minuscole (lower_case_embedded_underscore)
nome_variabile_da_assegnare
ma non mancano casi in cui si trovano scritti in forma mista.
Nome_Variabile_Da_Assegnare
- StudlyCaps o StUdLyCaPs, o ancora StickyCaps: è una variazione del CamelCase in cui le ciascuna lettera di una o più parole, sono alternativamente scritte in maiuscolo e minuscolo. La sequenza maiuscolo-minuscolo può seguire uno schema predefinito (pattern) oppure può essere del tutto casuale (random). Usato soprattutto nell’ambiente hacker:
L’oRiGiNe dEL sIgNiFiCaTo Di QuEsTa PrAtIcA e’ OsCuRa
- BiCapitalization o InterCaps: simile allo StudlyCaps e al CamelCase ma il suo ambito non è nell’ambiente hacker bensì in quello del marketing. Infatti la BiCapitalization è l’atto di creare un marchio leggibile e facilmente riconoscibile dagli altri. Ne sono esempi comuni loghi come:
PostScript
NeXT
NeWS
VisiCalc
FrameMaker
TK!solver
EasyWriter
Suggerimenti d’uso
Sul sito Microsoft dedicato alle librerie MSDN vi è un interessato documento che descrive le regole di Class Naming Guidelines. Da qui si raggiunge la pagine delle Capitalization Styles, in cui si mette in luce che:
- Pascal Case: si usa solo per identificatori di 3 o più caratteri in cui le prime lettere di ciascuna parola concatenata è maiuscola
BackColor
- CamelCase: la prima lettera è minuscola mentre le prime lettere di ciascuna parola concatenata è maiuscola
backColor
- Uppercase: tutte le lettere del identificatore sono maiuscole. In realtà si consiglia di usare questo metodo solo per identificatori di 2-3 lettere:
System.IO
System.Web.UI
Altri esempi di CamelCase
Nel capitolo precedente ho tentato di classificare tutti i possibile metodi di scrittura di una variabile o, in generale, di una parola o logo. In realtà, a conti fatti, ogni metodo tende a non essere unico in quanto tende coincidere parzialmente con altre pratiche di scrittura.
E così è un CamelCase “MicroSoft” (o più precisamente un “Pascal Case” o siccome siamo nell’ambito del marketing una BiCapitalization), che altro non è che il nome originario della odierna Microsoft.
Mentre è un CamelCase perfetto il nome “iMac” (anche se volendo si potrebbe anche dire che la parola “iMac” è un particolare caso di StudlyCaps Random)
Allo stesso modo la funzione GetURLBaseAddress non è un vero CamelCase, poiché URL è scritto tutto in maiuscolo: si può quindi dire che è scritto in StudlyCaps Random.
E per finire, una bella auto-citazione. Infatti, non tutti sanno che il nome originario del mio sito era LevySoft , ovvero era scritto in CamelCase (o in Pascal Case o, siccome era un brand, in BiCapitalization). In seguito, per semplificarne la scrittura e siccome non era essenziale disinguere le due parole, cominciai a scriverlo tutto minuscolo tranne l’iniziale, in perfetto stile Capitalization.
Molto interessante! Pur usando alcune di queste convenzioni non ne conoscevo i nomi!
In Pascal Case è saltato il blockquote.
Molto completo come articolo comunque… 😉
Ciao,
Emanuele
Concordo con Luca. Articolo molto ben fatto !
Complimenti !
Mai visto un post come questo, bell’idea 😛
Grazie a tutti 🙂 Sono contento che sia stato di vostro gradimento!
Complimenti. un articolo ben fatto
io utilizzo in java il camelcase, ma se devo dichiarare classi al posto di variabili utilizzo il pascal case.
l’underscore come prefisso ha un senso ben preciso: distinguere le variabili membro di un oggetto
Ma dove sei stato fino ad ora? Sono anni che sono sulle tastiere e non ti avevo mai incontrato! Blog interessantissimo, argomenti trattati con dovizia di particolari e piena padronanza della lingua italiana (cosa rarissima al giorno d’oggi! – leggi Geekissimo e l’Anti-Geekissimo = Lukychan-Fun-Club.blogspot.com)
Insomma, una semplice ricerca google mi ha fatto approdare qui; ho dimenticato il motivo per cui ci sono entrato, ma son due ore che leggo i vecchi post….complimenti davvero!
Ora potrò dire con fierezza che il nome del mio blog è in PascalCase! 😀
Pingback: alessandrobondi | blog | alessandrobondi 25 Settembre 2008
[…] Questo post è interessantissimo… spiega un po’ il mondo del naming delle variabili, a partire dal CamelCase. […]
Odio l’underscore, e da buon programmatore Java adoro il camelCase che è molto più leggibile e meno dispendioso. Ottimo articolo.