Pravidla pro formátování kódu

Ionic 2 Projekty

Pro naše projekty na Ionic 2 se používají dvoje guidelines, Guidelines pro Typescript a Angular 2 StyleGuide

Pravidla z těchto guideline, které jsou pro naše projekty nejdůležitější uvádíme níže:

Pravidla

Typescript

  • PascalCase pro pojmenovávání tříd, interfaců atd.
  • NamelCase pro pojmenovávání funkcí a proměnných
  • Nepoužívat _ pro pojmenovávání privátních funkcí a proměnných
  • Pro pojmenovávání proměnných a funkcí používat celá slova, ne pouze a, b, c, d (výjimky tvoří indexy ve forEach apod.)
  • Používat spíše undefined než null
  • Používat JSDoc styl pro psaní komentářů
  • Používat " namísto ' pro stringy
  • Namísto for pokud to jde používat array.forEach, array.map, array.filter atd..
  • Používat lambda výrazy oproti anonymním funkcím
  • Používat jako oddělovače 4 mezery

Angular

  • Jedna Component, Service, Ionic (Page, Provider), Directive, Pipe atd. na soubor
  • Používat camelCase pro pojmenovávání selektorů direktiv
  • Názvy komponent pojmenovávat malými písmeny s pomlčkami
  • Vlastní prefix pro direktivy na projektu
  • Používat konstanty (const) pro proměnné, u kterých se nebude hodnota měnit po celé používání aplikace
  • Pro pojmenovávání konstant používat camelCase
  • Nepoužívat _ pro pojmenovávání privátních funkcí a proměnných
  • Nechávat volný řádek mezi importy z modulů a aplikací
  • Importy rovnat abecedně
  • Složky pro každou logickou strukturu (Components, Directives, Pages, Providers, Services, Pipes atd.)
  • Šablony a styly pro komponenty do vlastních souborů
  • Logika v komponentách slouží pouze ke zobrazování dat, vše ostatní do providerů
  • Reusable funkce používané ve více komponentách vložit do servis (providerů)
  • Maximálně 400 řádků velká třída
  • Maximálně 75 řádků velká funkce

Pro dodržování pravidel na projektech používáme ještě tslint, který bude kontrolovat konkrétně tyto věci:

  • Používat deklarace viditelnosti (i public)
  • Řazení funkcí, properties aby byly za sebou v tomto pořadí:
    • Public static fields
    • Protected static fields
    • Private static fields
    • Public static metody
    • Protected static metody
    • Private static metody
    • Public fields
    • Protected fields
    • Private fields
    • Public konstruktor
    • Protected konstruktor
    • Private konstruktor
    • Public metody
    • Protected metody
    • Private metody
  • Nepoužívat anonymní funkce, používat arrow funkce (lambda výrazy)
  • Preferovány for-of před for-in
  • Definovat typy proměnných a návratové hodnoty
  • Volné místo před definicí typu (let foo: string)
  • Vždy používat složené závory (if, while atd.)
  • Žádné duplikátní proměnné
  • Používat undefined místo null
  • Žádné unused proměnné
  • Odsazování pomocí mezerníků
  • Odsazování 4 mezerami
  • Konce řádků LF
  • Maximální počet tříd v souboru: 1
  • Maximální počet řádků v souboru: 400
  • Používat Array<type> místo type[]
  • Používat () => x namísto () => { return x; }
  • Názvy tříd v PascalCase
  • Používat JSDoc komentáře
  • Místo (x) => f(x) používat f
  • Používat {"key": value} namísto {key: value}
  • Preferovat foo(): void oproti foo: () => void = {}
  • Řadit importy abecedně
  • Používat " namísto '
  • Středník na konci každého statementu
  • Používat mezery za if atd.

Promise

Při používání promise, pokud to jde používáme typescriptový způsob async-await (Více informací v Promise s AngularJS)

*PascalCase -> první písmeno velké, následně každé první písmeno nového slova velké
*camelCase -> první písmeno malé, následně každé první písmeno nového slova velké
*další informace o tslint pravidlech -> https://palantir.github.io/tslint/rules/

Typescript

https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines

Java + Javascript

  • pro odsazování se používají 4 mezery
  • za if, for, while se dělá mezera
  • za názvem funkce se mezera nedělá
  • otevírací složená závorka se píše na konec řádku
  • za if je vždy složená závorka, nikdy ne samostatný příkaz
function bar() {

    if (je_to_blbe) {
        return;
    }

    if (a==b) {
        foo();
    } else {
        bar();
    }

    for (var i=0;i<5;i++) {
        if (...) {
            continue;
        }
        foo();
    }

    switch(a) {
    case 'a':
        blabla();
        break;
    case 'b':
        blabla();
        break;
    default:
        smula();
    }

}

Action Script

Action Script má vlastní pravidla: https://sourceforge.net/adobe/flexsdk/wiki/Coding%20Conventions/

Android

https://source.android.com/source/code-style.html

Angular 1

https://github.com/johnpapa/angular-styleguide

PHP

Code standard Prestashopu: http://doc.prestashop.com/display/PS15/Coding+Standards

Není-li uvedeno jinak, obsah této stránky je pod licencí Creative Commons Attribution-ShareAlike 3.0 License