No inicio fazer o codigo legivel para mim ?

Fala turma !!

eu estava estudando e me veio a seguinte duvida, sera que enquato eu estou aprendendo é melhor fazer um codigo que seja legivel e facil de entender para mim ou me procupar com os codigos mais otimazados ?

aqui vai um exemplo:

function comprar(nomeDoProduto,preçoDoProduto){
    const produto = {
        nomeDoProduto,
        preçoDoProduto
    }
    return produto
}
console.log(comprar(`Notebook`,2999))

Esse codigo ficou muito legivel para mim mas nao sei se ficou muito otimiazado agora um exemplo de outro codigo que me parece otimizado:

function objetoComParametro(usuario){
    usuario.nome
    usuario.email
    return dadosDoUsuario
}

const dadosDoUsuario = {
    nome: `Higor`,
    email: `teste@gmail.com`
}

console.log(objetoComParametro(dadosDoUsuario))

Eu nao sei a diferença exata dos dois mas se alguem poder me dar um conselho eu ficarei muito agradecido

muito obrigado turma !!!!

Bom, os dois códigos não são equivalentes.

O primeiro cria um objeto cujos valores são aqueles que foram passados como argumentos da função:

function comprar(nomeDoProduto,preçoDoProduto){
    const produto = {
        nomeDoProduto,
        preçoDoProduto
    }
    return produto
}

console.log(comprar(`Notebook`,2999)); // { nomeDoProduto: 'Notebook', 'preçoDoProduto': 2999 }
console.log(comprar('paçoca', 1.25)); // { nomeDoProduto: 'paçoca', 'preçoDoProduto': 1.25 }

Já o segundo código ignora os argumentos e sempre retorna o mesmo objeto:

function objetoComParametro(usuario){
    usuario.nome
    usuario.email
    return dadosDoUsuario
}

const dadosDoUsuario = {
    nome: `Higor`,
    email: `teste@gmail.com`
}

console.log(objetoComParametro(dadosDoUsuario)); // { nome: 'Higor', email: 'teste@gmail.com' }

// a função ignora os parâmetros e sempre retorna o mesmo objeto
console.log(objetoComParametro({ qualquerCoisa: 'abc', xyz: 123 })); // { nome: 'Higor', email: 'teste@gmail.com' }
console.log(objetoComParametro(1234567890)); // { nome: 'Higor', email: 'teste@gmail.com' }

Isso porque ela retorna sempre o objeto dadosDoUsuario, que foi criado fora da função. Qualquer coisa passada para a função é ignorada. Aliás, as duas linhas usuario.nome e usuario.email são inúteis, elas estão somente tentando acessar as propriedades nome e email, mas não fazem nada com elas. Se remover essas duas linhas, a função continua funcionando do mesmo jeito. Não sei qual era a intenção desta função, mas enfim...


Talvez o que dê para otimizar na primeira função é eliminar a variável e retornar direto:

function comprar(nomeDoProduto, preçoDoProduto) {
    return { nomeDoProduto, preçoDoProduto };
}

Ainda sim, o mais provável é que o ganho seja irrisório.


Sobre a pergunta do título, cada caso é um caso. Mas em geral, primeiro vc se preocupa com código claro, que seja fácil entender e manter (não só pra vc, mas pra qualquer outra pessoa que vá mexer futuramente - incluindo o seu "futuro eu", que daqui a um mês pode não lembrar o que era aquele código).

Depois, para otimizar, tem que ver se de fato há algum problema de desempenho. Mas pra isso tem que fazer testes pra saber onde estão os gargalos.

Dito isso, os exemplos que vc deu são simples demais para se preocupar com otimizações.

Cara voce me deu uma resposta que eu estava com duvida mas nao sabia procurar kkkkkkkkkkk eu nao sabia que o codigo abaixo iria retornar sempre os mesmos objetos mas de forma resumida me deu uma certa clareza muito obrigado !!!!