Je suis entièrement d'accord avec toi sur le fait que jQuery fais les vérifications nécessaires en interne afin de ne pas faire des traitements sur des collections vides, ce qui constitue un gain de performances.
Mais je crois que tu as toi-même résumé mon point de vue avec ces deux phrases:
La subtilité là dedans se résume au "SI le plugin [...]". Si le développeur du plugin n'as pas conscience que jQuery peut retourner des objets vides, il ne fera pas cette vérification lui-même. Et ce problème existe pour pas mal de plugins...
Et puis rien ne dis que demain ça ne sera pas toi ou moi qui écrira un plugin et qui devra prendre la responsabilité de faire cette vérification là. En règle générale, si le développeur n'as pas l'habitude de faire cette vérification dans son code "quotidien", il ne la fera pas lorsque qu'il écrira ce plugin en question.
Ensuite, je suis d'accord que 3 fonctions maximum appelées comme ça pour rien car l'objet est vide ce n'est pas beaucoup. Mais lorsque tu écrit un code comme ci-dessous (qui est volontairement moche, mais qui pourrait tout à fait exister), ce ne sont plus que 3 appels de fonctions...
(PS: ce code rassemble tout ce qu'il ne faut PAS faire avec jQuery)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 // exemple inventé d'un code de plugin pour faire un effet "voir plus" / "voir moins' jQuery.fn.cropText = function( options ) { var defaults = { duration: 100 }; var settings = jQuery.extend( defaults, options ); // appel a extend pas necessaire si l'objet est vide... jQuery('.cropTextLink', this).click(function() { if( jQuery(this).parent('.cropText').is(':visible') ) { jQuery(this).parent('.cropText').slideUp(settings.duration); } else { jQuery(this).parent('.cropText').slideDown(settings.duration); } }); jQuery( this ).slideUp(settings.duration); // pas mal de traitements sont fait dans les méthodes d'animations comme ça, ici ça ne sert a rien.. };
Pour rester dans le thème du sujet, je dirais qu'il faut toujours être un minimum conscient de comment les choses se déroulent en arrière-plan, du moins pour les choses que l'on utilise souvent. jQuery et les autres librairies n'ont rien de magique, elles facilitent énormément la vie du développeur mais on peut très vite en faire une mauvaise utilisation...
Partager