Pessoal estou lendo aquele livro clean code e me deparei com um problemas, mas em javascript, segue codigo para entendimento
function iniciarValidadoresTextArea() { if ($("#form\\:corpo-email-venda-gerencial").val() !== undefined) { limitaTextareaCorpoEmailVendaGerencial($("#form\\:corpo-email-venda-gerencial").val()); } if ($("#form\\:corpo-email-nota-gerencial").val() !== undefined) { limitaTextareaCorpoEmailNotaGerencial($("#form\\:corpo-email-nota-gerencial").val()); } if ($("#form\\:corpo-email-nota-fiscal").val() !== undefined) { limitaTextareaCorpoEmailNotaFiscal($("#form\\:corpo-email-nota-fiscal").val()); } }
Eu sei que tem como fazer apenas um IF e passar o nome, eu tentei desta forma:
Com dois arrays:
var camposTextArea = ["#form\\:corpo-email-venda-gerencial", "#form\\:corpo-email-nota-gerencial", "#form\\:corpo-email-nota-fiscal", "#form\\:corpo-email", "#form\\:corpo-email-consignacao", "#form\\:corpo-email-pedido-venda", "#form\\:corpo-email-orcamento", "#form\\:corpo-email-cancelamento", "#form\\:corpo-email-financeiro-recibo"]; var metodosTextArea = ["limitaTextareaCorpoEmailVendaGerencial", "limitaTextareaCorpoEmailNotaGerencial", "limitaTextareaCorpoEmailNotaFiscal", "limitaTextareaEmail", "limitaTextareaEmailConsignacao", "limitaTextareaEmailPedidoVenda", "limitaTextareaEmailOrcamento", "limitaTextareaEmailCancelamento", "limitaTextareaEmailFinanceiroRecibo"];
for (var chave = 0, valor; valor = camposTextArea[chave], chave < camposTextArea.length; chave++) { nomeMetodo = metodosTextArea[chave]; nomeMetodo = nomeMetodo.replace('"', ""); if ($(valor).val() !== undefined) { nomeMetodo($(valor).val()); } console.log(chave, valor, nomeMetodo); // chave é o índice, valor é o valor }
Mas sei que a linguagem nao permite isso, o que sugeriam, até mesmo os metodos gostaria de dar um CLEAN, segue
function limitaTextareaCorpoEmailVendaGerencial(valor) { var quantidade = 700; var total = valor.length; if (total <= quantidade) { resto = quantidade - total; document.getElementById('corpo-email-venda-gerencial-span').innerHTML = resto; } else { document.getElementById('form:corpo-email-venda-gerencial').value = valor.substr(0, quantidade); } } function limitaTextareaCorpoEmailNotaGerencial(valor) { var quantidade = 700; var total = valor.length; if (total <= quantidade) { resto = quantidade - total; document.getElementById('corpo-email-nota-gerencial-span').innerHTML = resto; } else { document.getElementById('form:corpo-email-nota-gerencial').value = valor.substr(0, quantidade); } }
entro na mesma questão, sei que tem como, mas por não conseguir ver a solução gostaria que se possivel me ajudassem, grato.