5. Formatação - Tecprog-voID/voID GitHub Wiki

Índice


5.1 Indentação

Para indentação será usado o padrão de tabulação de 4 espaços.

CameraSystem::CameraSystem() {
    this->cameraSpeed=32;
}

5.2 Tamanho máximo da linha

Deve ser evitado ultrapassar o limite de 80 caracteres por linha.
Para quebras de linha, em casos de expressões muito grandes, deve-se usar os seguintes princípios:

  • Quebrar após vírgula;
int result;
result = SDL_RenderCopyEx(SDLSystem::GetInstance()->GetRenderer(),
                          img->GetTexture(), img->GetRect(), &dest,
                          img->GetRotationAngle(), img->GetSDLPivot(),
                          img->GetSDLFlip());

if (result < 0) {
    ERROR(SDL_GetError());
}
  • Quebrar antes de operadores;
if(((posR1.m_x <= (posR2.m_x + r2->GetWidth()))   
     && ((posR1.m_x + r1->GetWidth())>=posR2.m_x))  
     && ((posR1.m_y <=(posR2.m_y + r2->GetHeight())) 
     && ((posR1.m_y + r1->GetHeight())>=posR2.m_y)) 
     && (r1->m_owner->active) && (r2->m_owner->active)) {
    collision=true;
}

5.3 Operadores

Para operadores deve-se dar um espaço antes e um depois.

Exemplo:

worldCameraY = worldCameraY - speed;

5.4 Chaves

Deve-se usar chaves sempre que for possível, mesmo em situações em que a linguagem permita que não seja usada.
As chaves devem ser abertas na mesma linha do término da expressão ou declaração, após um espaço, e deve ser fechada uma linha abaixo do bloco de instruções:

Exemplo:

CameraSystem::CameraSystem() {
    this->cameraSpeed = 32;
}

5.5 Estruturas de Controle (if, switch)

Em uma estrutura de controle, deve-se ter 1 espaço entre operadores condicionais e condições, e entre a chave de abertura.

Exemplo:

if (!m_instance) {
    m_instance = new AudioController();
}

O else deve estar separado com 1 espaço antes e depois e sua chave de abertura deve estar na mesma linha, assim como o else if, que deve estar na mesma linha de fechamento de chaves da condição que o precede.

Exemplo:

if (m_is_music) {
    Mix_PlayMusic(m_music, loops);
} else {
    Mix_PlayChannel(channel, m_sound, loops);
}

5.6 Estruturas de Repetição (while, for, do-while)

Mesmo que seja um for de uma linha, é preciso abrir sempre as chaves. O mesmo vale para o if.

if (result < 0) {
    ERROR(SDL_GetError());
}
  • Nos parâmetros do laço for, deve-se ter 1 espaço após os ponto e vírgulas.
for (int i = 1; i < 5; i++) {
    std::string tentacleName = "FirstBossAttack" + std::to_string(i);
  • Em um for baseado em um intervalo, deve-se ter 1 espaço antes e depois dos dois pontos.
for (auto result : m_aMap) {
    if (result.first == name) {
        result.second->SetPlaying(true);
    } else {
        result.second→SetPlaying(false);
    }
}

5.7 Variáveis e Atributos

Devem ser declaradas com o tipo seguido por um espaço e o nome da variável.

Exemplo:

bool isLocked = true;

5.8 Structs e Enums

Os structs devem possuir apenas dados primários e não podem ser implementadas quaisquer tipo de funcionalidades ou afins.

A declaração de enum deve ser usada com um typedef seguida por seus parametros entre chaves. {espaço}{espaço}<{PARAMETRO1, PARAMETRO2}>{espaço};

 typedef enum {
    GC_INPUT_INVALID = -1,
    GC_INPUT_A,
    GC_INPUT_B,
    GC_INPUT_X,
    GC_INPUT_Y,
    GC_INPUT_BACK,
    GC_INPUT_GUIDE,
    GC_INPUT_START,
    GC_INPUT_LEFTSTICK,
    GC_INPUT_RIGHTSTICK,
    GC_INPUT_LEFTSHOULDER,
    GC_INPUT_RIGHTSHOULDER,
    GC_INPUT_DPAD_UP,
    GC_INPUT_DPAD_DOWN,
    GC_INPUT_DPAD_LEFT,
    GC_INPUT_DPAD_RIGHT,
    GC_INPUT_MAX
} GameControllerButton;

5.9 Métodos

Na declaração de um método, o seu tipo de retorno deverá aparecer na mesma linha do seu nome. Deverá ter um espaço entre o parênteses que fecha os parâmetros e a chave que inicia o código que está dentro do método.

Exemplo:

void PlayerAttackScript::FixedComponentUpdate() {
    GameCollisionCheck();

    bulletSpeed = bulletSpeed;
    position->m_y += bulletVelocity.m_y;
    position->m_x += bulletVelocity.m_x;

}

5.10 Logs

Na criação de logs deve ser usada a função INFO() e na informação deve ser passada a classe que está enviandoa informação, seguida por um "-" e a informação do log.

Exemplo:

INFO("CreditsScript - initializing");