Folha de Estilo - TecProg-2018-2/TecProg-VoxPop-WebApp GitHub Wiki

1. Formatação
2. Variáveis e Funções
3. Comentários
4. Classe
5. Interface
6. Namespace
7. Enum
8. null vs. undefined
9. Array
10. Parenteses
11. Chaves
12. Operações

1. Formatação

1.1. O código deve ser indentado com tabs, utilizando um tab (tamanho 2) para cada nível de indentação ou 2 espaços.
1.2. O espaço entre dois blocos de código deve ser de apenas uma linha em branco (um enter).
1.3. É importante que a indentação dentro das chaves seja correta

1.3.1. Exemplo:
Não recomendado

function algumaFuncao(a, b) {
var c = 1;
return inner;
}

Recomendado

function algumaFuncao(a, b) {
    var c = 1,
        d = 2,
        inner;
    if (a > b) {
        inner = function() {
        return {
            r: c - d
        };
    };
    } else {
        inner = function () {
            return {
                r: c + d
            };
        };
    }
    return inner;
}

1.4. O construtor deve estar formatado desta forma:

 constructor(
    private router: Router,
    private requester: RequestsService,
    private cookieService: CookieService,
    private token: TokenService,
    private validator: InputValidatorService
  ) { }

2. Variável e Função

  • Use camelCase para nome de funçoẽs e variáveis.

Não recomendado

var FooVar;
function BarFunc() { }

Recomendado

var fooVar;
function barFunc() { }
  • Use uma única declaração para cada variável quando inicializar a mesma.

Não recomendado

var x = 1; var y = 2

Recomendado

var x = 1, y = 2;

3. Comentários

  • Os comentários em blocos: Classes e Métodos, devem ser feitos da seguinte forma:

Recomendado

/**
  *  Comentários
  *  aqui dentro.
  */

Não recomendado

  //  Comentários
  //  aqui dentro.
  • Os comentários simples, devem ser feitos da seguinte forma:

Recomendado

/* Comentário aqui dentro. */

Não recomendado

  //  Comentário aqui dentro.

4. Classe

  • Use PascalCase para nome de classes.

Não recomendado

class foo { }

Recomendado

class Foo { }
  • Use camelCase para 'class member' e métodos.

Não recomendado

class Foo {
    Bar: number;
    Baz() { }
}

Recomendado

class Foo {
    bar: number;
    baz() { }
}

5. Interface

  • Use PascalCase para nomes.

  • Não use I no começo do nome.

Não recomendado

interface IFoo {
}

Recomendado

interface Foo {
}

6. Namespace

  • Use PascalCase para nomes.

Não recomendado

namespace foo {
}

Recomendado

namespace Foo {
}

7. Enum

  • Use PascalCase para nomes em enums.

Não recomendado

enum color {
}

Recomendado

enum Color {
}
  • Use PascalCase para enum member

Não recomendado

enum Color {
    red
}

Recomendado

enum Color {
    Red
}

8. Null vs. Undefined

  • De preferência não use nenhum dos dois.

Não recomendado

let foo = {x:123,y:undefined};

Recomendado

let foo:{x:number,y?:number} = {x:123};
  • Use checagem truthy para objetos que possam ser null or undefined

Não recomendado

if (error === null)

Recomendado

if (error)
  • Use == undefined / != undefined (e não === / !==) para checar estados null / undefined. Nunca use outros valores para verificar (exemplo: '',0,false) e.g.

Não recomendado

if (error !== null)

Recomendado

if (error != undefined)

9. Array

  • Para arrays faça foos:Foo[] em vez de foos:Array<Foo>.

10. Parenteses

  • Não deixe espaços na parte de dentro do parenteses.

Não recomendado

if ( x < 10 ) 

Recomendado

if (x < 10) 

11. Chaves

  • Após o uso das estruturas condicionais e metodos, deve se aplicar espaço antes de abrir chaves(ex: {}).
  • A primeira chave deve permanecer na mesma linha do operador.
  • 'else' deve estar entre chaves, e com espaço separando.

Não recomendado

if(variavel = 0)
{  
   // código
}
else
{
   // código 
}

Recomendado

if(variavel = 0) {  
   // código
} else {
   // código 
}
  • Quando dentro de colchetes, cada bloco deve ser separado com um enter, deixando as chaves em cada linha

Não recomendado

datasets: [{
   label: a,
   data: b,},
   { label: c,
   data d,}
]

Recomendado

datasets: [
    {
        label: a,
        data: b,
    },
    {
        label: c,
        data: d,
    }
]

12. Operações Matemáticas

  • Deve-se colocar espaço entre operadores.

Não recomendado

variavel=(1+2)*3;

Recomendado

variavel = (1 + 2) * 3;
⚠️ **GitHub.com Fallback** ⚠️