São as classes a nova parte má do JavaScript?

Com a chegada do ES6 muitos dos problemas da única linguagem de programação web do lado do cliente foram corrigidos, muitos deles ainda referentes ao seu nascimento.

Umas das funcionalidades mais pedidas pelos developers era a inclusão de classes (class). Uma vez que os pedidos foram milhares e as discussões em torno deste assunto foram imensas, as ditas classes acabaram por sobreviver até a especificação final da versão 6 do JavaScript. Mas será que realmente resolve problemas ou é apenas uma nova parte má do JavaScript? A verdade é que a keyword class é odiada por um grande numero de pessoas, numero esse igual ou maior aos que apoiam a sua inclusão, uma vez que o JavaScript não contem o conceito de “Class“.

A keyword class é apenas syntax sugar e pode criar confusão na cabeça dos developers. É apenas publicidade falsa!

A parte boa das classes

Muitas pessoas estudaram o paradigma da orientação a objetos, faz parte de qualquer universidade moderna, e nessas aulas de OO foi-lhes ensinado o conceito de classe, polimorfismo, herança e por ai adiante. Em JS já era possível simular o comportamento de uma “Classe” de uma linguagem orientada a objetos, mas era difícil. Até agora a forma de criar “classes”, sub classes e chamar métodos da classe pai era confusa e estranha. Muitos developers de JS apenas querem usar o básico da OO e seguir em frente, mas a syntax “antiga” deixava-os de fora, ninguém quer escrever aquele código feio e parvo.

Sendo assim, a nova keyword class permite que um maior numero de desenvolvedores tenha acesso às funcionalidades citadas anteriormente, mas isto não fez com que a forma “antiga” deixa-se de existir. Assim sendo, existem duas formas diferentes de criar “classes” em JS, uma mais “normal” para os já integrantes do mundo OO e a forma mais hardcore, através do seu prototype.

A nova parte má do JS!

A primeira coisa a perceber é que tudo em JavaScript são objectos, isso quer dizer que objetos são criados mesmo quando não existem classes! A melhor forma de explicar é fazendo uma analogia a seres vivos (neste caso, humanos).

Como pode ser visto na imagem acima, em Java (lado esquerdo) a class Man e Woman estendem uma outra classe, isto quer dizer que estas herdam as propriedades e métodos da sua classe pai (Human). O código abaixo mostra a criação de uma nova instância de Woman:

Woman sofia = new Woman();

Assim sendo, e como as classes em Java funcionam como uma espécie de DNA de um ser vivo, podemos assumir que a classe Woman é também uma instancia de Human e que esta não pode possuir ou assumir outras prioridades ou métodos que não os seus e os herdados do seu pai. Já em JavaScript esta suposição não se verifica.

Em JavaScript (lado direito) o funcionamento é muito semelhante a coisas inanimadas (a objetos da vida real), eles podem ser criados/inventados sem uma classe e vêm como uma espécie de socket plug&play que permite ligar um objeto a qualquer outro. A isto da-se o nome de prototype. Estes objectos podem ganhar/perder propriedades e métodos, assim como serem ligados a outros objetos que não possuem nenhuma relação entre si. É muito flexível em relação as classes propriamente ditas. Assim, podemos criar a Jane que seria o equivalente a criar uma instancia de Woman em Java.

var human = {}

var jane = Object.create(human)

Como pode ser observado, é possível criar um novo objeto praticamente do nada, sem nenhuma estrutura.

Mas qual é o problema afinal?

É claro que as classes são uma mais valia, eu próprio uso-as todos os dias na minha framework, o Stellar. O problema é mesmo “venderem”, digamos, gato por lebre e criar mais uma derivação de paradigma nesta linguagem que é uma verdadeira confusão desde o momento da sua criação.

Em forma de conclusão e resumo deixo uma lista de coisas boas e coisas más da chegadas das classes:

É bom porque:

  • Classes é algo que todos aprendemos e tornar a syntax melhor é uma coisa boa;
  • É uma funcionalidade opcional e existem outras formas de criar objetos;
  • Usar em propósitos bem definidos, não dá problema.

É mau porque:

  • O conceito de “classe” não existe em JavaScript;
  • O conceito de “classes” torna a coisa mais rígida. O uso do prototype faz com que tudo seja mais flexível (podendo também ser uma coisa má, kkk);
  • Cria mais um paradigma dentro da linguagem.

E tu, achas que as classes são uma coisa boa?

Docker in Production: A History of Failure

Pareceu-me um artigo interessante para partilhar. Ainda não gostei muito da ideia de colocar serviços a correr em containers e este artigo veio ajudar-me ainda mais a não o querer fazer.

The HFT Guy

Introduction

My first encounter with docker goes back to early 2015. Docker was experimented with to find out whether it could benefit us. At the time it wasn’t possible to run a container [in the background] and there wasn’t any command to see what was running, debug or ssh into the container. The experiment was quick, Docker was useless and closer to an alpha prototype than a release.

Fast forward to 2016. New job, new company and docker hype is growing like mad. Developers here have pushed docker into production projects, we’re stuck with it. On the bright side, the run command finally works, we can start, stop and see containers. It is functional.

We have 12 dockerized applications running in production as we write this article, spread over 31 hosts on AWS (1 docker app per host).

The following article narrates our journey with Docker, an adventure full of…

View original post mais 4.506 palavras

Partilhar Carros com os Amigos em Rust

Comecei do zero, tenho vindo a acompanhar a linguagem desde os seus inícios, mas nunca tinha tido contacto com ela. Comecei por fazer algumas experiências até que me envolvi na criação de um emulador para a GameBoy Color, apenas como um desafio e para diversão. Um dos conceitos mais complicado de se perceber são as referências e o borrowing (empréstimo).

Continuar a ler

Clair de Lune

Para quem me conhece melhor sabe que não tenho grandes limitações no tipo de musica que ouço, claro que todos temos as nossas preferencias, mas isso é que faz de nós únicos. Como este blog é meu e é pessoal, lembrei-me de partilhar o meu gosto pela musica clássica.

Ontem depois de assistir pela primeira vez ao video de uma das novas musicas da fantástica Lana Del Rey (“Freak”), no meio do videoclip, quando a musica termina, começa a tocar um belo solo de piano, eu conhecia a musica, mas já não me recordava do nome. Depois de alguma pesquisa, “Clair de Lune”!

Continuar a ler

Mais passadiço?!

DSC_0030

Bom, chegou a hora de fazer mais um critica. Para quem me conhece sabe bem que passo a vida a criticar. Claro, criticar é uma coisa boa, mas só quando é feita com cabeça e com um fim, consciente do impacto da critica. Não sou como a maioria das pessoas, que criticam só por poder criticar ou apenas porque lhes apetece. A minha critica não é apenas direcionada ao que penso estar mal e que pode ser melhorado, mas também ao que estando bem pode melhorar. Isto porque criticar não é apenas opinar negativamente sobre algo, uma critica também pode ser construtiva. Mas neste caso, estou mesmo a criticar uma coisa que está bem e que querem por mal.

Continuar a ler