Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Quel est votre retour d'expérience d'AngularJS sur la maintenabilité quand les applications grandissent ?

Le , par grunt2000

0PARTAGES

7  0 
Bonjour,

AngularJS a eu ces deux dernières années la faveur des développeurs. J'en ai lu beaucoup de bien, et il semble simplifier un grand nombre de choses.
Dans l'absolu, il me suffirait de m'y ruer.

Mais voilà, je suis plus que sur mes gardes à chaque annonce d'un truc merveilleux :
GWT a été en son temps très encensé. Mais des développeurs de Google admettent maintenant qu'ils étaient certains à le trouver improductif. C'était donc ça ce sentiment diffus que j'avais en l'employant ?
Spring est absolument génial : il suffit de trouver des gens capables de tout maîtriser, et il n'y a jamais assez de maîtrise et de compréhension de ses standards aux yeux de ses adeptes. Mais ce qu'il est important de retenir, c'est qu'il n'y a que des bonnes idées dedans. Et ça, il ne faut jamais oublier de le dire, même pour Spring MVC. Spring est très simple à configurer : d'ailleurs, une bonne partie de l'apprentissage, c'est apprendre à le configurer...
La méthode Agile décuple l'efficacité de tous : elle permet aussi de faire du théâtre avec des chorégraphies et des postures, et force déclamations de son agrément et de son plaisir d'y être intégré.
Java 8 et les Lambdas sont révolutionnaires : c'est évident qu'ils feront tout ; les lambdas c'est sympa. Et il n'y a pas d'abus...

Bon voilà pour le placardage. J'ai une vingtaine d'années de programmation derrière moi maintenant, et dès que quelque chose est génial je n'ai qu'une question :

Deux ans après son apparition,
qu'en est-il de la maintenabilité des applications produites avec ?
Une vaste application avec AngularJS montre quels bénéfices et quelles limites ?


Quelles sont les mauvaises pratiques éventuelles que l'on y a vues naître, les pièges (voire les affres) que l'on rencontre en l'employant ?
Une entreprise qui va migrer tout son GWT ou JSF ou Struts en AngularJS ou développer une grande application avec des quantités et des quantités de code AngularJS va devoir faire particulièrement attention à quoi ?
Pourquoi l'annonce de l'arrivée de la deuxième version d'AngularJS a-t-elle tellement troublé ? Quel impact général va-t-elle avoir ? Est-ce grave ? Struts 2 en son temps avait prétendu remplacer Struts 1 et n'avait réussi qu'à faire fuir tout le monde...

Quels sont les atouts aussi d'AngularJS, qui ont vraiment permis d'éliminer des sources d'erreur qui existaient auparavant ?

Merci de votre retour d'expérience.

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Marco46
Modérateur https://www.developpez.com
Le 18/01/2016 à 10:45
Je réponds très rapidement j'ai pas le temps de détailler il faudrait écrire un livre


Deux ans après son apparition,
qu'en est-il de la maintenabilité des applications produites avec ?
Une vaste application avec AngularJS montre quels bénéfices et quelles limites ?
Comme toutes les applications, tout dépend si les bonnes pratiques sont respectées. Y-a-t-il des TU ? Sont-ils à jour ? La doc est-elle à jour ? Les bugs ont-ils été corrigés ? Les bonnes pratiques ont-elles été respectées ?

Une webapp développée en Angular n'est pas particulièrement meilleure qu'une autre développée avec une autre techno dans la durée. Ce qu'on peut dire en revanche c'est que si ce que j'ai cité ci-dessus est respecté le TMA doit être généralement plus faible (ne serait-ce que parce que le front est dissocié du back et que donc pour faire évoluer le front il suffit de ne relivrer que ce morceau, ça semble évident mais ça compte pour beaucoup).

Quelles sont les mauvaises pratiques éventuelles que l'on y a vu naître, les pièges (voire les affres) que l'on rencontre en l'employant ?
Pour moi le plus évident et le plus dommageable c'est d'écrire de la logique dans les contrôleurs. J'en suis à ma 4ème webapp d'importance et clairement c'est le plus gros caveat. Ca a un impact majeur sur la lisibilité, la facilité à refactorer et la TMA et le TTM.

L'autre gros piège c'est de vouloir faire du site web php classique avec du Angular dedans parce que c'est hype. Angular s'utilise dans un contexte précis (webapp SPA), il n'est pas adapté à un autre contexte (templating côté serveur).

Un dernier piège c'est le référencement. Visiblement ça s'améliore mais c'est un point compliqué qui est valable pour toute les webapp utilisant une techno javascript pour architecturer le site (ember, Angular, etc ...). Ca peut bouffer beaucoup plus de temps que pour une appli classique standard où les pratiques sont sèches sur ce sujet.

Une entreprise qui va migrer tout son GWT ou JSF ou Struts en AngularJS ou développer une grande application avec des quantités et des quantités de code AngularJS va devoir faire particulièrement attention à quoi ?
Il ne s'agit pas d'une migration mais d'une réécriture.

Il faudra faire attention à :
- savoir si angular est adapté au besoin (mais si on vient de GWT ça devrait aller)
- éviter les mauvaises pratiques
- encourager les bonnes

En définitive, il est nécessaire de recruter au moins une personne qui a une expérience importante (au moins un voire deux projet(s) réussi(s)) afin de cadrer les pratiques. Quelqu'un comme moi quoi

Pourquoi l'annonce de l'arrivée de la deuxième version d'AngularJS a t-elle tellement troublé ? Quel impact général va t-elle avoir ? Est-ce grave ?
Il y a eu du trouble car beaucoup de chamboulements annoncés. En réalité il "suffit" de suivre les bonnes pratiques (pas de logique dans les contrôleurs, pas d'usage de $scope, faire un maximum de petites directives, écrire 99% de sa logique dans des services testés unitairement) pour que la migration soit beaucoup moins douloureuse derrière.

Quels sont les atouts aussi d'AngularJS, qui ont vraiment permis d'éliminer des sources d'erreur qui existaient auparavant ?
J'ai peu développé en web dans d'autres techno que Angular, je viens du client lourd. Pour moi il s'agit surtout d'unifier un peu tout dans un pot commun (jquery n'est pas un framework mais une lib. Pour moi angular est le 1er vrai framework de dev js côté front). Il s'agit également d'une architecture cohérente avec le web qui s'adosse sur l'archi web services REST. Il a donc fallu un engouement pour cette archi pour que les webapp front deviennent une réalité.

EDIT : Concernant les atouts ma réponse est très light il y en a plein, MVVM, services, directives, TU intégrés etc ... Mais les infos sont trouvables facilement
4  0 
Avatar de nathieb
Membre expérimenté https://www.developpez.com
Le 20/01/2016 à 16:39
Bonjour,

Je viens de découvrir Angular, et j'avoue que j'ai trouvé enfin une vraie motivation pour faire du JS (que je hais par ailleurs honte à moi).
Il faut dire que JSF/EJB/JPA ou Symfony sont mes amis, le background explique l'avis sur Javascript.

En fait je retrouve dans Angular tout ce que je souhaitais :
- Architecture d'une appli façon MVC
- cadre de travail
- gain de temps ...

Il faut un temps certain, pour tout assimiler, mais c'est comme tout "Framework".

je partage l'avis sur AngularJs tout frontend, en effet, j'ai choisi cette techno pour une appli Cordova (donc application mobile) avec
Serveur REST Tomcat EE. et la séparation backend frontend est enfin magique. ce qui a eu tendance à m'agacer en Symfony.
Ce petit retour d'expérience me fait envisager différemment mes prochaines applis web. Si angular migre en 2.0 je n'aurais
que la partie front à repenser, pas la partie métier "enfin" un vrai investissement.

Pour le tests même philosophie, la séparation des couches me semble bien plus intéressante.
Le vrai plus, c'est ce côté MVC en Javascript, je ne suis guère à l'aise avec du code "spaghetti", en terme de maintenance
cela à un coût non négligeable, et je sais de quoi je parle, je l'ai pratiqué, je l'ai subit.

J'attends un peu de temps pour la future version, je sais que cela va me coûter encore du temps,
mais les retours sur investissements sont importants.

Olivier
3  0 
Avatar de frfancha
Membre éclairé https://www.developpez.com
Le 21/01/2016 à 17:35
Nous avons terminé la réécriture de toutes les applications de data entry de la boîte avec angularjs, venant d'applications qui étaient en Windows (en IBM VisualAge for Smalltalk pour ceux qui connaissent).
Nous n'utilisons pas de logiciels externes donc cela couvre tout: aussi bien la comptabilité de A à Z, la description des contrats, la gestion client, ...
Cela fonctionne parfaitement avec les avantages d'un browser et aussi les limites bien sûr.
La politique de la maison a toujours été de mettre toute la logique métier en SQL (SQL Procedures) et, ensuite, seulement le minimum de cette logique pour faire des écrans "sympas" est dupliquée dans le code "écran".
Cela a permis une migration souple et "sans risque".
Angularjs est 1.4.8 et seuls ui-bootstrap (1.1) et block-ui sont utilisés en plus (pas de jQuery).
Un des gros gains de cette migration (mais ce n'est pas lié à angularjs) c'est qu'en même temps nous avons couvert tous les écrans avec des tests selenium, ce qui permet de changer des éléments centraux le coeur léger, sans crainte d'impact imprévu (ou alors il manque un test...).
3  0 
Avatar de Marco46
Modérateur https://www.developpez.com
Le 29/01/2016 à 11:06
Au fait, si Google décide unilatéralement de passer à Angular 3.0 au lieu de Angular 2.0, vous faites comment ?
Tu veux dire si Google décide unilatéralement de flinguer sa propre communauté qu'il aura mis 3 ou 4 ans à construire ?

Personnellement vu les soucis de perf remontés, je n'ai pas très envie (mais ça passerait) pour l'instant du Angular sur mobile.
Je sais pas où tu as vu ça, tu n'es pas le premier à le dire (que des soucis ont été rapportés), moi ce que je sais c'est que j'ai participé à un projet mobile de taille raisonnable touchant une gamme de mobiles extrêmement large et je peux te dire que non seulement les perfs sont au rendez-vous mais qu'en plus elles sont meilleures que lorsqu'on met l'intelligence sur le serveur comme tu dis.

Du coup je m'interroge ...

Il y a un cout d'entrée lors de la 1ère connexion du client parce qu'il faut charger pas mal de ressources d'un coup. Oui certes, en se démerdant bien c'est l'affaire de qqs secondes sur un mobile pourri avec une connexion pourrie.
Ceci fait c'est d'une rapidité et d'une fluidité imbattable par une webapp construite côté serveur. IMBA comme ils disent dans les jeux vidéos.

Le SEO est en revanche le vrai problème.
2  0 
Avatar de npuzin
Membre averti https://www.developpez.com
Le 18/01/2016 à 14:31
je maintiens en prod 2 grosses applis angular, et on a pas de soucis particulier.

on est en version angular 1.2.x car on a des utilisateurs ie8. Angular 2.0 je ne me lancerait pas la dedans pour l'instant, c'est trop tot.

Pour prendre un bon depart avec angular:

- maitriser tres bien le javascript est indispensable (3 ou 4 jours de formation JS intensive est la bienvenue pour qq'un qui ne maitriserait pas le JS moderne)
- ne pas faire de templating coté serveur effectivement comme dit plus haut (le back-end devrait etre un back-end REST pour bien faire)

si tu fais du java, angular + jboss rest easy ca marche bien

si tu as le gout de l'aventure, tu peux faire du JS fullstack, avec un backend javascript (node.js /expressjs)
1  0 
Avatar de marc.collin
Membre éclairé https://www.developpez.com
Le 21/01/2016 à 14:02
Citation Envoyé par chaya Voir le message
Je n'ai pas une grosse expérience d'Angular, mais je fais beaucoup de veille dessus en attendant qu'il devienne vraiment 'Le framework' to adopt.
Il y en a tellement de framework de nos jours, ça change rapidement. D'ailleurs un concurent de angulars fait pas des anciens du projet est http://aurelia.io/

Citation Envoyé par chaya Voir le message

Pour le moment je suis sur un framework 'Ext-JS' qui permet de faire des singles page web app, de très grosse envergure (MVVM ou MVC) en full javascript avec une approche orienté objet similaire au Java.
surement un des frameworks les plus complets surtout au niveau des composants graphiques. Disponible en gpl. Il y a quand même de la demande pour ce framework.

Dans le même genre il y a smartclient
1  0 
Avatar de ndalaba
Membre régulier https://www.developpez.com
Le 21/01/2016 à 14:11
Je n'ai pas une grosse expérience ce angularjs; juste une petite application web dans le cadre de mon apprentissage.
Au moment où je commençais vraiment à m’intéresser au framework; voilà qu'on me parle de la version 2 qui est complètement différente de la première.

Entre temps je découvre vuejs qui me parait plus simple et très bien pensé.
Migration donc vers vuejs.
1  0 
Avatar de ddoumeche
Membre extrêmement actif https://www.developpez.com
Le 22/01/2016 à 10:19
Pour l'avoir utilisé sur de nombreux projets, GWT n'avait rien d'improductif.
Par contre, il réclamait une machine de course et une bonne connaissance de Java.

Donc soit on avait des connaissances sur le sujet, qu'on vienne d'un cursus normal ou qu'on soit développeur backend,
soit il ne fallait pas s'y aventurer.
1  0 
Avatar de abelar_s
Membre actif https://www.developpez.com
Le 28/01/2016 à 17:57
Bonjour,
sans juger du framework lui-même que j'ai trop peu utilisé, voici quelques axes pour juger les retours, qu'on oublie souvent :

1. ARCHITECTURE
La mode en archi est désormais au client riche et aux API JSON. C'est devenu possible :
- par les frameworks front (Backbone, Ember -- j'ai entendu plus de gens heureux sur ces deux-là que sur Angular d'ailleurs),
- par les frameworks back (Rails, Django, Phoenix...) et la "standardisation" du JSON
- par la variété des terminaux et donc la mode revient au "client riche + API"

2. PERF
Je vois deux sortes de présentations sur Angular :
- celles qui montrent le côté magique (le marketing)
- celles qui montrent les soucis de perf et les astuces (les REX -- retour d'expérience)

La vérité est forcément entre les deux : une productivité accrue mais toujours besoin d'astuces et d'expertise (logique, ça ne me choque pas).
La question est donc : pour combien de temps et avec quelle dette technique ?
Difficile de dire et comme le demande le post de départ : où sont les vraies données ?

3. MOBILE
Le mobile ! C'est la clé du problème. Allez-vous faire une app mobile ? Pour quel(s) OS ?
Personnellement vu les soucis de perf remontés, je n'ai pas très envie (mais ça passerait) pour l'instant du Angular sur mobile.
Je ferais plus volontiers une appli native... mais alors il faudra un effort significatif pour avoir du IOS, Android et peut-être d'autres.
Par contre, la tablette (qu'on imagine plus puissante) pas de souci pour faire du web, et la smart watch je verrais quelque chose de plus léger.

Plus le temps passe, plus j'aime le "low tech" : un minimum d'HTML propre que tous les terminaux peuvent lire facilement, ça vous permet :
- l'usage standard sur desktop et tablette... mais bien plus rapidement que vos concurrents
- l'évolution, les compétences, les équipes... qui savent et maîtrisent ce qu'elles font
- l'usage web sur mobile correct, "anciens mobiles" décent, et même smart watch si c'est très léger
En bonus :
- ça marche aussi pour les robots / crawlers (et le SEO associé)
- ça marche aussi sur les screen-readers (accessibilité)

Bref, je ne suis pas contre la nouveauté et l'innovation bien au contraire, mais au moins :
- tout ce qui est un peu trop malin est sur le serveur, que vous maîtrisez
- tout ce que vous ne maîtrisez pas (le monde extérieur et le mode de consultation) n'a que peu de prérequis

Oui, pour l'instant et depuis que je fais du web, je suis plutôt pour l'intelligence sur le serveur
C'est un adage courant dans le monde du code, d'être libéral dans ce qu'on accepte et strict dans ce qu'on renvoie !

4. LA LICENCE, le point bonus qui n'a rien (?) à voir avec Angular.
Pour Sencha et ExtJS, j'avais fait quelque chose de solide dessus mais le "dual-licensing" sentait le sapin depuis 2009, voire 2008...
Ça ne me surprend pas et je suis content de ne pas avoir misé dessus.
Au fait, si Google décide unilatéralement de passer à Angular 3.0 au lieu de Angular 2.0, vous faites comment ?

KYC (Know Your Customer) mais... surveillez vos outils !
1  0 
Avatar de Marco46
Modérateur https://www.developpez.com
Le 01/02/2016 à 10:19
Citation Envoyé par SylvainPV Voir le message
pas de syntaxe propriétaire, une API minimaliste, des préprocesseurs et du CSS scopé supportés nativement, que demander de plus ?
Un mécanisme d'injection de dépendances. Rien de sérieux ne peut être entrepris sans ça.

J'avoue néanmoins que la syntaxe de Vue.js est séduisante, mais ça reste de l'AngularJs relooké avec moins de fonctionnalités.
1  0