Sobre automatizar processos em suas linguagens ♻

Ideia Inicial

Normalmente eu sou pessimo quando se trata de duas coisas: dar nomes as minhas variaveis e ter ideias novas para projetos. Mas recentemente eu venho assistindo alguns videos como este e eu, como bom iniciante em JS, resolvi não somente estudar sobre API (Fetch, Promiss, etc), mas também aprender praticando. E de inicio, iria utilizar uma API relacionada a série Rick and Morty mas como achei bastante complexo de inicio a documentação e tudo mais, decidi ir pela The Movie DB já que pela documentação eu achei eu consegui entender um pouco mais de inicio como utilizava, além de já me mostrar resultados de solicitações, blocos de código prontos de solicitações GET, interação em tempo real com a API. E com tudo pronto, decidi colocar a mão na massa.

Práticando com grandes projetos

O bom de práticar fazendo projetos grandes como forma de estudo (na minha opinião) é você não somente aprender sobre o que você estar estudando mas também ver o problema real sendo solucionado ao vivo e em cores, além de aprender novos recursos ao longo do processo. Quando você estar praticando em um grande projeto você sempre vai aprender coisas novas o tempo todo. Seja resolver pequenos bugs que não estava previsto (nunca estão previstos), ou trocar um var = "Hello World!" para let = "Hello World!". São coisas pequenas, eu sei, mas imagine que em um grande projeto tudo pode acontecer de diferente, e coisas pequenas como essa pode ser a resolução de um bug (vai saber...). E além disso, novas coisas sempre vão surgir (Como mudar o cursor de forma?, Como evitar um SQL Injection no Banco de dados?, Como posso colocar meu site online agora?, Como fazer uma nova branch no git?). E o grande passo é você compreender tudo isso e buscar sempre novas soluções e respostas para suas grandes perguntas.

Automatizar Processos

Uma pensamento que eu nunca esqueci quando estudava na escola Técnica era sobre automatizar processos

O que isso quer dizer?

Automatizar processos se trata nada mais nada menos do que fazer algo automaticamente. E quando você programa, você está programando para fazer isso, automatizar algo. Pegue o exemplo de uma rede social que lhe informa todos as pessoas que estão online e se atualiza em tempo real ou quando um grupo de amigos fazem aniversário e você gostaria de dar parabéns para todos de uma só vez. Imagine um funcionario tendo que fazer isso manualmente (iria dar uma bela dor de cabeça, além de possiveis erros). Quando se trata de programação, nós já temos diversas ferramentas que nos ajudam nesse processo afim de aumentar nossa produtividade. Quando se trata de códigos nós podemos fazer ele de duas maneiras: O certo ✅ e o errado ❌. Vamos para um exemplo prático:

Imagine que você precise imprimir algo na tela diversas vezes até atingir X posições, digamos contar de 0 a 1000. Você poderia fazer (em JS) console.log(1) console.log(2) console.log(3) ..., ou poderia reduzir umas 900 linhas de código utilizando um laço de repetição while() ou for(let x=0; x<num; x++)

Onde você quer chegar com isso?

Quando estava fazendo esse projeto me deparei com um bloco de código mais ou menos assim:

            if (characters.character == null || characters.character == "") {
         
-                    try {
-                        const Label_Character = `<label>Personagem - ${characters.character}<br><br></label>`
-                        Informations_Movie.innerHTML += Label_Character;
-                        All_Movies.appendChild(Informations_Movie);
-                    } catch (error) {
-                        const Label_Character_Error = `<label>Personagem - Indisponivel<br><br></label>`
-                        Informations_Movie.innerHTML += Label_Character;
-                        All_Movies.appendChild(Informations_Movie);
-                    }
-                } else {
-                    const Label_Character = `<label>Personagem - ${characters.character}<br><br></label>`
-                    Informations_Movie.innerHTML += Label_Character;
-                    All_Movies.appendChild(Informations_Movie);
-                }

Imagina que fiz isso para muitas outras coisas como Datas, Titulos de filmes, Personagens novos. E eu achava que estava fazendo o certo até que vi que só esse "pouquinho" de código e muitas horas gastas deram mais ou menos umas 100 linhas novas de código, ou seja, o mesmo exemplo do contar até 100 manualmente. Quando me dei conta dessa frase, no dia seguinte tentei automatizar o processo daquelas 100 linhas manuais e até que consegui:

const Object_Movies = {
            title: characters.title ? characters.title : characters.original_name ? characters.original_name : " ❔ ",
            date: characters.release_date ? characters.release_date : characters.first_air_date ? characters.first_air_date : " ❔ ",
            character: characters.character ? characters.character : " ❔ "
          };
  
          const Date_Handling = Object_Movies.date.split("-")[0];
  
          try {
            const Div_Box_Informations = `
            <div id="box-informations-movies">
              <label id="text-title-date-movies">${Date_Handling} - ${Object_Movies.title}</label>
              <label id="text-character-movies">🎬 como ${Object_Movies.character}</label>
              <br>
            </div>
            <hr>`;
            Informations_Movie.innerHTML += Div_Box_Informations;
            All_Movies.appendChild(Informations_Movie);
          } catch (error) {
            Informations_Movie.innerHTML += `${error.message}`;
            All_Movies.appendChild(Informations_Movie);
          }

Afinal, de > 100 linhas para uma poucas linhas de código, não me sai mal. Claro que existe x formas de automatizar um exemplo como esse, mas esse foi o que eu encontrei, e terá pessoas que encontrará alguma forma de encurtar mais ainda esse código (acredite se quiser).

O bom de automatizar processos é que além de encurtar mais o código, o código se tornará mais legivel, mais limpo. Além de que facilitará a manutenção caso você deseje compartilhar o código com mais alguem. Existe x vantagens da automatização de processos e essa é o grande diferencial do que somente fazer tudo na unha e estar propenso a erros gigantes e mais dores de cabeça.

Considerações Finais

Por fim, essa foi uma vivência minha sobre o fator AUTOMATIZAR PROCESSOS que tive o prazer de reviver nesse final de semana fazendo um projeto um pouco simples porém complexo para mim que é um estudo novo de APIs.

E somente para finalizar, não existe curso ou outra coisa que nos faça aprender mais e melhor do que a prática, acredito que a téoria é importante e a combinação magnifica de teoria e prática nos proporcionam aprendizados ainda maiores do que somente prática e somente téoria. Ninguém se aperfeiçoa somente com téoria e vice-versa, você pode até aprender na marra mas os conceitos básicos sobre o que é um array [] ou o que é uma variavel voltarão para te assombrar.

Meu site - (https://near-metal-frame.glitch.me/index.html)

Meu github - (https://github.com/Luccxx/Movie-DB)