Guia de Estilo AngularJS

Guia de Estilo opinativo de Angular para times. Por @john_papa

Se você procura por um guia de estilo opinativo para sintaxe, convenções e estruturação de aplicações AngularJS, então siga em frente! Estes estilos são baseados em minha experiência com desenvolvimento com AngularJS, apresentações, cursos de treinamento na Pluralsight e trabalhando em equipe.

Se você gostar deste guia, confira meu curso Angular Patterns: Clean Code na Pluralsight.

A proposta deste guia de estilo é fornecer uma direção na construção de aplicações Angular mostrando convenções que eu uso, e o mais importante, porque eu as escolhi.

A Importância da Comunidade e Créditos

Nunca trabalhe sozinho. Acho que a comunidade Angular é um grupo incrível, apaixonado em compartilhar experiências. Dessa forma, Todd Motto, um amigo e expert em Angular e eu temos colaborado com vários estilos e convenções. Nós concordamos na maioria deles, e discordamos em alguns. Eu encorajo você a conferir o guia do Todd para ter uma noção sobre sua abordagem e como ela se compara a esta.

Vários de meus estilos vieram de várias sessões de pair-programming (programação pareada) que Ward Bell e eu tivemos. Embora não concordemos sempre, meu amigo Ward certamente me ajudou influenciando na última evolução deste guia.

Veja os estilos em um aplicativo de exemplo

Embora este guia explique o o quê, porque e como, acho útil ver tudo isso em prática. Este guia é acompanhado de uma aplicação de exemplo que segue estes estilos e padrões. Você pode encontrar a aplicação de exemplo (chamada "modular") aqui na pasta modular. Sinta-se livre para pegá-la, cloná-la e forká-la. Instruções de como rodar o aplicativo estão em seu README.

Nota de tradução: Os títulos originais de cada seção serão mantidos, pois caso você queira buscar mais sobre estes assuntos futuramente, fazendo tal busca em inglês será obtido um resultado imensamente melhor.

Após o título, estará a tradução auxiliar, quando necessária, visto que alguns termos são mais facilmente entendidos quando não traduzidos, por fazerem parte do núcleo do estudo em questão.

Para eventuais erros de digitação e/ou tradução, favor enviar um pull-request!

Tabela de Conteúdo

  1. Single Responsibility
  2. IIFE
  3. Modules
  4. Controllers
  5. Services
  6. Factories
  7. Data Services
  8. Directives
  9. Resolving Promises for a Controller
  10. Manual Annotating for Dependency Injection
  11. Minification and Annotation
  12. Exception Handling
  13. Naming
  14. Application Structure LIFT Principle
  15. Application Structure
  16. Modularity
  17. Angular $ Wrapper Services
  18. Testing
  19. Animations
  20. Comments
  21. JSHint
  22. Constants
  23. File Templates and Snippets
  24. Angular Docs
  25. Contributing
  26. License