No final, fiquei com um saco cheio de papéis. O que significava que eu tinha muitos números para somar.

Coloquei-os em uma planilha no meu PC, pronto para começar a calculá-los manualmente. E então, minha mente de programador começou a falar comigo - por que eu deveria fazer todo esse trabalho manual 🛠️ quando eu poderia escrever um pequeno programa para fazer isso por mim?

Não me interpretem mal, estou ciente de que existem muitas outras maneiras de fazer esses cálculos. Mas como eu gostaria de me chamar de programador que adora automatizar coisas, eu queria fazer isso sozinho. Do jeito da velha escola.

Eu decidi usar Node.js para resolver esse problema, principalmente porque estou bastante confortável com JavaScript. E isso deveria ser um solução muito rápida que pensei durante uma xícara de café ☕ da manhã.

Então, aqui está o que eu fiz:

Primeiro, preenchi todos os números que tinha em um arquivo txt, cada um em uma nova linha.

image 112
Fonte de dados em um arquivo txt

Em seguida, escrevi um pequeno programa que lia o arquivo de origem de dados, analisava os números em uma nova linha como um valor separado a ser adicionado e fazia a soma.

var fs = require('fs');calculate = () => {    fs.readFile('data.txt', 'utf8', (err, data) => {        if (err) {            throw new Error(err)        }        const arr = data.split('rn');        const result = arr            .filter(e => e)            .map(parseFloat)            .reduce((curr, next) => curr + next);        console.log('RESULT: ', result);    });}

Direi algumas palavras sobre a implementação primeiro. Em seguida, faremos uma breve discussão sobre o que outras opções Eu poderia ter escolhido.

Esta é uma função muito curta que aproveita um pacote Node.js, fs. Ele nos permite interagir com o sistema operacional (por exemplo, para ler ou gravar arquivos nele). Isso é exatamente o que precisamos para poder ler nosso arquivo de fonte de dados.

O próprio código segue o padrão Mecanismo de retorno de chamada Node.js. E dentro da função de retorno de chamada, usei uma abordagem um pouco funcional: Tubulação vários métodos que obtêm os dados do processamento anterior, fazem algo sobre eles e os passam para o próximo.

image 113
Métodos de tubulação

O primeiro método, split, analisa os dados que estão sendo lidos do arquivo de texto usando o rn separador. Estes símbolos são usados ​​no mundo da programação para especificar quando uma nova linha (em um arquivo) está chegando.

Neste estágio de nosso programa, temos nossos números que foram lidos e analisados ​​do arquivo txt. Agora usamos o filter método. Esta etapa remove os dados de quaisquer valores vazios.

Então vamos para o map método – este é um Método JavaScript Array que aceita uma função de retorno de chamada. Este retorno de chamada será executado em cada um dos argumentos de um determinado array.

No nosso caso, os dados estão sendo passados ​​implicitamente – o que vem do filter a saída do método irá como entrada para o map método. E cada um dos membros desta entrada será processado pelo parseFloat método.

Isto é outro método JavaScript que analisa um argumento, convertendo-o primeiro em string, se necessário, e retorna um número de ponto flutuante. Precisamos realizar esta etapa para garantir que obtenhamos um cálculo correto.

A última etapa do nosso pipeline é o reduce método, um terceiro Método JavaScript Array vamos usar o uso.

Este método tem vários aplicativos, mas em nosso caso, estamos usando-o apenas para somar os números no array enquanto o iteramos.

A função de retorno de chamada do redutor que esse método aceita faz o trabalho real. Extraí o meu em um método nomeado separado para melhorar a legibilidade do código.

O que precisamos fazer vs o que podemos fazer

Na última seção, prometi uma breve discussão sobre o que mais poderíamos usar para atingir o mesmo objetivo.

Agora é hora de parar por um momento e pensar sobre o que precisamos fazer versus o que e como podemos fazer.

Nesse caso específico, meu objetivo era muito simples. Eu tinha alguns números que precisava somar automaticamente.

Isso me fez pensar – em qual estrutura de dados eu preciso colocar os dados, a fim de ter várias opções para facilitar o processamento? Foi assim que eu criei um array. Afinal, é uma das estruturas de dados mais simples e mais usadas em JavaScript.

E aqui você tem várias opções:

  1. Você poderia fazer como eu fiz no meu exemplo – usar métodos de array de JavaScript, como mapear, filtrar e reduzir de uma maneira mais funcional. Ou,
  2. Você poderia seguir o caminho antigo e usar rotações para iterar sobre a matriz e fazer o cálculo. Esses loops podem ser loops JavaScript for-, while-, forEach ou mesmo do-while. Em programas tão pequenos, o desempenho é insignificante, portanto, você decide o que usar.

Ambas as opções funcionariam bem. O que é mais importante aqui é que você deve sempre tomar suas decisões com base em qual é seu objetivo final.

Neste artigo, discuti uma ferramenta de automação muito curta e rápida para implementar. Ele fez o trabalho que eu precisava fazer. Visto que não tive muito tempo para investir, a primeira solução de trabalho foi boa o suficiente.

Mas haverá casos em que você deverá realizar uma análise muito mais sofisticada com antecedência para que no final termine com um software de boa qualidade.

Mantenha sua meta final como guia ao decidir o que fazer e como fazer, e você sempre estará no caminho certo.

Dê uma chance

Se você quiser experimentar, certifique-se de ter instalado o Node.js em seu sistema. Então vá em frente e verifique este repositório.

Para executar o programa, use o seguinte comando quando estiver no diretório onde está o arquivo calc.js:

node calc.js

Verifique a janela do console para ver o resultado. O meu é assim:

image 114
Saída do console

É tudo o que eu queria compartilhar com você. Espero que parte desta experiência permaneça com você para suas futuras tarefas de automação.

🔥 Obrigado por ler! 🔥