marshmellows on grill crop 1

O que é programação imperativa?

Como um iniciante, você provavelmente codificou em um estilo imperativo: você dá ao computador um conjunto de instruções a serem seguidas e o computador faz o que você deseja em uma sequência fácil de seguir.

Imagine que temos uma lista das senhas mais usadas do mundo:

const passwords = [   "123456",   "password",   "admin",   "freecodecamp",   "mypassword123",];

Nosso aplicativo vai verificar a senha do usuário ao se cadastrar e não permitir que ele crie uma senha desta lista.

Mas antes de fazermos isso, queremos refinar essa lista. Já temos um código que não permite ao usuário se cadastrar com uma senha menor que 9 caracteres. Portanto, podemos reduzir essa lista a apenas senhas com 9 caracteres ou mais para acelerar nossa verificação.

Imperativamente, escreveríamos:

// using the passwords constant from abovelet longPasswords = [];for (let i = 0; i < passwords.length; i++) {   const password = passwords[i];   if (password.length >= 9) {      longPasswords.push(password);   }}console.log(longPasswords); // logs ["freecodecamp", "mypassword123"];

  1. Criamos uma lista vazia chamada longPasswords.
  2. Em seguida, escrevemos um loop que será executado tantas vezes quanto as senhas do original passwords Lista.
  3. Em seguida, obtemos a senha no índice da iteração do loop em que estamos atualmente.
  4. Em seguida, verificamos se a senha é maior ou igual a 9 caracteres.
  5. Se estiver, colocamos no longPasswords Lista.

Um dos pontos fortes da programação imperativa é o fato de ser fácil de raciocinar. Como um computador, podemos acompanhar passo a passo.

steps crop

O que é programação declarativa?

Mas há outra maneira de pensar sobre codificação – como um processo de definir constantemente o que as coisas são. Isso é conhecido como programação declarativa.

A programação imperativa e declarativa atinge os mesmos objetivos. Eles são apenas maneiras diferentes de pensar sobre o código. Eles têm suas vantagens e desvantagens e há momentos para usar ambos.

Embora seja mais fácil raciocinar sobre a programação imperativa para iniciantes, a programação declarativa nos permite escrever um código mais legível que reflete exatamente o que queremos ver. Combinado com bons nomes de variáveis, pode ser uma ferramenta poderosa.

Portanto, em vez de dar instruções passo a passo ao computador, declaramos o que queremos e atribuímos isso ao resultado de algum processo.

// using the passwords constant from aboveconst longPasswords = passwords.filter(password => password.length >= 9);console.log(longPasswords); // logs ["freecodecamp", "mypassword123"];

A lista de longPasswords é definido (ou declarado) como a lista de passwords filtrado apenas para senhas maiores ou iguais a 9 caracteres.

Os métodos de programação funcional em JavaScript nos permitem declarar coisas de forma limpa.

  • Esta é uma lista de senhas.
  • Esta é uma lista de apenas senhas longas. (Depois de correr filter.)
  • Esta é uma lista de senhas com ids. (Depois de correr map.)
  • Esta é uma senha única. (Depois de correr find.)

Um dos pontos fortes da programação declarativa é que ela nos força a perguntar o que queremos primeiro. É na nomeação dessas coisas novas que nosso código se torna expressivo e explícito.

E quando nossos colegas desenvolvedores chegam e examinam nosso código, eles podem encontrar bugs com mais facilidade:

“Você chama essa variável de ‘índice’, o que me faz esperar um número, mas vejo que é o resultado de filter que retorna uma matriz. O que há com isso? “

women coding at home crop

Eu incentivo os alunos a escrever código declarativo tão freqüentemente quanto possível, constantemente definindo (e refatorando para redefinir) o que as coisas são.

Em vez de manter todo um processo imperativo em sua cabeça, você pode manter um processo mais tangível coisa em sua cabeça com uma definição clara.

Mike Zetlow é o instrutor líder em 10x Code Camp.