Skip to content

Instantly share code, notes, and snippets.

@gutierrezps
Last active March 24, 2019 03:23
Show Gist options
  • Save gutierrezps/8f5f6ac67dc46443a127bec2af24c419 to your computer and use it in GitHub Desktop.
Save gutierrezps/8f5f6ac67dc46443a127bec2af24c419 to your computer and use it in GitHub Desktop.
Convenções de codificação para C/C++/Arduino
/************************************************************
* Convenções de codificação para Arduino
* Autor: Gutierrez PS
*
* Outros padrões mais completos:
* http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
* http://geosoft.no/development/cppstyle.html
* http://www.possibility.com/Cpp/CppCodingStandard.html
************************************************************/
// Indentação: use 4 espaços
void enviaCodigo(char codigo)
{
if (codigo < 0 || codigo > 10) return;
int i = 0;
while (i < 10) {
i++;
}
}
// Crie uma variável no menor escopo possível, e inicialize-as na declaração
// (evite criar variáveis globais sem necessidade)
int i;
i = f(); // Ruim -- inicialização separada da declaração
int j = g(); // Bom -- declarada e inicializada
// Nomes de variáveis e funções: camelCase. Uma declaração por linha.
int numControlesSalvos;
int tipoControle;
int idProtocolo;
void enviaCodigoAC(char codigo);
// Acrônimos: somente a primeira letra maiúscula
string textoHtml = "<p>Lorem ipsum</p>";
// Variáveis globais: precedidas de 'g_'
int g_estadoAc, g_enviarCodigo;
// Constantes: precedidas de 'k_'
char k_diasNaSemana = 7, k_significadoDaVida = 42;
// Declaração de pinos: constantes precedidas de 'pin_'
const byte pin_botaoNivel = 10;
const byte pin_led1 = 11;
pinMode(pin_botaoNivel, INPUT);
digitalWrite(pin_led1, HIGH);
// Condicionais - abre chaves na mesma linha, adicione espaço após 'if', 'else'
if (condition) {
// indentação: 4 espaços
}
else if (...) { // else na linha seguinte à chave
// ...
}
else {
// ...
}
// Se o código for simples, pode ser escrito em uma linha só
if (x == k_maxControle) return false;
// Switch-case
switch (var) {
case 0:
i = 10;
break;
case 1:
i = 27;
break;
default:
i = 40;
}
// Loops
for (int i = 0; i < k_qualquer; ++i) {
Serial.print("hello ");
Serial.println(i);
}
while (condicao) {
// Roda roda roda
}
// Funções e métodos de classes: abre chaves na linha seguinte
void setup()
{
pinMode(pin_botaoNivel, INPUT);
Serial.begin(115200);
bool sucesso = carregaConfiguracao();
if (sucesso) {
Serial.println("Configuração carregada");
}
else {
Serial.println("Erro na configuração");
}
}
// Todos os arquivos de biblioteca (.h) devem conter diretivas de proteção
#ifndef IRData_h
#define IRData_h
// ...
#endif // IRData_h
// Classes
class Date {
public:
// validate that {yy, mm, dd} is a valid date and initialize
Date(int yy, Month mm, char dd);
// ...
private:
int y;
Month m;
char d; // day
};
// Demais recomendações: http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment