Angular.js versão 1.x – Alguns apontamentos

image_pdfimage_print

O AngularJS não requer que o programador saiba sobre padrões de desenvolvimento. Compreender os design patterns vai certamente ajudar a entender (e apreciar) o AngularJS em sua primeira versão, uma vez que a versão dois está ainda em desenvolvimento e não tem compatibilidade com sua versão anterior, tendo sido escrita do zero.

Há até a tentativa de trazer entre as versão 1.3 e 2.0, a comunidade e os códigos da versão 1.x, mas como sabemos, este erro já foi cometido outras vezes na história da informática, e tende certamente a reduzir a comunidade Angular para outras tecnologias. Cito o exemplo do Python2 para o Python3, que geraram incompatibilidades, que geraram um grande impacto nos utilizadores de Python, assim como em sua comunidade. E o resultado final, um enfraquencimento da tecnologia.

AngularJS gentilmente oferece wrappers, facades and factories, o que faz os programadores utilizarem padrões de projeto sem quase perceber.

Depois de trabalhar em conjunto com muitas equipes diferentes de desenvolvedores no passado, tenho notado que a maioria dos desenvolvedores têm o seu próprio estilo de programação.

AngularJS fornece os blocos de construção necessários para alavancar esses estilos de tal forma que o resultado final é um conjunto abrangente de módulos que é fácil de usar por outros desenvolvedores sem a necessidade de toda a equipe para conhecer o funcionamento interno de cada módulo.

Deste modo, o AngularJs convenientemente fornece aos desenvolvedores a liberdade de programar em seu próprio estilo, mas livra pedaços de código que pode fluentemente ser usados por outros sem a necessidade de grandes quantidades de documentação.

Ao promover o uso de padrões conhecidos e de eficiência comprovada, AngularJS pode poupar toneladas de frustração, tempo e dinheiro.

O verdadeiro poder da API do AngularJS é que ele permite convenientemente a aplicação de padrões de projeto fora da caixa, tornando o seu próprio código mais reutilizável, confiável, fácil de testar e, acima de tudo, simplesmente melhor, porque os designer patterns são padrões que são comprovados fornecerem soluções para os problemas de maneira mais sólida.

Não é sobre como AngularJS está escrito, é sobre a qualidade do código que ele conduz ser produzido.

Este post não pretende ser um estudo técnico sobre todos os padrões usados e promovidas pela AngularJS, mas aqui estão alguns exemplos:

Module pattern
AngularJS é construído em torno de módulos e cada aplicação é definida como um módulo:

angular.module('seuMódulo', ...);

Cada módulo pode especificar outros módulos como dependências, permitindo que o desenvolvedor possa usar facilmente módulos existentes sem conhecer o funcionamento interno exato de cada módulo.

Singleton pattern
AngularJS services são singletons, o que significa que só são instanciado uma vez:

angular.service ( 'seuService', ...);

Factory pattern
Embora AngularJS ofereça o método de conveniência angular.service(), ele é na verdade um invólucro em torno de um outro método que implementa o padrão factory:

angular.factory ( 'seuFactory', ...);

Observer pattern
Você pode ‘assistir/observar’ propriedades do escopo e atribuir ‘ouvintes’ para executar uma função quando uma propriedade mudar:

$scope.$watch('');

Publish subscribe pattern
Ao mesmo tempo, $scope pode emitir $broadcast ou $emit eventos. Da mesma forma, pode ser colocado event handlers para escutar por tais eventos emitidos utilizando o método $on.

O scope (this ou $scope) basicamente atua como um middleman entre o publisher e o subscriber para promover uma comunicação simplificada e eficiente:

$scope.$on();
$scope.$emit();
$scope.$broadcast();

Decorator pattern

Decorators permitem modificar o comportamento de serviços.

$provide.decorator('seuDecorator', ...);

Outras vantagens de Angular.js 1.x são:

  • Não exige instanciar uma classe base para criar uma view.
  • Não oferece alguns modelos ‘out of the box’ para lidar com coleções.
  • Não exige retornar objetos implementando uma API predefinida.

AngularJS é uma base/fundação que oferece grandes estruturas de organização da forma de programação para ajudar a construir o seu próprio framework de aplicações web, entregar um código melhor.
Enquanto AngularJS é conhecido principalmente por recursos populares como “a ligação de duas vias” e “directivas”, o principal benefício provou ser uma não-técnica no que gentilmente permite que qualquer desenvolvedor usar osmétodos built-in do AngularJS para escrever código de qualidade sem ter que saber nada sobre padrões de programação.

Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!