Olá Eduardo,
Neste caso a que artifício você está se referindo?
Caso esteja se referindo a indentação acredito que seja bom manter um padrão e consistência, ela é interessante para manter a leitura, por exemplo:
function pulaLinha() {
document.write("<br>");
}
function mostra(frase) {
document.write(frase);
pulaLinha();
}
var idade = parseInt(prompt("Qual é sua idade"));
if(idade < 18) {
mostra("Você não tem idade para dirigir");
} else {
var temCarteira = prompt("Você já possui carteira? S ou N?");
if(temCarteira == "s") {
mostra("Você pode dirigir!");
} else {
mostra("Você tem idade, mas precisa tirar carteira para dirigir!");
}
}
Caso esteja falando sobre os ifs há algumas coisas que podem ser feitas, para diminuir o código, por exemplo usar os operadores ternários.
No mundo real no entanto acredito que você provavelmente teria este código dentro de objetos.
Por exemplo:
function Pessoa (idade, carteira) {
return {
pulaLinha: function () {
document.write("<br>");
},
mostra: function (mensagem) {
document.write(mensagem);
this.pulaLinha();
},
temIdade : function () {
return idade < 18 ? 'Você não tem idade para dirigir' : false;
},
temCarta : function () {
return carteira == 'N' ? 'Você tem idade, mas precisa tirar carteira para dirigir!' : 'Você pode dirigir!';
},
podeDirigir : function () {
this.mostra(!this.temIdade() ? this.temCarta() : this.temIdade());
}
};
}
var joao = new Pessoa(prompt('Qual é sua idade?'),prompt("Você já possui carteira? S ou N?"));
joao.podeDirigir();
Dessa forma quando precisar reutilizar este código basta fazer outra pessoa e chamar o método podeDirigir();
Claro que este exemplo está longe de ser ideal, mas faz quase a mesma coisa que o código original, com a diferença que pergunta se tem carta antes de conferir se tem idade, mas isso poderia ser corrigido se eu coletasse a informação com prompt dentro do corpo da função podeDirigir, desta forma no entanto o objeto pode ser tanto chamado como foi no código quando invocado a partir de uma array por exemplo:
function Pessoa (nome, idade, carteira) {
return {
pulaLinha: function () {
document.write("<br>");
},
mostra: function (mensagem) {
document.write(mensagem);
this.pulaLinha();
},
temIdade : function () {
return idade < 18 ? nome + ' não tem idade para dirigir' : false;
},
temCarta : function () {
return carteira == 'N' ? nome + ' tem idade, mas precisa tirar carteira para dirigir!' : nome + ' pode dirigir!';
},
podeDirigir : function () {
this.mostra(!this.temIdade() ? this.temCarta() : this.temIdade());
}
};
}
var pessoas = [
['João da Silva', 18, 'S'],
['Maria da Silva', 17, 'N'],
['Funalo de tal', 18, 'N'],
['Marcos da Silva', 22, 'S'],
['Pedro da Silva', 31, 'N'],
['Zé da Silva', 8, 'N']
];
for (var i in pessoas) {
var novaPessoa = new Pessoa(pessoas[i][0],pessoas[i][1],pessoas[i][2]);
novaPessoa.podeDirigir();
novaPessoa = undefined;
}
vai gerar um output como:
João da Silva pode dirigir!
Maria da Silva não tem idade para dirigir
Funalo de tal tem idade, mas precisa tirar carteira para dirigir!
Marcos da Silva pode dirigir!
Pedro da Silva tem idade, mas precisa tirar carteira para dirigir!
Zé da Silva não tem idade para dirigir