Ir para conteúdo
Entre para seguir isso  
Linker

OTClient Regras de Codificação do OTC

Recommended Posts

Linker    0
Linker

Regras de Codificação do OTC

 

 

Antes de implementar qualquer coisa, impregne em sua mente as oito seguintes regras. Todas elas tem algum motivo por trás e farão com que você seja muito mais bem-visto na comunidade de modding de OTC.

 

 

1. Evite pointers a todo custo! Use apenas quando for estritamente necessário, no caso de strings de C (char*). Evite até para buffers de inteiros.

2. Se você precisa de um buffer, use std::vector.

3. Nunca use ponteiros para objetos. Se você acha que é necessário, provavelmente é possível utilizar std::shared_ptr ou passar o objeto por referência.

4. Nunca use a palavra-chave delete. Quando digo nunca, é realmente NUNCA. Se você acha que precisa usar, é porque não leu as regras acima.

5. Passe objetos pequenos como Position, Rect e std::string por referência.

6. Inclua apenas a declaração de outros objetos nos arquivos de header, nunca definições. Você consegue achar o padrão declarations.h no código-fonte.

7. Se você acha que alguma coisa pode dar errada em seu código, use asserts ou lance uma exceção para verificação.

8. C++0x possui uma grande variedade de utilidades novas. Você pode e é encorajado a usá-las!

 

 

Identação

 

 

1. Quatro espaços são usados para identação

2. Espaços, não tabs!

 

 

Declarando variáveis

 

 

1. Variáveis / funções começam com letra minúscula e cada palavra consecutiva começa com letra maiúscula.

2. Evite nomes curtos e abreviações sempre que possível. Use nomes legíveis.

 

 

int a; // Errado
int whorisize; // Errado
int hsize; // Errado
int windowHSize; // Errado
int windowHorizontalSize; // Certo

 

 

3. Variáveis com um só caracter como nome são aceitáveis apenas para contadores, quando o propósito da variável é óbvio.

4. Classes sempre começam com letra maiúscula.

5. Atributos, ou variáveis de classe, sempre começam com "m_" seguido de letra minúscula.

 

 

class ClasseTeste {


   int mVariavel; // Errado
   int m_Variable; // Errado
   int m_variable; // Certo


};

 

 

6. Atributos de uma struct não seguem esta regra. Evite utilizar structs, apenas quando estritamente necessário.

7. Variáveis globais começam com "g_".

8. Use os tipos de int já implementados.

 

 

uint32_t var; // Errado
uint32 var; // Certo


unsigned long var; // Errado
ulong var; // Certo

 

 

Uso de Singletons

 

 

// no topo do game.cpp
Game g_game;


// no fim do game.h
class Game { ... };
extern Game g_game;

 

 

Loops e iterações

 

 

1. Use a palavra-chave auto em qualquer iteração.

 

 

std::map<int, std::string>::iterator it = myMap.begin(); // Errado
auto it = myMap.begin(); // Certo


for(std::map<int, std::string>::iterator it = myMap.Begin(); it != myMap.end(); it++) // Errado
for (auto it = myMap.begin(); it != myMap.end(); ++it) // Certo
for (auto pair : myMap) // Certo

 

 

2. Use o for each do C++0x quando possível.

 

 

for(auto it = files.begin(); it != files.end(); ++it) { } // Errado
for (const std::string& file : files) { } // Certo

 

 

Arquivos fonte

 

 

1. Se você precisa de algum header STL use global.h, evite o excesso de includes.

2. Todos os arquivos fonte devem ter o aviso de copyright e licensa no topo.

3. Inclua apenas headers necessários

4. Sempre que possível, declare a classe inteira ao invés do header.

 

 

// Errado
#include "foo.h"
class Dummy {
   Foo *m_foo;
};


// Certo
class Foo;
class Dummy {
   Foo *m_foo;
};

 

 

Classes

 

 

1. Quando utilizar a palavra-chave new. coloque parênteses apenas quando necessário.

 

 

new ClasseTeste(); // Errado
new ClasseTeste; // Certo

 

 

2. Evite construtores vazios nos arquivos fonte.

3. Declare construtores apenas quando necessário

4. Métodos get devem sempre conter a palavra-chave const

 

 

Documentação

 

 

1. Comente tudo o que você achar relevante

2. Documente funções nos headers utilizando /// para habilitar a saída usando doxygen.

 

 

Algoritmos

 

 

1. Use classes de alto nível como Rect, Point e std::string sempre que possível.

2. Faça algorítmos legíveis e organizados

3. Sempre comente!

 

 

Ponteiros e memória

 

 

1. Evite utilizar, como já dito antes, a palavra-chave delete. Também evite gerenciar memória por conta própria. Use sempre ponteiros inteligentes.

2. Prefira passar variáveis de objeto complexas por referência e usando a palavra-chave const

 

 

Créditos pelo texto: edubart

Créditos pela tradução: Linker

Compartilhar este post


Link para o post
xS0NYx    15
xS0NYx

Muito bom caro, Linker ..

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×