No meu joguinho além dos comando para mover o ator para Cima e para Baixo eu inseri as linhas de comando para mover o ator para Esquerda e Direita, portanto além do teste para garantir que o ator não fosse sair pela parte de baixo da tela, que foi o objetivo proposto na aula, eu tinha também que testar a posição X do ator para que ele não saísse pelas laterais do Canvas. A princípio a ideia mais obvia foi repetir a solução do professor e criar uma nova função para os comandos de movimento para a esquerda e direita, mas como durante as aulas o professor já falou sobre funções parecidas fazendo tarefas similares eu fui tentando de outras maneiras encurtar esse processo da verificação. A forma mais simples que eu consegui fazer foi declarar duas variáveis dentro da minha função que move o ator (xLimiteEsquerda e xLimiteDireita) e fazer o if comparando o xAtor com o valor da variavel do limite da esquerda ou direita repectivamente. Segue o Código:
//Movimentacao do Ator
function movimentaAtor(){
let xLimiteEsquerda = 0;
let xLimiteDireita = 470;
// Controle SETAS
if (keyIsDown(UP_ARROW)){ //Seta Cima
yAtor -=2;
}
if (keyIsDown(DOWN_ARROW)){ //Seta Baixo
if (atorNoLimiteDaTela()){
yAtor +=2;
}
}
if (keyIsDown(LEFT_ARROW)){ //Seta Esq
if(xAtor > xLimiteEsquerda){
xAtor -=2;
}
}
if (keyIsDown(RIGHT_ARROW)){ //Seta Dir
if(xAtor < xLimiteDireita){
xAtor +=2;
}
}
///////////////////////////////////////////////////////
// Controle WASD
if (keyIsDown(87)){ //Tecla W
yAtor -=2;
}
if (keyIsDown(65)){ // Tecla A
if(xAtor > xLimiteEsquerda){
xAtor -=2;
}
}
if (keyIsDown(83)){ //Tecla S
if (atorNoLimiteDaTela()){
yAtor +=2;
}
}
if (keyIsDown(68)){ //Tecla D
if(xAtor < xLimiteDireita){
xAtor +=2;
}
}
}
Funcionou certinho do jeito que eu queria mas aí é que entra a minha questão sobre boas práticas, principalmente porque sempre nas aulas o professor usa termos como organizar o código, melhorar, deixar menos bagunçado, manter um padrão. Pra eu que estou começando a aprender agora sobre programação esse tipo de "regra extraoficial" parece subjetivo demais pra pegar e entender logo de cara. Objetivamente sobre a resolução do meu problema, ele pode ser considerado bom ou ruim em relação a organização, legibilidade do código?
E se alguém quiser falar mais sobre o que caracteriza um código bom ou ruim nesse sentido de boas práticas. Seria maior ou menor uso de funções ou variáveis por exemplo, abreviação de expressões?