5. Formatação - Tecprog-voID/voID GitHub Wiki
Índice
- 5.1 Indentação
- 5.2 Tamanho máximo da linha
- 5.3 Operadores
- 5.4 Chaves
- 5.5 Estruturas de Controle (if, switch)
- 5.6 Estruturas de Repetição (while, for, do-while)
- 5.7 Variáveis e Atributos
- 5.8 Structs e Enums
- 5.9 Métodos
- 5.10 Logs
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;
}
if, switch
)
5.5 Estruturas de Controle (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);
}
while, for, do-while
)
5.6 Estruturas de Repetição (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");