Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

johnpapa/angular-styleguide

Atualmente estou desenvolvendo um projeto em Angular e um colega me apresentou as práticas que Johnpapa mantem no seu GitHub. A principio a primeira vista achei legal os padrões que ele utiliza, más vi que alguns fogem dos padrões JavaScript expostos no livro "Pattern JavaScript de Stoyan Stefanou" rescrito agora em 2014 como:

  • Declarar o modulo no inicio do arquivo já passando o nome do controller sem antes mesmo de ser criado:
    • Grande problema disso é que se esse controller for declarado através de uma variável por um implementador iniciante, por exemplo, não iria funcionar.
    • Esse padrão de declarar "this" dentro de uma variável, é mesmo uma boa prática fazer isso?

Queria saber a opinião de vocês quanto a esses padrões...

Caso alguém não conheça segue o link https://github.com/johnpapa/angular-styleguide

Obrigado!

4 respostas
solução!

Olá Danilo, como está escrito, o que Johnpapa fez é um styleguide (guia de estilo). Não significa que você tem que seguir o mesmo estilo do dele, mas para quem não sabe qual caminho traçar na hora de organizar seu código ele pode ser uma opção (mas veja minha ressalva abaixo).

AngularJs é um framework que necessita que a pessoa conheça bem a linguagem JavaScript. Sem conhecer a linguagem Javascript ele será refém de muito corta e cola, porque serviços e controllers utilizando a sintaxe Javascript, Angular é apenas um facilitador.

É por isso que o style guide do Johnpapa não é indicado para quem ainda não domina a linguagem Javascript. Por exemplo, ele utiliza constructor function e faz uso do this. Esse this é algo fundamental que o desenvolvedor Javascript conheça, mas muitos sequer sabem dos múltiplos contextos dessa palavra reservada. Sobre a declaração do controller, Javascript utiliza function hoisting, por isso que funciona.

Resumindo: eu sugiro o Style Guide do Johnpapa apenas para aqueles que dominam muito bem a linguagem Javascript, porque ele criará classes e instâncias de objetos através de construtor function e organizará todo código do Angular para girar entorno desse pilar. Foi por isso que usei a abordagem mais tradicional quando criei o treinamento, para conseguir ajudar os alunos que possuem lacunas no domínio da linguagem Javascript.

Espero ter esclarecido sua dúvida.

Nossa, ajudou muito, pois meu receio é de um novo implementador não entender as práticas utilizadas por ele e se perder no projeto ou até alterar o que não deveria.

Uma das coisas que ele deixou claro no guia dele e que gostei muito foi de expor sua lógica através de fabricas e deixar que o controller apenas execute e passe para a view o que precisa.

E como ultima questão eu vejo que vem algumas alterações bastante drásticas no Angular 2.0 e na atualização do ES5 para o ES6. O que penso sobre isso é que se você seguir um padrão de não expor sua lógica e apenas fazer chamadas dentro do seu controller, futuramente a atualização pode ser menos impactante. Acha certo pensar dessa forma, ou não tem escapatória? Kkk

Obrigado pela atenção!

Essa ideia de criar fábrica/serviços para encapsular a lógica da aplicação e deixar que os controller apenas chamem essa lógica, isso sim, independente do guide eu concordo.

É por isso que em nosso treinamento, no finalzinho, a gente isola o código que realiza o cadastro da foto em um serviço e o que o controller faz é chamar esse serviço. Eu mostro as vantagens de ser fazer isso. Chegou já nessa parte Danilo?

É como eu disse, nesse treinamento eu pensei muito, mas muito menos para organizar o código de uma maneira profissional, mas sem sacrificar aqueles que podem ficar ainda melhor em JavaScript.

Olha, de qualquer forma, acho muito legal o aluno correr atrás de outras formas de organizar o código para deixá-lo ainda melhor.

Da minha parte, um abraço e sucesso nessa caminha com Angular Danilo!

Sim, já finalizei o curso, e achei ele muito bom. Uma coisa que vi e não conhecia era a chamada do serviço através do "$q" via "$broadcast". Olhei depois a documentação do Angular e deixou bem claro essa parte da mesma forma que foi abordada no curso.

Obrigado pelos votos e parabéns pelo ótimo material disponibilizado.

Abraço!