L'abstraction est la clé d'un code simple

image


Existe-t-il un moyen d'améliorer vos compétences 10 fois? Y a-t-il un secret magique qui - si vous le saviez seulement - vous ouvrirait un tout nouveau monde de compétences et de productivité dans le développement de logiciels?



C'est là que les sceptiques pensent: «Ici, vous ne pouvez pas couper les coins! Tout le monde doit s'entraîner pour devenir bon! " Et c'est vrai, mais que font les experts pour accélérer le développement de logiciels, et y a-t-il un élément clé qui peut faire une énorme différence?



Oui! Il y a!



Mais même si je le partage avec vous - même si je vous l'explique en détail - cela peut vous prendre 10 ans pour grandir et apprécier pleinement sa simplicité.



C'est du moins ce qui m'est arrivé. Cela m'a été présenté dans un anglais simple par mon professeur de programmation scolaire. J'ai suivi le processus d'application pas à pas à l'aide d'exemples de code. Et cela n'est vraiment arrivé qu'au bout de 10 ans. Mais maintenant, par expérience, j'apprécie profondément cette leçon, et bien que je sache que vous ne pouvez pas vraiment l'apprécier à première vue, je vais la partager avec vous.



Ce secret est la principale différence entre les performances moyennes et les performances 10x. En tirant parti de ce secret, vous pouvez être des ordres de grandeur plus efficaces.



Vous pouvez écrire du code plus réutilisable et moins susceptible de se rompre lorsque de nouvelles exigences sont introduites et que des modifications se produisent dans le code.



Le secret pour être 10 fois plus productif est de maîtriser l'abstraction. De nombreux développeurs traitent «l'abstraction» comme un gros mot. Vous pourriez entendre des conseils tels que «ne pas abstraire trop tôt» ou le célèbre «explicite vaut mieux qu'implicite» de Zen Python, impliquant que le concret est meilleur que l'abstrait. Ce sont tous de bons conseils, selon le contexte.



Mais les applications modernes utilisent une énorme quantité de code. Si vous imprimez le code source des 10 meilleures applications modernes, ces rames de papier rivaliseront avec la hauteur des gratte-ciel, et la maintenance du logiciel coûte beaucoup d'argent. Plus vous créez de code, plus cela coûte cher.



L'abstraction est la clé d'un code simple



Des abstractions correctes peuvent rendre votre code plus lisible, adaptable et maintenable en masquant des détails qui ne sont pas importants dans le contexte actuel et en réduisant la quantité de code nécessaire pour faire le même travail - souvent plusieurs fois.



"La simplicité, c'est soustraire l'évidence et ajouter le sens."

- John Maeda: Les lois de la simplicité


L'abstraction n'est pas une rue à sens unique. Il est formé de deux concepts supplémentaires:



  • Généralisation - supprimer les parties répétitives (évidentes) et les cacher derrière l'abstraction.
  • Spécialisation - Application de l'abstraction pour un cas d'utilisation spécifique, ajoutant uniquement ce qui devrait être différent (de manière significative).


Considérez le code suivant:



const doubleList = list => {
  const newList = [];
  for (var i = 0; i < list.length; i++) {
    newList[i] = list[i] * 2;
  }
  return newList;
};


Il n'y a rien de mal avec le code, mais il contient de nombreux détails qui peuvent ne pas être pertinents pour cette application particulière.



  • Il comprend des informations détaillées sur la structure de données du conteneur utilisée (tableau), ce qui signifie qu'il ne fonctionnera qu'avec des tableaux. Il contient la dépendance de la forme d'état .
  • Il inclut une logique d'itération, ce qui signifie que si vous avez besoin d'autres opérations qui doivent également visiter chaque élément de la structure de données, vous devrez également répéter la logique d'itération très similaire dans ce code. Cela induit une répétition , qui peut violer le principe DRY (ne vous répétez pas) .
  • Il comprend une affectation explicite plutôt qu'une description déclarative de l'opération à effectuer. C'est verbeux .


Rien de tout cela n'est nécessaire. Tout cela peut être caché derrière l'abstraction. Dans ce cas, une abstraction universelle qui a changé la façon dont nous créons des applications modernes et réduit le nombre de boucles for explicites que nous devons écrire.



"Si vous touchez une chose avec une conscience profonde, vous touchez tout."

- Thih Nhat Hanh


En utilisant l'opération de carte, nous pouvons raccourcir le code en une seule ligne, en supprimant l'évident (les parties que nous répéterons probablement dans un code similaire) et en nous concentrant sur le sens (juste ce qui devrait être différent pour notre utilisation). Exemple:



const doubleList = list => list.map(x => x * 2);


Les développeurs juniors pensent qu'ils doivent écrire beaucoup de code pour obtenir plus de valeur.



Les développeurs seniors comprennent la valeur du code que personne n'a besoin d'écrire.



Imaginez-vous un programmeur qui a popularisé l'utilisation de l'opération cartographique dans des langages de programmation tels que JavaScript. Mappez les résumés à l'écart de détails tels que le type de données que vous mappez, le type de structure de données contenant les données et la logique d'itération requise pour énumérer chaque nœud de données dans la structure de données. Cela a augmenté les performances de chaque application que j'ai créée au cours de la dernière décennie.



Jeremy Ashkenasa rendu plusieurs de ces opérations populaires en JavaScript et a ouvert la voie à de nombreux raccourcis syntaxiques que nous tenons maintenant pour acquis en JavaScript, en les utilisant d'abord dans CoffeeScript. Il a créé Underscore, qui a engendré Lodash (toujours l'outil de programmation fonctionnelle le plus populaire en JavaScript) et Backbone, qui a popularisé l'architecture MVC en JavaScript et jeté les bases d'Angular et React.



John Reziga fait jQuery qui était si populaire et influent qu'il a formé la plus grande collection de modules JavaScript ré-encapsulés (plugins jQuery) jusqu'à ce qu'après quelques années, les modules Node et ES6 standard apparaissent. L'API jQuery Selector était si influente qu'elle est devenue le fondement de l'API DOM moderne. Je profite de cette API presque quotidiennement lorsque je teste des composants React .



Les bonnes abstractions sont de puissants leviers qui peuvent faire une grande différence dans les performances. L'abstraction n'est pas un mot abusif. Les modules, fonctions, variables, classes sont toutes des formes d'abstraction, et la raison pour laquelle ils existent est de simplifier l'abstraction et de composer des abstractions.



Vous ne pouvez pas écrire de programmes complexes sans abstractions. Même le langage d'assemblage utilise des abstractions - des noms pour les instructions, des variables pour les adresses mémoire, des points de code pour sauter aux sous-programmes (tels que les appels de fonction), etc. Les logiciels modernes sont une couche d'abstractions utiles, et ces couches vous donnent l'avantage.



"Donnez-moi un levier assez long et un point d'appui sur lequel je puisse m'appuyer, et je déplacerai le monde entier."

- Archimède


Clé de la simplicité: Le secret que nous recherchons est de savoir comment réduire la quantité de code que nous créons - comment faire beaucoup plus avec beaucoup moins. Lorsque vous maîtrisez cela, vous deviendrez un programmeur 10 fois mieux. Je le garantis.





image



Apprenez en détail comment obtenir un métier recherché à partir de zéro ou passer au niveau supérieur en compétences et en salaire en suivant les cours en ligne payés de SkillFactory:






Lire la suite






All Articles