10 raisons pour lesquelles vous avez besoin d'optimisation du code
Pendant que nous écrivons du code, nous prenons en permanence des décisions et choisissons entre des solutions qui peuvent sembler équivalentes au début. Plus tard, il s'avère généralement que certains choix donnent lieu à un programme plus efficace que d'autres, donc une quête des meilleures pratiques de codage et techniques d’optimisation se pose naturellement, et nous commençons à voir tout le processus de développement comme un problème d'optimisation à résoudre.
Bien que les problèmes d’optimisation ne soient pas les seuls à être traités régulièrement par les développeurs, il existe par exemple des problèmes de décision et de recherche; l’optimisation est probablement la tâche qui englobe les différentes étapes du développement Web..
L'optimisation du code peut se produire à différents niveaux, en fonction de la proximité entre l'optimisation que nous réalisons et le code machine.. En développement Web, nous ne pouvons effectuer que des optimisations de niveau supérieur, comme l'optimisation au niveau de l'assemblage ou de l'exécution n'est pas une option pour nous, mais nous avons encore beaucoup d'opportunités.
Nous pouvons optimiser notre code au niveau architectural avec modèles de conception intelligents, au niveau du code source en utilisant les meilleures pratiques de codage et en utilisant les outils appropriés. Nous pouvons également améliorer les performances de notre équipe en: introduction de guides de style de codage dans notre flux de travail.
Quelle que soit la technique choisie, il existe une règle générale que tout effort d'optimisation de code doit suivre: nous devons toujours effectuer l'optimisation d'une manière qui ne change pas le sens du code.
Les avantages de l’optimisation du code se développent parallèlement à la croissance de notre projet. même au début, les petits projets peuvent devenir importants avec le temps, acquérir de solides compétences en optimisation de code a presque toujours des résultats positifs mesurables.
1. Base de code plus propre
Comme un projet mûrit, et de plus en plus de développeurs commencent à travailler dessus, les doublons et les chevauchements apparaissent généralement tôt ou tard et nous réalisons soudain que nous comprenons à peine ce qui se passe.
Ce n’est pas une coïncidence si garder à l’esprit le principe DRY (Don't Repeat Yourself) est l’un des piliers d’un développement logiciel efficace. Une base de code bien structurée et soigneusement optimisée dans laquelle nous pouvons réutiliser les mêmes éléments plusieurs fois est toujours plus élégant et ordonné, et est donc beaucoup plus facile à comprendre et à travailler avec.
2. Plus grande cohérence
La cohérence, c'est comme faire le ménage, quand on s'en occupe correctement, personne ne s'en aperçoit, mais quand on la néglige, tout semble en désordre et on se retrouve dans le chaos..
Atteindre la cohérence complète est difficile, car assurer la compatibilité ascendante peut éventuellement entraver l'amélioration, mais en faisant attention à utiliser des directives de code cohérentes, des API compatibles et des normes cohérentes peut sûrement diminuer la douleur.
Garder à l'esprit la cohérence du code est particulièrement important quand nous devons traiter avec le code hérité, ou dans le cas de projets plus importants impliquer de nombreux développeurs.
3. Sites plus rapides
Optimiser le code revient à acheter une voiture plus rapide. En conséquence, notre code s'exécute plus rapidement, et notre site ou application consomme moins de mémoire qu'avant. Bien que le processus d'optimisation peut nécessiter du temps et de l'argent supplémentaires, le résultat est un meilleure expérience, non seulement pour les développeurs mais aussi pour les utilisateurs finaux.
Un code plus rapide implique temps de chargement des pages plus courts De plus, cela représente un gros problème dans les domaines de l'optimisation des moteurs de recherche et du marketing de conversion. La recherche dit que “près de la moitié des internautes s'attendent à ce qu'un site se charge en 2 secondes ou moins, et ils ont tendance à abandonner un site qui n'est pas chargé en moins de 3 secondes”, donc la vitesse est clairement pas un domaine que nous pouvons ignorer en toute sécurité.
4. Meilleure lisibilité du code
La lisibilité est un aspect important de la maintenabilité du code. Le code désordonné avec un formatage ad hoc est difficile à lire, donc difficile à comprendre, en particulier pour les développeurs qui débutent dans un projet.
Nous pouvons nous protéger de la douleur de traiter avec du code indéchiffrable si nous appliquons certaines techniques d'optimisation de code, telles que:
- en utilisant des conventions de nommage cohérentes avec des noms significatifs, tels que BEM
- mise en forme cohérente avec utilisation logique de l'indentation, des espaces et de l'espacement vertical
- éviter les bruits inutiles, tels que les commentaires évidents, qui se passent d'explication
C'est la raison pour laquelle les grands projets, tels que WordPress, jQuery et Mootools, ont des guides de style de code clairs que chaque développeur impliqué doit suivre..
5. Refactoring plus efficace
Il arrive fréquemment dans le développement Web que nous héritions du code de quelqu'un d'autre et que nous comprenions rapidement qu'il loin d'être optimal, que ce soit en termes de structure, performance ou maintenabilité. La même chose peut arriver avec nos propres projets antérieurs que nous avions écrits alors que nous avions beaucoup moins d'expérience en programmation..
Dans d'autres cas les objectifs d'un autre projet changent avec le temps, et nous devons prioriser d'autres choses dans l'application qu'avant.
On parle de refactoring quand on changer (nettoyer) le code existant afin de l'optimiser sans changer aucune de ses fonctionnalités. Le refactoring doit être effectué avec le plus grand soin, car s'il est mal effectué, on peut facilement se retrouver avec une base de code encore moins optimale que celle d'origine..
Heureusement, nous disposons de nombreuses techniques éprouvées qui permettent de simplifier le processus de refactorisation..
6. Débogage plus simple
Le débogage occupe une partie importante du flux de travail de développement Web et constitue généralement une tâche fastidieuse, voire décourageante. C'est assez difficile si nous devons déboguer notre propre code, mais c'est bien pire quand nous avons besoin de trouver les bugs de quelqu'un d'autre, surtout si c'est quelque chose comme un code sans fin de spaghetti qui n'utilise que des fonctions.
Design intelligent et motifs architecturaux, tel que utiliser des objets et différents modules, et directives de codage claires peut faciliter le processus de débogage, même si ce n'est probablement pas notre tâche la plus chère.
7. Flux de travail amélioré
De nombreux projets de développement Web sont gérés par des équipes distribuées, telles que des communautés open source ou des équipes distantes. Une des tâches les plus difficiles dans la gestion d’un tel flux de travail est de trouver un moyen de rendre la communication suffisamment efficace pour permettre aux membres de l'équipe de se comprendre facilement, et ne pas avoir à discuter en permanence des défauts.
Les meilleures pratiques et guides de style convenus peuvent combler le fossé entre des personnes de différents horizons, sans parler des difficultés de communication habituelles entre les équipes de conception et de développement dans la plupart des projets Web..
L’optimisation du code est également optimisation du workflow, comme si les membres de l'équipe parlaient une langue commune et partageaient les mêmes objectifs déclarés, ils pourraient également travailler ensemble sans beaucoup de tracas.
8. Maintenance du code plus facile
Bien que construire quelque chose à partir de la base ait tendance à être plus amusant que de maintenir un code préexistant, nous avons parfois besoin de procéder à une maintenance continue du code. Travailler avec des systèmes existants peut également nous donner de nouvelles perspectives sur l’optimisation du code, car il s’agit d’une expérience différente de celle des premières optimisations dans un nouveau projet..
Dans la maintenance logicielle, nous sommes déjà à un stade où nous pouvons identifier les problèmes réels de performances et d’efficacité, et travailler avec des utilisateurs réels au lieu de cas d’utilisation hypothétiques..
La maintenance du code reçoit généralement peu de respect de la part des développeurs, mais elle peut néanmoins s'avérer une tâche enrichissante si nous suivons les meilleures pratiques, telles que l'utilisation de contrôle de version fiable, gestion de la dépendance, plates-formes de test et de stockage intermédiaire, et correctement s'occuper de la documentation.
9. Développement plus rapide des fonctionnalités
Innovation constante est essentiel pour rester pertinent dans notre domaine, car si nous ne présentons rien de nouveau à nos utilisateurs depuis un moment, nous pouvons rapidement nous laisser distancer. L'extension d'un projet et l'ajout de nouvelles fonctionnalités sont généralement beaucoup plus rapides si nous travaillons avec une base de code propre, bien optimisée..
Outre les méthodes d’optimisation de code déjà évoquées, le développement d’entités peut également prendre de l’élan si nous suivons méthodes modernes de gestion de projet, par exemple, si nous utilisons des modèles de cycle de vie itératifs au lieu du modèle traditionnel en cascade.
10. Dette technique moindre
Le terme "dette technique" a été inventé par Ward Cunningham, le programmeur qui a également développé le premier wiki. Il compare les conséquences de nos mauvaises décisions en matière de programmation, qui s'accumulent avec le temps sur une dette financière dans laquelle les gens paient des intérêts dans le futur afin d'obtenir rapidement de l'argent dans le présent..
Ces décisions non optimales se manifestent généralement sous la forme de solutions rapides, de programmation copier-coller, de codage en dur, de programmation culte du cargo, et autres. antipatterns de codage et des habitudes de travail bâclées.
C'est fondamentalement impossible d'éviter complètement la dette technique, car même de bonnes décisions peuvent avoir des conséquences moins souhaitées à l'avenir, mais si nous optimisons diligemment notre code, nous serons sûrement grevé d'une dette technique bien moindre.