C++ Kodo Standartas

Paskutinis keitimas: 2004-11-04

Parengė GoniX

Šis dokumentas gali būti laisvai platinamas ir/ar naudojamas, kol už tai neimamas joks mokestis. Tam jis ir parengtas. Jei pastebėjote klaidų arba jei norite pasiūlyti patobulinimą, galite rašykite man.

Turinys


Įvadas

Standarto svarba

Kiekvienas individualus programuotojas dažniausiai rašo kodą taip, kaip jam atrodo teisingiausia ir įskaitomiausia. Tačiau kitam žmogui perskaityti kito visiškai kitokiu stiliumi parašytą kodą gali būti gana sudėtinga. Kadangi 100% nusistovėjusio standarto programavime nėra ir, tikriausiai, negali būti, aš siūlau vieną iš variantų.

Standartų pliusai

Standartų minusai


Literatūra


Vardai

Vardas turi tikti

Vardus stenkitės sudaryti, kad jie atspindėtų funkcijos, klasės, metodo, kintamojo paskirtį.


Kalba

Vardai (jei įmanoma) turėtų būti anglų kalba.

Argumentai

Anglų kalbą, tikriausiai, supranta visi programuotojai. Net jei kodas skaitomas tik ribotam kiekiui programuotojų, kurie tikrai supranta jūsų pasirinktą kalbą, vistiek rekomenduojama programavime vartoti anglų kalbą.


Santrumpos

Jei varde reikia naudoti santrumpą kaip HTML, URL, ir t.t. nerašykite jo viso didžiosimis raidėmis. Elkites su juo, kaip su paprastu žodžiu.

Argumentai

Dažniausiai sunkiau suprasti sutrumpinimą, kai jis yra visas didžiosiomis raidėmis (ypač jei po jo eina kitas žodis prasidedantis didžiąja)

Pavyzdys

Neteisingai:

    class MyXVZ

Teisingai:

    class MyXvz

Klasės

Argumentai

Pavyzdys

    class SomeObject

Rekomenduojama, kad klasės vardas būtų daiktavardis.


Metodai

Argumentai

Pavyzdys

    class SomeObject
    {
    public:
        int     DoIt();
        int     GetValue();
        void    HandleError();
    }

Rekomenduojama, kad metodo vardas būtų reikštų veiksmą.


Metodų parametrai

Argumentai

Pavyzdys

    class SomeObject
    {
    public:
        int MyMethod(FooBar& arFooBar);
    }

Klasių atributai

Argumentai

Pavyzdys

    class SomeObject
    {
    public:
        int     GetLastError();

    private:
        int     mErrorNumber;
        char*   mpErrorMessage;
    }

Steko kintamieji

Argumentai

Pavyzdys

    SomeObject::DoIt()
    {
        FooBar  foo_bar;
        int     index;
    }

Globalūs kintamieji

Argumentai

Pavyzdys

    int gErrorNumber;

Globalios konstantos

Argumentai

Pavyzdys

    const int A_GLOBAL_CONSTANT = 5;

Rodyklės (pointers)

Argumentai

Pavyzdys

    String* pName;

    String* pMessage, address;  // atkreipkite dėmesį, kad tik pMessage yra rodyklė

Adresai (references)

Argumentai

Pavyzdys

    SomeObject& rSomeObject;

Statiniai kintamieji

Argumentai

Pavyzdys

    int SomeObject::DoSomthing()
    {
        static int  sCount;

    }

C++ funkcijos

Argumentai

Pavyzdys

    int MyFunction()
    {
    }

C funkcijos

Argumentai

Pavyzdys

    int my_function()
    {
    }

Tipų vardai

Argumentai

Pavyzdys

    typedef uint16  ModuleType;
    typedef uint32  SystemType;

Enum

Argumentai

Pavyzdys

    enum
    {
        STATE_UNKNOWN,
        STATE_OPENED,
        STATE_CLOSED
    };

#define and macro komandos

Argumentai

Pavyzdys

    #define ERR_NOT_FOUND 5;

Formavimas

Atitraukimas/Tarpai/Tab'ai

Argumentai

Pavyzdys

    void func()
    {
        if (something bad)
        {
            if (another thing bad)
            {
                while (more input)
                {
                }
            }
        }
    }

Eilutės ilgis

Argumentai


Skliausteliai () su funkcijomis ir keyword'ais

Argumentai

Pavyzdys

    if (something)
    {
    }

    while (something)
    {
    }

    strcpy(s1, s2);

    return 1;

Skliausteliai []

Argumentai

Pavyzdys

    char* pName = new char[20];
    pName[0] = '\0';

Skliausteliai {}

Iš dviejų pagrindinių būdų, pirmasis yra tinkamesnis:

Argumentai


If Then Else formavimas

Nors tai priklauso nuo programuotojo, bet vienas priimtiniausių būdų yra šis:

    if (condition)          // komentaras
    {
        ...
    }
    else if (condition)     // komentaras
    {
        ...
    }
    else                    // komentaras
    {
        ...
    }

Konstantas rekomenduojama rašyti kairėje pusėje lygumo/nelygumo salygose. Pvz.:

    if (6 == aErrorNum) ...

Nors iš pradžių tai atrodo kiek keistai, bet taip išvengsite klaidų, kai atsitiktinai nepadedamas antras lygybės ženklas. Kompiliatorius iškart suras klaidą.


switch formavimas

Pavyzdys

    switch (...)
    {
        case 1:
            ...
        // FALL THROUGH

        case 2:
        {
            int v;
            ...
        }
        break;

        default:
    }

Operatoriai


Viena išraiška vienoje eilutėje

Visada rašykite tik vieną išraišką veinoje eilutėje, nebent išraiškos yra viena su kita labai atrimai susijusios. pastaruoju atvėju nepaminrškite padeti papildomą tarpą.

Taip pat visada aprašykite tik vieną kintamajį vienoje eilutėje.


Valid HTML 4.01! Valid CSS!