Last active
March 24, 2019 03:23
-
-
Save gutierrezps/8f5f6ac67dc46443a127bec2af24c419 to your computer and use it in GitHub Desktop.
Convenções de codificação para C/C++/Arduino
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/************************************************************ | |
* 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