Organisation du code

J’étais très réfractaire à développer une solution full javascript puisque pour moi ce n’était pas vraiment un langage; Pas de notion de classe, interface, héritage …

Mais étant donné la tendance des applications je me suis tourné vers ce langage en utilisant le framework Angular qui pour moi est un framework assez complet. Très tourné injection de dépendance, je me suis dit je vais pouvoir faire une vraie application.

Je me suis rendu compte à l’utilisation qu’il était possible de faire le meilleur comme le pire. En maitrisant bien l’usage ce n’est plus un calvaire d’utiliser angular. Je vais donc essayer d’expliquer ma vision des choses dans cet article.

 

Factory/Service :

Tout d’abord l’encapsulation la de la classe par (function() { }(); permet d’éviter les problèmes de conflit à la minification.

Afin de diminuer les portées et que cela soit plus claire, on initialise la factory (ou service) par une fonction non anonyme :

De même pour les injections de dépendances, il est plus clair d’utiliser $inject :

Encore une fois préférer l’usage de fonction que l’on expose plutôt que de passer par des fonctions anonymes :

De cette manière, on évite diminue considérablement le nombre de portées et on visualise très facilement les méthodes et propriété publiques et privées. Couplé à une ngDoc on a un code bien lisible et compréhensible de tous 🙂

Controller/Directive

Les conseils évoqués précédemment restent valables pour les controllers et directives néanmoins il y a quelques subtilités que je vais essayer de décrire ici.

Par convention dans un controller on écrit  : var vm = this (vm = ViewModel). Ce qui correspond donc à ce qui va être exposé côté vue.

Du coup dans un soucis de performance et de lisibilité, il faut absolument exposer uniquement les propriétés et méthodes que l’on souhaite utiliser côté vue.

 

J’espère que ces conseils vont vous aider à mieux organiser vos classes angular.

Dans un prochain article, j’aborderais la structure d’une application angular.

 

PS : Ces conseils sont inspirés de John Papa, évangéliste Angular : https://github.com/johnpapa/angular-styleguide