Cos’è la notazione ungherese e dovrei usarla?
Una famosa citazione nei circoli di programmazione è la seguente:
Ci sono solo due cose difficili in Informatica: l’invalidazione della cache e la denominazione delle cose.
La notazione ungherese è un sistema che tenta di rendere un po ‘più semplice la denominazione delle cose. Potresti imbatterti nella notazione ungherese quando esplori una base di codice esistente. Potresti avere un collega particolarmente entusiasta di usarlo. Ma cos’è e che aspetto ha? E dovresti davvero usarlo?
Cos’è la notazione ungherese?
La notazione ungherese è una convenzione sulla denominazione degli identificatori. Viene applicato principalmente alla denominazione delle variabili, ma può anche coprire la denominazione delle funzioni. La notazione è un tentativo di formalizzare il modo in cui il nome di una variabile può indicarne il tipo o lo scopo.
Usando la notazione ungherese, i nomi delle variabili iniziano tutti con un gruppo di lettere con un significato concordato. Queste lettere sono in genere un’abbreviazione per il tipo di variabile. Ad esempio, la lettera l potrebbe rappresentare un numero intero lungo. L’abbreviazione str rappresenta una stringa.
È davvero ungherese?
Sì, la notazione ungherese è stata, in effetti, inventata da un ungherese! Charles Simonyi era un dipendente Microsoft quando ha inventato il termine. Era un programmatore presso l’azienda, lavorando su software applicativo.
In contrasto con la maggior parte delle altre lingue occidentali, i nomi ungheresi ordinano per primo il cognome, seguito dal nome dato. Il termine Notazione ungherese potrebbe fare riferimento a questo fatto, o potrebbe essere solo una felice coincidenza. Sarebbe potuto essere più naturale per Simonyi a causa della sua lingua madre.
Che cosa sembra?
Invece di nominare una variabile semplicemente età , la notazione ungherese include un prefisso che rappresenta il tipo di quella variabile. Ad esempio, in C, un programmatore potrebbe dichiarare una tale variabile come segue:
int iAge;
Si noti che, poiché C è un linguaggio fortemente tipizzato, il prefisso i è ridondante al momento della dichiarazione. Tuttavia, quando si utilizza la variabile in seguito, il prefisso si rivela utile:
printf("I am %d years old", iAge);
Il prefisso aiuta a ricordarci che stiamo usando il tipo corretto di variabile.
In un linguaggio debolmente tipizzato, come PHP, le variabili possono adottare diversi tipi a seconda del valore che contengono. Quindi la notazione ungherese è potenzialmente più utile:
$iAge = 21;
Ecco alcuni altri esempi di uno schema di notazione ungherese comune:
Prefisso | genere | Esempio |
---|---|---|
b | booleano | bLightsEnabled |
c | carattere | cLetterGrade |
str | corda | strCategory |
io | numero intero | iWheels |
f | galleggiante | fMiles |
C | classe | CPerson |
{nome della classe} | oggetto | personLeader |
Sistemi ungheresi contro app ungheresi
La notazione ungherese ha una divisione. In un angolo abbiamo i sistemi ungheresi, nell’altro le app ungheresi. La differenza è sottile ma importantissima.
L’ungherese dei sistemi è la versione che le persone spesso associano alla notazione ungherese. Si occupa strettamente del tipo di variabile, come abbiamo mostrato sopra.
Apps Hungarian tenta di codificare lo scopo di una variabile piuttosto che il suo tipo di dati. Questo è un concetto molto più ampio, quindi gli esempi possono coprire molti casi d’uso diversi:
// an Unsafe String eg a name the user entered in a web form
$usName
// the Length of the vertical side
$lVertical
// a Count of references to an object
$cRefs
Apps Hungarian era la forma originale della notazione ungherese e la descrizione dello scopo era l’intento di Simonyi. I sistemi ungheresi sono una specie di mutazione, che molti sostengono sia per il peggio.
Cosa c’è di buono nella notazione ungherese?
Come accennato in precedenza, l’ungherese di sistema può essere utile per i linguaggi di tipizzazione debole. Consente a qualcuno che guarda il codice di determinare istantaneamente il tipo di una variabile, ogni volta che appare.
La notazione ungherese aiuta anche a rafforzare la denominazione delle variabili coerente. Dopo tutto, una cattiva denominazione delle variabili è uno degli errori di programmazione più comuni . La notazione delle app potrebbe aiutare i programmatori a individuare errori importanti di cui altrimenti il linguaggio non li avviserebbe.
E cosa c’è di male nella notazione ungherese?
In generale, la notazione ungherese è passata di moda. Nelle lingue fortemente tipizzate, è ampiamente ridondante, in particolare il tipo di sistema ungherese. Può anche rendere il codice più difficile da leggere. Eventuali problemi che potrebbe aiutare a risolvere sono spesso segni di difetti più profondi, come un eccessivo affidamento sulle variabili globali .
Apps Notation sembra avere più possibilità, ma anche questa versione ha i suoi detrattori. C’è una buona argomentazione che le informazioni sullo scopo dovrebbero ancora essere parte del tipo della variabile.
Qualsiasi linguaggio che supporti tipi o classi definiti dall’utente in genere può raggiungere gli stessi obiettivi in modi migliori. Assegnare un nome a una variabile usName non lo renderà più sicuro. Ma la creazione di una classe denominata UnsafeString consente a un compilatore di controllare il tipo di una variabile.
Dovrei usare la notazione ungherese?
In definitiva, quella scelta dipende da te. Se lavori in un team più ampio, probabilmente qualcuno prenderà la decisione e tutti dovrebbero accettarla. Se stai scrivendo il tuo codice, puoi decidere in base agli argomenti sopra.
Ma potresti voler seguire gli ultimi consigli di Microsoft, la società da cui ha avuto origine la notazione ungherese. Dal 2008, le loro convenzioni generali di denominazione hanno incluso questa semplice nota:
NON utilizzare la notazione ungherese.