Pourquoi ne retrouve-t-on jamais ce que l’on range à un endroit bien spécifique pour être certain de le retrouver plus tard ?
Une heure perdue pour finalement ne pas retrouver quatre malheureuses vis de soutient d’une étagère…Alors qu’en montant le meuble, je m’étais dit, je vais les ranger là, comme ça, le jour où l’on voudra mettre l’étagère, je saurai où elles se trouvent…Je cherche encore !
Beaucoup de programmes javascript nécessitent l’exécution de code dès lors que le chargement d’une page est arrivé à terme. jQuery rend facile le branchement à cet événement et beaucoup de développeurs l’utilise comme tel :
$(document).ready(function(){// code du programme... tout est làvarterm=searchParameter();if (term) $("#search_form input[type=text]").val(term).addClass("focus")// .. 200 lignes plus loin ...// ah, voici le code que vous devez modifier});
JavaScript
Ce type de code est très certainement suffisant pour de petites applications, mais dès lors que vous avez quelques centaines de lignes de code qui grouillent, il est fort probable que vous commenciez à souffrir pour travailler. Vous pouvez essayer de ponctuer le code de commentaires – nous savons tous que ce n’est pas idéal – ou encore découper le code en plusieurs appels de $document.ready(), les uns après les autres. Pas très propre…
Une façon d’obtenir un plus haut-niveau de compréhension de votre code consiste à sortir les sections sans rapport dans leurs propres fonctions pour ensuite les appeler depuis la fonction d’initialisation :
$(document).ready(function(){initializeSearchForm();initializeRowPointer();initializeThumbnailSizeSlider();initializeQueueStatuses();// et cetera ...});functioninitializeSearchForm(){varterm=searchParameter();if (term) $("#search_form input[type=text]").val(term).addClass("focus");};// et toutes les autres fonctions ...
JavaScript
Désormais, nous avons une vue d’ensemble claire de ce qui se passe au chargement de la page et nous pouvons aisément accéder à telle ou telle fonction pour voir son fonctionnement et lui apporter des modifications. C’est mieux, et c’est comme celà que je procède depuis longtemps, mais en utilisant le patron de conception de Ryan McGeary, nous pouvons rendre ce code encore plus révélateur de ce qu’il fait et améliorer sa maintenabilité en embraçant le style jQuery.
Transformation en micro-plugin
$(document).ready(function(){$("#search input[type=text]").searchForm();$("#orders").selectableRows();$("#slider").thumbnailSizeSlider("td.picture img");$("#queue_statuses .status").queueStatus();// et cetera...});// micro-plugin$.fn.searchForm=function(){varterm=searchParameter();if (term) this.val(term).addClass("focus");returnthis;};// et tous les autres micro-plugins...
JavaScript
En réécrivant nos fonctions en tant que plugins jQuery, nous bénéficions de nombreux avantages par rapport à la première approche :
Nous déplaçons le sélecteur dans la section d’initialisation où nous pouvons facilement le retrouvez et le modifier. Cela nous donne une meilleure vision de ce que le code fait, tout cela sans effort.
C’est un plugin jQuery ! N’importe quel autre développeur habitué à jQuery et ne connaissant pas votre code, pourra immédiatement l’appréhender et se l’approprier,
C’est un plugin jQuery ! C’est facilement réutilisable, même si ce n’est pour l’instant pas l’objectif.
Si vous n’aviez jamais écrit de plugin jQuery auparavant, ceci devrait vous convaincre de la simplicité d’implémentation. Il n’est pas nécessaire de comprendre tous les méandres d’un framework. Vous adjoignez simplement une fonction à jQuery.fn et accédez à l’objet courant grâce à this. C’est la simplicité du système de plugins jQuery qui rend les micro-plugins possibles.
Quelle est cette pitrerie !? Un plugin, tout simplement !
Faisons tout de même bien la distinction entre un plugin et un micro-plugin. La différence réside principalement dans l’intention de l’auteur qui rédige le code. Généralement, les plugins jQuery sont écrits prioritairement pour être réutilisables et partageables. À l’inverse, les micro-plugins sont créés pour rendre le code local d’une application plus clair et plus facilement maintenable, sans intention de partage et/ou de réutilisation.
Ainsi, si vous réutilisez un micro-plugin dans un autre projet, et que ce plugin devient un outil souvent utile, pourquoi pas ne pas le documenter, le partager et le considérer comme plugin à part entière !
Note du traducteur : une erreur de traduction, une approximation disgracieuse, une suggestion, …, utilisez les commentaires pour me soumettre votre proposition et ainsi améliorer cette traduction ! Merci !
Cela fait un moment maintenant que je cherche un langage de programmation sur lequel me fixer qui me permettrait de développer des applications multi-plateformes. Il y a bien Mono, adaptation de .NET pour Linux, Java, ou encore descendre à un plus bas niveau avec C/C++. Il est aussi possible de passer par des outils comme Lazarus, réplique de Delphi, qui pourrait fortement me tenter, vu que j’ai déjà une connaissance de Delphi.
Oui mais, finalement, il n’y a rien qui me convainc réellement…
Et puis, je suis tombé sur un article (je ne sais plus lequel malheureusement…) qui décrivait un peu ce qu’était Python. Même si je connaissais au moins de nom le langage, je n’y avais jamais apporté plus d’attention que cela…Erreur !
Langage fortement typé, dynamique et orienté objet grâce auquel il est possible d’écrire des scripts simples pour Linux comme construire des applications lourdes avec une interface graphique ainsi que de créer des sites Internet ! Que demande le peuple ? Un langage réunissant les deux domaines qui font tourner le monde…de l’informatique. Un langage à apprendre plutôt que deux, et vous développez à loisir du client lourd aussi bien que du client léger. Et du client lourd, multi-plateforme ! En ce début de 21ème siècle il me semble important de ne plus se cantonner à Windows mais bien de travailler dans une logique d’ouverture et d’élargissement.
Ce site fait usage de cookies pour la mesure d'audience uniquement. Aucun autre cookie d'un quelconque réseau social ou autre échange commercial ne vous traquera ici.
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Durée
Description
cookielawinfo-checkbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
__koko_analytics_pages_viewed
6h
Cookie de l'outil de mesure d'audience en place sur ce site.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.