<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pedro Augusto</title>
    <description>The latest articles on DEV Community by Pedro Augusto (@pedroaugusto2305).</description>
    <link>https://dev.to/pedroaugusto2305</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F861238%2F9f76cd03-b06b-49fa-a054-4234442f1bca.jpeg</url>
      <title>DEV Community: Pedro Augusto</title>
      <link>https://dev.to/pedroaugusto2305</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pedroaugusto2305"/>
    <language>en</language>
    <item>
      <title>Programação Funcional com JavaScript</title>
      <dc:creator>Pedro Augusto</dc:creator>
      <pubDate>Sun, 08 Jan 2023 23:26:06 +0000</pubDate>
      <link>https://dev.to/pedroaugusto2305/programacao-funcional-com-javascript-2e9m</link>
      <guid>https://dev.to/pedroaugusto2305/programacao-funcional-com-javascript-2e9m</guid>
      <description>&lt;p&gt;&lt;em&gt;&amp;gt; Esse post é baseado nas minhas anotações do vídeo de introdução a programação funcional com JavaScript do canal &lt;strong&gt;Fun Fun Function&lt;/strong&gt; &lt;a href="https://www.youtube.com/watch?v=BMUiFMZr7vk&amp;amp;list=PL0zVEGEvSaeEd9hlmCXrk5yUyqUag-n84&amp;amp;index=1" rel="noopener noreferrer"&gt;Clique aqui!&lt;/a&gt; para ver.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Por que programar com JavaScript Funcional&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Com a programação funcional somos capazes de escrever programas com menos bugs e em menos tempo, por ser um código de fácil interpretação ele produz menos bugs, do mesmo modo, como podemos reaproveitar muito código então gastamos menos tempo. No JavaScript e em outras linguagens de programação, &lt;strong&gt;funções são valores&lt;/strong&gt; como podemos ver a seguir:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Basic Functions:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;triple&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;triple&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt; 
&lt;span class="s2"&gt;```


&amp;lt;p&amp;gt;Assim como strings, funções podem ser atribuidas à variáveis, ou passadas para outras funções, que são conhecidas como High-Order Functions. Mas no que essas funções são boas? Composição o fato de que nós podemos pegar uma função e colocá-la em outra função, nos permite compor várias funções menores em funções maiores. &amp;lt;/p&amp;gt;
- **High-Order Functions:**


 ```` js
 var animals = [

  { name: 'Fluffykins', species: 'rabbit' },

  { name: 'Caro', species: 'dog' },

  { name: 'Hamilton', species: 'dog' },

  { name: 'Harold', species: 'fish' },

  { name: 'Ursula', species: 'cat' },

  { name: 'Jimmy', species: 'fish' }

] 

// Método filter (High-order Function)
var dogs = animals.filter(function(animal) {
return animal.species == 'dog'
})

// Filter com loop for
var dogs = []
for(var i = 0; i &amp;lt; animals.length; i++) {
if (animals[i].species === 'dog')
    dogs.push(animals[i])
}

```&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nx"&gt;endraw&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Podemos&lt;/span&gt; &lt;span class="nx"&gt;ver&lt;/span&gt; &lt;span class="nx"&gt;que&lt;/span&gt; &lt;span class="nx"&gt;com&lt;/span&gt; &lt;span class="nx"&gt;o&lt;/span&gt; &lt;span class="nx"&gt;método&lt;/span&gt; &lt;span class="nx"&gt;filter&lt;/span&gt; &lt;span class="nx"&gt;usamos&lt;/span&gt; &lt;span class="nx"&gt;bem&lt;/span&gt; &lt;span class="nx"&gt;menos&lt;/span&gt; &lt;span class="nx"&gt;código&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;mas&lt;/span&gt; &lt;span class="nx"&gt;isso&lt;/span&gt; &lt;span class="nx"&gt;não&lt;/span&gt; &lt;span class="nx"&gt;é&lt;/span&gt; &lt;span class="nx"&gt;apenas&lt;/span&gt; &lt;span class="nx"&gt;pela&lt;/span&gt; &lt;span class="nx"&gt;sintaxe&lt;/span&gt; &lt;span class="nx"&gt;visualmente&lt;/span&gt; &lt;span class="nx"&gt;curta&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;é&lt;/span&gt; &lt;span class="nx"&gt;porque&lt;/span&gt; &lt;span class="nx"&gt;na&lt;/span&gt; &lt;span class="nx"&gt;verdade&lt;/span&gt; &lt;span class="nx"&gt;estamos&lt;/span&gt; &lt;span class="nx"&gt;realmente&lt;/span&gt; &lt;span class="nx"&gt;escrevendo&lt;/span&gt; &lt;span class="nx"&gt;menos&lt;/span&gt; &lt;span class="nx"&gt;código&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt; &lt;span class="nx"&gt;lógica&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; 
&lt;span class="nx"&gt;A&lt;/span&gt; &lt;span class="nx"&gt;razão&lt;/span&gt; &lt;span class="nx"&gt;pela&lt;/span&gt; &lt;span class="nx"&gt;qual&lt;/span&gt; &lt;span class="nx"&gt;precisamos&lt;/span&gt; &lt;span class="nx"&gt;de&lt;/span&gt; &lt;span class="nx"&gt;menos&lt;/span&gt; &lt;span class="nx"&gt;lógica&lt;/span&gt; &lt;span class="nx"&gt;é&lt;/span&gt; &lt;span class="nx"&gt;porque&lt;/span&gt; &lt;span class="nx"&gt;quando&lt;/span&gt; &lt;span class="nx"&gt;nós&lt;/span&gt; &lt;span class="nx"&gt;escrevemos&lt;/span&gt; &lt;span class="nx"&gt;nosso&lt;/span&gt; &lt;span class="nx"&gt;software&lt;/span&gt; &lt;span class="nx"&gt;em&lt;/span&gt; &lt;span class="nx"&gt;funções&lt;/span&gt; &lt;span class="nx"&gt;pequenas&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt; &lt;span class="nx"&gt;simples&lt;/span&gt;  &lt;span class="nx"&gt;elas&lt;/span&gt; &lt;span class="nx"&gt;podem&lt;/span&gt; &lt;span class="nx"&gt;ser&lt;/span&gt; &lt;span class="nx"&gt;integradas&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="nx"&gt;O&lt;/span&gt; &lt;span class="nx"&gt;que&lt;/span&gt; &lt;span class="nx"&gt;nos&lt;/span&gt; &lt;span class="nx"&gt;permite&lt;/span&gt; &lt;span class="nx"&gt;reutilizar&lt;/span&gt; &lt;span class="nx"&gt;em&lt;/span&gt; &lt;span class="nx"&gt;diversos&lt;/span&gt; &lt;span class="nx"&gt;lugares&lt;/span&gt; &lt;span class="nx"&gt;no&lt;/span&gt; &lt;span class="nx"&gt;nosso&lt;/span&gt; &lt;span class="nx"&gt;código&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/p&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="nx"&gt;raw&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="s2"&gt;````&lt;/span&gt; &lt;span class="nx"&gt;js&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;isDog&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;animal&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;animal&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;species&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dogs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;dogs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;animals&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isDog&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;otherAnimals&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;animals&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isDog&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="s2"&gt;```


&amp;lt;p&amp;gt;Como podemos ver, ao separarmos a função de callback, é possível criar um componente reutilizavel em outras high-order functions como no caso do &amp;lt;code&amp;gt;reject&amp;lt;/code&amp;gt;  que é o contrário do &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt;
Comparando isso ao loop &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; podemos ver que nós quebramos o problema de forma muito limpa em problemas separados.
Dessa forma somos capazes de pensar, interpretar e corrigir esses problemas separadamente. E isso é muito mais fácil do que quando as soluções estão todas misturadas iguais no loop &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt;. Isso significa que podemos escrever códigos com menos bugs em menos tempo.  &amp;lt;/p&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>programming</category>
      <category>softwaredevelopment</category>
      <category>showdev</category>
      <category>node</category>
    </item>
  </channel>
</rss>
