Dica Breve Para Nomeação de Variáveis, Funções e Estruturas Diversas
- #Boas práticas
Photo by Mohammad Rahmani on Unsplash
Olá Comunidade!
Hoje eu quero falar um pouco do que aprendi nesse tempo que tenho levado estudando programação, mais especificamente sobre o uso de nomes relevantes e comentários pertinentes.
Mas Fernando? Por que isso é importante?
Bem, vamos lá! Primeiramente, vou pedir que você pense em um cenário solo, onde a única pessoa que dá manutenção e desenvolve o código do projeto em questão é você.
Agora imagine que você aceitou um contrato para desenvolver um projeto paralelo em parceria com outra pessoa ou outra equipe e de repente, seu projeto pessoal ficou engavetado por um tempo e só depois você voltou a ele, certo?
E você encontra isso:
int main()
{
int iAmYourFather;
iAmYourFather = 0;
printf("Hello Adventurer! You are on Strange Univers\n");
do{
printf("Type 1 for Portuguese, 2 for English: \n");
scanf("%d", &iAmYourFather);
if (selection == 1){
lang_ptbr();
} else if (selection == 2){
lang_enus();
} else {
printf("Digite uma opcao valida! / Choose a valid option!\n\n");
system("PAUSE");
system("CLS");
}
} while(selection > 2 || selection < 1);
return 0;
}
Até aí tudo bem, parece um código normal, simplista até. Você entende que existem um If esperando uma entrada do usuário ser igual a um valor, um elseIf ali esperando uma outra condição e por aí vai.
O que falta nesse código?
Comentários e nomes mais específicos talvez.
Os comentários podem ajudar você a se lembrar o por que começou um bloco de código, bem como ajudar outros programadores a melhorarem essa estrutura e prosseguir com o desenvolvimento do projeto caso você não possa mais fazê-lo.
Bons nomes para estruturas, variáveis e funções por sua vez, fazem com que você consiga instintivamente produzir mais, uma vez que não precisa ficar se lembrando que iAmYourFather foi escrito todo em CamelCase, com a intenção de ser a função principal, mas de repente, você nem lembra mais por que escolheu essa frase e dois ou três anos depois, ela deixa de fazer sentido.
No nosso exemplo trocar a variável iAmYourFather por Selection, por exemplo, faria muito mais sentido, uma vez que o restante do código espera por essa variável e faz operações semelhantes.
#include <stdio.h>
#include <stdlib.h>
//Bloco principal de execucao / Main execution block
int main()
{
int selection;
selection = 0;
printf("Hello Adventurer! Welcome to C Single Dungeon\n");
do{
printf("Type 1 for Portuguese, 2 for English: \n");
scanf("%d", &selection);
if (selection == 1){
lang_ptbr();
} else if (selection == 2){
lang_enus();
} else {
printf("Digite uma opcao valida! / Choose a valid option!\n\n");
system("PAUSE");
system("CLS");
}
} while(selection > 2 || selection < 1);
return 0;
}
//Funcao de Selecao em Portugues
int lang_ptbr(){
int tmp_class = 0;
int chClass = 0;
do{
printf("Seja bem vindo ao C Single Dungeon!\n");
printf("Escolha sua Classe:\n");
printf("1 - Guerreiro\n2 - Mago\n");
scanf("%d", &tmp_class);
if (tmp_class == 1){
printf("Guerreiros sao letais no combate corpo a corpo. Como guerreiro voce recebe os seguintes bonus:\n+2 de ataque\n+1 de defesa\n-1 de esquiva\n-2 de defesa magica\n");
printf("Deseja mesmo ser um guerreiro?\n1 - SIM\n2 - Preciso pensar melhor...\n");
scanf("%d", &chClass);
if (chClass == 1){
warriorPtBr();
} else {
chClass = 0;
tmp_class = 0;
}
} else if (tmp_class == 2) {
printf("Magos sao mestres no uso das forcas sobrenaturais. Como mago voce recebe os seguintes:\n+2 de ataque magico\n-1 de defesa\n+1 de esquiva\n");
printf("Deseja mesmo ser um mago?\n1 - SIM\n2 - Preciso pensar melhor...");
} else {
printf("Eu, seu narrador, sou um velho cansado, tenho dificuldade em entender algumas coisas, por favor, selecione uma das duas respostas que lhe pedi.\n");
system("PAUSE");
system("CLS");
int lang_ptbr();
}
} while (tmp_class > 2 || tmp_class < 1);
return 0;
}
//English Selection Function
int lang_enus(){
int tmp_class = 0;
int chClass = 0;
do{
printf("Welcome to C Single Dungeon!\n");
printf("Choose your class:\n");
printf("1 - Warrior\n2 - Mage\n");
scanf("%d", &tmp_class);
if (tmp_class == 1){
printf("Warriors are lethal in hand-to-hand combat. As a warrior you receive the following bonuses:\n+2 attack\n+1 defense\n-1 dodge\n-2 magical defense\n");
printf("Do you really want to be a warrior?\n1 - YES\n2 - I need to think better...\n");
scanf("%d", &chClass);
if (chClass == 1){
warriorEnUs();
} else {
chClass = 0;
tmp_class = 0;
}
} else if (tmp_class == 2) {
printf("Mages are masters in the use of supernatural forces. As a mage you receive the following bonuses:\n+2 magical attack\n-1 defense\n+1 dodge\n");
printf("Do you really want to be a mage?\n1 - YES\n2 - I need to think better...");
} else {
printf("I, your narrator, am a tired old man, I have difficulty understanding some things, please select one of the two answers I asked you.\n");
system("PAUSE");
system("CLS");
}
} while (tmp_class > 2 || tmp_class < 1);
return 0;
}
int warriorPtBr(){
int atk = 3;
int magicalAtk = 0;
int defense = 3;
int magicalDefense = 0;
int dodge = 1;
int healthPoints = 8;
printf("Ao finalmente se decidir, o velho contador de historias em sua frente da um sorriso e lhe oferece uma caneca que contem um liquido borbulhante. Esta frio e voce toma, pensando em se aquecer.\n");
printf("\nSeus pensamentos sao interrompidos quase que imediatamente, uma dor repentina surge na base da sua nuca e tudo fica escuro...\n");
}
int warriorEnUs(){
int atk = 3;
int magicalAtk = 0;
int defense = 3;
int magicalDefense = 0;
int dodge = 1;
int healthPoints = 8;
printf("When you finally make up your mind, the old storyteller in front of you smiles and offers you a mug that contains a bubbly liquid. It's cold and you drink it, thinking to warm up.\n");
printf("\nYour thoughts are interrupted almost immediately, a sudden pain appears at the base of your neck and everything goes dark...\n");
}
int mage(){
int atk = 1;
int magicalAtk = 2;
int defense = 1;
int magicalDefense = 2;
int dodge = 2;
int healthPoints = 5;
}
int tinyOrc (){
int atk = 2;
int defense = 2;
int magicalDefense = 0;
int dodge = 1;
int healthPoints = 6;
}
Note que os comentários estão bem espalhados identificando a maioria dos blocos de código e suas funções.
O código, é de um antigo projeto meu, da época em que estudei na Fatec Carapicuíba, oito anos atrás. Decidi retomar o projeto e apesar de achar que ia ser difícil entendê-lo, eu descobri que na verdade, a única coisa difícil foi assumir como eu programava de forma simplista antigamente haha.
Espero ter ajudado!




Parabéns, Fernando!
Vamos com tanta sede de executar, que esquecemos desses detalhes.
Conteúdo interessantísimo! Muito obrigado pelos ensinamentos
Show! Realmente esses detalhes fazem toda a diferença. Obrigada pela dica!