Cuprins >> Introducere > Alegerea numelor semnificative de variabile
Articol de importanță mică, sau discuție

Î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: