Konvencie

Riadky by mali byť maximálne 80-120 znakov dlhé, aby sa ľahšie hľadali zmeny v Gite.

Konvencie písania kódu pre C#

Konvencie pomenovania

  • Konštanty – konštanty by mali byť pomenované na základe PascalCasing bez ohľadu na modifikátor prístupu.
private conts int TheUniversalAnswer = 42;
public conts double Pi = 3.14;
  • Private premenné – mali by začínať podčiarkovníkom a malým písmenom
   private int x;
   public static readonly myLock = new Object();
  • Metódy a Triedy – používať PascalCasing
public class ClientActivity
{
    public void ClearStatistic()
    {
        //...
    }
    public void CalculateStatistic()
    {
        //...
    }
}
  • Argumenty metód a lokálne premenné – používať camelCasing
public class UserLog
{
    public void Add(LogEvent logEvent)
    {
        int itemCount = logEvent.Items.Count;
        //...
    }
}
  • Triedy – používať podstatné mená na pomenovanie tried
public class Employee
{
}
public class BussinesLocation
{
}
public class DocumentCollection
{
}
  • Rozhrania – používať prefix I
public interface IShape
{
}
public interface IShapeCollection
{
}
public interface IGroupable
{
}
  • Nepoužívať bulharské konštanty
  • Jednoriadkové príkazy – môžu mať zátvorky, ktoré začínajú a končia na rovnakom riadku
public class Foo
{
    int bar;
    public int Bar()
    {
    get { return bar; }
    set { bar = value; }
    }
}
  • Curly braces (kučeravé zátvorky)
    • Allman style - vertikálne zarovnanie
if(condition)
{ //this brace should never be omitted
    DoSomething();
}
DoSomethingElse();
  • Deklarácie
    • Vždy špecifikovať viditeľnosť (public, private, protected)
    • Viditeľnosť by mala byť prvým modifikátorom (public abstract)
    • Členy enum, by mali byť zoradené podľa hodnoty
    • Pri statických poliach kľúčové slovo readonly po static
  • Referencie
    • Používať this. na rozoznanie medzi lokálnou a členskou premennou
    • Ak je možné, vždy používať var namiesto špecifických typov
    • Používať kľúčové slová (int, string, float...) namiesto BLC typove (String, Int32, Single,...), rovnako pre volania metód (int.Parse nie Int32.Parse)
  • Menné priestory
    • Import by mal byť na začiatku súboru, mimo menného priestoru, deklarácie by mali byť zoradené abecedne, ale System by mal byť pred všetkými ostatnými
  • Organizácia tried – zoradiť v nasledujúcom poradí
    • Konštanty
    • Polia
    • Vlastnosti
    • Udalosti
    • Metódy
    • Vnútorné typy
    • Rovnaké typy by mali byť ďalej zoradené podľa viditeľnosti - public, protected, private
  • Komentovanie
    • XML komentáre na dokumentovanie metód, tried a rozhraní (///<sumary>...</summary>)
    • Používať single line komentovanie na všeobecné komentovanie (// ....)
    • Komentáre umiestnovať na zvlášť riadok, nie na koniec riadku s kódom
    • Necomitovať mŕtvy kód (bez komentárov)
    • Nepoužívať bloky komentárov (/* ... */)
  • Layout konvencie
    • Jeden príkaz na riadok
    • Jedna deklarácia na riadok
    • Aspoň jeden voľný riadok medzi definíciami metód a definíciami vlastností

Konvencie písania kódu pre C++

Formátovanie

  • Zátvorky sú stále na novom riadku
//správne
class MyClass
{
   //...
};

//nesprávne
class MyClass{
   //...
};

Pomenovanie

  • Na pomenovanie používame PascalCase
  • Typy - názvy začínajú veľkým písmenom
class MyClass: public MyParent
{
    //...
};
  • Funkcie - názvy začínajú malým písmenom
void myFuncion(int a);
  • Konštanty - celé veľkými písmenami, slová sú oddelené podčiarnikom _
const int ANSWER_TO_EVERYTHING = 42;
  • Premenné - názvy začínajú malým písmenom, nepoužívame prefix _, m_ pre private/protected premenné
int myVariable = 42;

Správne programovanie

  • Uprednostňujeme referencie pred ukazovateľmi
  • Snažíme sa zabrániť zbytočnému kopírovaniu dátových štruktúr
//správne
//Poznámka: Pre návratovú hodnotu bude spravená RVO (Return Value Optiomalization)
std::string toLowercase(const std::string& str)
{
    std::string result;
    //...
    return result;
}
//nesprávne
std::string toLowercase(const std::string str)
{
    std::string result;
    //...
    return result;
}

POUŽÍVAME

  • nullptr namiesto NULL
  • #include guards namiesto #pragma once
  • forward deklarácie všade, kde je to možné
  • const všade, kde je to možné (funkcie, premenné, ukazovatele)
  • lambda funkcie namiesto function objects všade, kde je to možné

NEPOUŽÍVAME

  • using namespace v header súboroch
  • using namespace std;
  • makrá, ak to nie je úplne nevyhnutné