Modules
ou Módulos
Avoid Naming Collisions
ou Evitando Colisão de Nomes
Use uma única convenção de nomes com separadores para sub-módulos.
Por que? Nomes únicos ajudam a evitar colisão de nomes no módulo. Separadores ajudam a definir a hierarquia de módulos e submódulos. Por exemplo,
app
pode ser seu módulo raiz, enquantoapp.dashboard
eapp.users
podem ser módulos que são usados como dependências deapp
.
Definições (aka Setters)
ps: aka é o acrônimo de Also Known As, de forma traduzida, também conhecido como**.
Declare os módulos sem uma variável usando a sintaxe setter.
Por que? Com 1 componente por arquivo, raramente será necessário criar uma variável para o módulo.
/* evite */ var app = angular.module('app', [ 'ngAnimate', 'ngRoute', 'app.shared', 'app.dashboard' ]);
Ao invés, use a simples sintaxe setter.
/* recomendado */ angular .module('app', [ 'ngAnimate', 'ngRoute', 'app.shared', 'app.dashboard' ]);
Getters
Ao usar um módulo, evite usar uma variável. Em vez disso, use encadeamento com a sintaxe getter.
Por que? Isso produz um código mais legível e evita colisão de variáveis ou vazamentos.
/* evite */ var app = angular.module('app'); app.controller('SomeController' , SomeController); function SomeController() { }
/* recomendado */ angular .module('app') .controller('SomeController' , SomeController); function SomeController() { }
Setting vs Getting
ou Definindo vs Obtendo
Apenas set (configure) uma vez e get (receba) em todas as outras instâncias.
Por que? Um módulo deve ser criado somente uma vez, então recupere-o deste ponto em diante.
- Use
angular.module('app', []);
para definir (set) um módulo. - Use
angular.module('app');
para pegar (get) este módulo.
- Use
Named vs Anonymous Functions
ou Funções Nomeadas vs Funções Anônimas
Use funções nomeadas ao invés de passar uma função anônima como um callback.
Por que? Isso produz um código mais legível, é muito fácil de debugar, e reduz a quantidade de callbacks aninhados no código.
/* evite */ angular .module('app') .controller('Dashboard', function() { }); .factory('logger', function() { });
/* recomendado */ // dashboard.js angular .module('app') .controller('Dashboard', Dashboard); function Dashboard() { }
// logger.js angular .module('app') .factory('logger', logger); function logger() { }