Article image
Erik Suris
Erik Suris20/08/2023 12:31
Compartilhe

N√£o dependa de frameworks, seja um programador baunilha ūüĎ®‚ÄćūüíĽ

  • #Vue.js
  • #React
  • #Angular

Você deve estar se perguntando: "o que é um programador baunilha?". Porém, antes de mais nada, precisamos entender o que é um framework. Bem, pense em tecnologias como React, Vue e Angular. Esses frameworks, assim como qualquer outro, são uma estrutura pré-construída que fornece diretrizes, componentes e funcionalidades comuns para acelerar o processo do desenvolvimento de software.

No entanto, a armadilha é depender exclusivamente desses frameworks, sem entender completamente a linguagem de programação subjacente. Nesse contexto, um programador baunilha (ou vanilla, do inglês) é aquele que utiliza apenas a linguagem de programação pura, sem bibliotecas e frameworks.

O t√≠tulo do presente artigo se trata de uma brincadeira, pois √© de extrema import√Ęncia utilizar de frameworks para n√£o ser um profissional limitado, tendo em vista que a maior parte das vagas requerem esse tipo de conhecimento. Por√©m, quero trazer √† tona uma reflex√£o importante.

Caso você ainda esteja conhecendo o vasto universo da programação, fique tranquilo, tudo que mostrarei a seguir será explicado, para que ninguém fique por fora dessa reflexão.

Observe o seguinte trecho de código em Javascript:

const vetor = [1,2,3,4,5]
const vetorDuplo = []
vetorDuplo[0]=vetor[0]*2
vetorDuplo[1]=vetor[1]*2
vetorDuplo[2]=vetor[2]*2
vetorDuplo[3]=vetor[3]*2
vetorDuplo[4]=vetor[4]*2

console.log(vetorDuplo)
//Resultado esperado: [2,4,6,8,10]

Se voc√™ conhece a sintaxe das principais linguagens de programa√ß√£o, voc√™ deve saber o que o c√≥digo acima faz. Basicamente, ele atribui o dobro do valor de cada elemento dentro do vetor para a vari√°vel vetorDuplo. Por√©m, se voc√™ j√° tem um pouco de experi√™ncia, sabe que essa √© uma p√©ssima pr√°tica. Imagine se houvessem dezenas, centenas ou milhares de elementos dentro do vetor. Voc√™ teria coragem de fazer um c√≥digo com dezenas, centenas ou milhares de linhas? √Č muito prov√°vel que n√£o. Portanto, vamos fazer de outra forma:

const vetor = [1,2,3,4,5]
const vetorDuplo = []

for (let indice = 0; indice < vetor.length; indice++) {
  vetorDuplo.push(vetor[indice]*2)
}

console.log(vetorDuplo)
//Resultado esperado: [2,4,6,8,10]

Ok, agora temos um algoritmo mais interessante. Ele utiliza de uma estrutura de repetição (for) para fazer o mesmo que o código anterior, mas garante que não importa quantos elementos existam dentro de um vetor, ele vai funcionar em apenas três linhas. Porém, há outras formas de chegar ao mesmo resultado com um código mais enxuto. Por exemplo:

const vetor = [1,2,3,4,5]
const vetorDuplo = []

for (let item of vetor) {
  vetorDuplo.push(item*2)
}

console.log(vetorDuplo)
//Resultado esperado: [2,4,6,8,10]

O código parece um pouco mais legível, e ao invés de manipularmos um item por meio de um índice, conseguimos manipular o próprio item. No entanto, ainda existem outras formas de fazer isso. Vejamos:

const vetor = [1,2,3,4,5]
const vetorDuplo = []

vetor.forEach(function(item) {
   vetorDuplo.push(item*2)
})

console.log(vetorDuplo)
//Resultado esperado: [2,4,6,8,10]

Nesse caso, usamos o m√©todo forEach, passando uma fun√ß√£o an√īnima de callback (fun√ß√£o passada como par√Ęmetro de outra fun√ß√£o), para dobrar o valor de cada item do vetor. Por√©m, ser√° que n√£o √© poss√≠vel reduzir o tamanho do c√≥digo?

const vetor = [1,2,3,4,5]

const vetorDuplo = vetor.map(function (item) {
  return item*2    
})

console.log(vetorDuplo)
//Resultado esperado: [2,4,6,8,10]

Aqui est√°. N√≥s conseguimos reduzir, vejamos... 1 linha! Parece uma vit√≥ria. Usando o m√©todo map, n√≥s manipulamos cada elemento do vetor e retornamos por meio de uma fun√ß√£o an√īnima de callback o resultado dentro de vetorDuplo, sem nem ao menos declararmos ele anteriormente. Contudo, h√° muito c√≥digo desnecess√°rio a√≠. O qu√™? N√£o acredita?

const vetor = [1,2,3,4,5]

const vetorDuplo = vetor.map(item => item*2)

console.log(vetorDuplo)
//Resultado esperado: [2,4,6,8,10]

Uau! Chegamos no mesmo resultado com apenas 1 linha de c√≥digo? O que ocorreu nesse c√≥digo √© que, como ele possuia apenas 1 par√Ęmetro sendo passado e realizava apenas um retorno, os par√™nteses, as chaves e at√© mesmo o return eram desnecess√°rios para o Javascript. Mas, espera a√≠... onde est√° a function? E o que seria aquele "=>"? Nessa linguagem, quando usamos uma fun√ß√£o an√īnima, ou seja, uma fun√ß√£o sem identificador, podemos substituir por algo muito mais amig√°vel, a chamada arrow function, como visto no c√≥digo acima.

Se você ainda é iniciante, deve ter achado isso um máximo, não é mesmo? Bom, agora vem a minha reflexão. Isso é uma parcela ínfima do que o Javascript pode fazer, sem a necessidade de frameworks ou bibliotecas, quaisquer que sejam. E isso vale para qualquer linguagem de programação.

Nesse universo, √© f√°cil se perder na empolga√ß√£o dos in√ļmeros frameworks, bibliotecas e ferramentas dispon√≠veis. A busca pela √ļltima novidade ou pela ferramenta mais popular muitas vezes se torna o foco principal. No entanto, √© essencial lembrar que a verdadeira ess√™ncia da programa√ß√£o reside na compreens√£o profunda da linguagem que d√° vida a esses frameworks.

A proficiência em uma linguagem de programação é alcançada por meio da compreensão profunda dos fundamentos da linguagem. Além disso, a expertise na linguagem permite que você escolhe os frameworks de acordo com as necessidades, em vez de depender cegamente das funcionalidades pré-estabelecidas e das tendências efêmeras de fóruns.

Não me leve a mal, os frameworks são ótimas ferramentas e evitam muitas dores de cabeça no desenvolvimento (eu, inclusive, utilizo frequentemente). Todavia, frameworks vem e vão. Já os conceitos fundamentais das linguagens de programação se mantém por muito tempo. Portanto, não DEPENDA de tecnologias, seja um programador que UTILIZA de frameworks e linguagens de programação para resolver problemas.

Fique à vontade para compartilhar sua opinião a respeito do tema.

Compartilhe
Coment√°rios (1)
Diego Rodrigues
Diego Rodrigues - 20/08/2023 14:31

Obrigado por compartilhar. Realmente é muito mais importante conhecer bem a linguagem por trás dos frameworks. Mas ainda assim também é importante conhecer um ou outro framework superficialmente pois a grande maioria das empresas vão acabar trabalhando com um framework.