În primul rând, acest topic nu este un subiect obligatoriu. Puteți denumi variabilele oricum doriți. Cu toate acestea, veți realiza curând că alegerea numelor semnificative de variabile este o practică foarte bună de programare.
Dacă mă întrebați, termenul „convenții de denumire în programare general acceptate” este, practic, o glumă. Chiar și în ceea ce privește convențiile de denumire stabilite de mult timp, există întotdeauna o persoană „inteligentă” sau o companie care să creadă că pot re-inventa Universul, prin modificarea/crearea de noi convenții de denumire. Există printre programatori un război general despre care convenții de denumire sunt „bune” și care sunt „rele”, așa că este destul de dificil să se stabilească un standard.
După părerea mea, cel mai bine este să rămânem la practicile care au apărut cu mult timp în urmă (eventual, primele practici care au apărut vreodată) și care și-au dovedit eficiența prin trecerea testului timpului.
Prin urmare, există câteva „reguli” pe care ați putea să le adoptați:
AȘA DA
Utilizați PascalCasingPascalCase denotă practica de a scrie cuvinte compuse sau fraze astfel încât prima literă a fiecărui cuvânt concatenat să fie majusculă. Nu există alte caractere pentru a separa cuvintele, cum ar fi cratime sau subliniere. Exemplu: NumeCeFolosestePascalCasing pentru nume de clase și nume de metode:
|
5
6
7
8
9
10
11
12
13
14
15
16
|
class
ManipulareFisier
{
public void StergeFisier()
{
// ...
}
public void CreazaFisier()
{
// ...
}
}
|
Motive: menținerea coerenței cu Microsoft .NET Framework și ușurința de a citi.
Utilizați camelCasingCamel case (variații: camelCase, CamelCase, camel caps sau medial capitals) este practica de a scrie cuvinte compuse sau fraze astfel încât fiecare cuvânt sau abreviere în interiorul frazei începe cu o literă majusculă, fără spații sau cratime. Exemplu: numeCeFolosesteCamelCasing"> pentru argumentele metodelor și variabile locale:
|
5
6
7
8
9
10
11
12
|
class
LogUtilizator
{
public void Adauga(string[] evenimentLog)
{
int numarComponente = evenimentLog.Length;
// ...
}
}
|
Motive: menținerea coerenței cu Microsoft .NET Framework și ușurința de a citi.
Utilizați PascalCasing pentru abrevieri de 3 sau mai multe caractere (2 caractere sunt ambele majuscule):
|
7
8
9
|
HtmlHelper htmlHelper;
FtpTransfer ftpTransfer;
UIControl uiControl;
|
Motive: în concordanță cu Microsoft .NET Framework. Două caractere majuscule succesive ar atrage vizual prea multă atenție.
Utilizați nume de tip predefinite în loc de nume de tip de sistem, cum ar fi Int16, Single, UInt64, etc:
|
7
8
9
10
11
12
13
14
15
|
// Corect
string numeFamilie;
int varstaUtilizator;
bool esteCreat;
// Evitați
String numeFamilie;
Int32 varstaUtilizator;
Boolean esteCreat;
|
Motive: în conformitate cu Microsoft .NET Framework, face codul mai natural de citit, scurtează tastatul.
Utilizați substantive pentru a denumi o clasă:
|
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public class
Angajat
{
// ...
}
public class
DateUtilizator
{
// ...
}
public class
ColectieDate
{
// ...
}
|
Motive: în conformitate cu Microsoft .NET Framework, ușor de reținut, aranjarea literelor mari și mici diferențiază clasele de variabile
Utilizați litera I ca prefix pentru interfețe. Numele de interfață sunt substantive (fraze) sau adjective:
|
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public interface
ICuloare
{
// ...
}
public interface
IAtacabil
{
// ...
}
public interface
IDispensabil
{
// ...
}
|
Motive: în conformitate cu Microsoft .NET Framework.
Utilizați namespace-uri organizate după o structură clar definită:
|
13
14
|
namespace Companie.Angajat.Date.Varsta { }
namespace Companie.Produs.Pret { }
|
Motive: în conformitate cu Microsoft .NET Framework. Menține o bună organizare a bazei de cod.
Utilizați majuscule pentru constante sau variabile readonly (doar citire):
|
7
8
9
10
11
|
// Corect
public const int MAXIM_CARACTERE = 256;
// Evitați
public const int maximCaractere = 256;
|
Motivul: în concordanță cu Microsoft .NET Framework. Identifică rapid o valoare read-only.
AȘA NU
Utilizați Notația Ungară Notația Ungară este o convenție de denumire a identificatorilor în programare, în care numele unei variabile sau funcții indică tipul acesteia. sau orice alt tip de identificare în identificatori:
|
7
8
9
10
11
12
13
|
// Corect
int varsta;
string nume;
// Evitați
int iVarsta;
string strNume;
|
Motive: în concordanță cu Microsoft .NET Framework; Visual Studio IDE face determinarea tipurilor foarte ușoară (prin tooltips). În general, veți dori să evitați indicatorii de tip în orice identificator.
Utilizați abrevieri. Excepții: abrevieri folosite în mod obișnuit ca nume, cum ar fi Id, Xml, Ftp, Uri:
|
7
8
9
10
11
12
13
14
15
16
17
18
19
|
// Corect
GrupUtilizatori grupUtilizatori;
Sarcina sarcinaAngajat;
// Evitați
GrupUtilizatori grpUtil;
Sarcina srcAngaj;
// Excepții
IdClient idClient;
XmlDocument documentXml;
FtpHelper ftpHelper;
UriPart parteUri;
|
Motive: în conformitate cu Microsoft .NET Framework; previne abrevierile inconsistente.
Utilizați underscore în identificatori. Excepție: puteți utiliza underscore ca prefix pentru variabile statice private și constante:<
|
7
8
9
10
11
12
13
14
15
16
17
|
// Corect
DateTime ziNastereClient;
TimeSpan timpRamas;
// Evitați
DateTime zi_Nastere_Client;
TimeSpan timp_Ramas;
// Excepții
DateTime _dataInregistrare;
const int TEMPERATURA_FIERBERE = 100;
|
Motive: în conformitate cu Microsoft .NET Framework. Face codul mai natural de citit (fără „legato”). De asemenea, evită stresul de subliniere (incapacitatea de a vedea sublinierea).
Multe dintre conceptele prezentate în aceste exemple sunt încă necunoscute vouă. Nu vă bateți capul cu asta, deocamdată. Cu toate acestea, din când în când, atunci când veți deveni mai avansați și veți dezvolta obișnuitele și inevitabilele „obiceiuri” de programare, reveniți la acest articol ca referință, înainte ca „răul să prindă rădăcini prea adânci” și să rămâneți obișnuiți cu o alegere proastă în alegerea numelor semnificative de variabile, care va fi mult mai greu de corectat.
Conceptele explicate în această lecție sunt prezentate și vizual, ca parte a următorului videoclip: