
Envoyé par
user41
Bonsoir,
Je viens de voir les 3 pages... le code a l'air franchement compliqué (mais sans doute tout à fait pro)... l'un fait un include, c'est un peu dommage... bref, cela doit-il être si complexe et difficile à comprendre pour une si petite méthode ?
Bonjour,
Considérez ces liens pour ce qu'ils vous apportent, du travail mâché gratuitement.
La spécification, comme le code, requiert un effort pour être assimilée,
mais cela est récompensé par une implémentation moins défectueuse.
Si je prends votre dernier bout de code,
1 2 3 4
| String.prototype.substr = function(start, length = this.length - start){
if (start < 0) start = Math.max(this.length + start, 0);
return this.slice(start, start + length);
}; |
Le résultat, pour un hypothétique, mais pas moins invraisemblable puisque possible, appel, tel que
String.prototype.substr.call({}, 1);
Je n'obtiens pas le même résultat qu'avec la fonction originale.
Ce genre de petit détail ayant déjà été réfléchi dans les liens que j'ai fait suivre ici,
le problème serait résolu automatiquement.
Je vous suggère de prendre le temps de lire tout cela sérieusement pour un moment,
puis de simplement dormir dessus, vous y reviendrez plus tard, vous y verrez plus clair,
en gardant en tête qu'il n'y a jamais d'urgence à introduire un bug dans une correction
pour un cas hypothétique, car je rejoins NoSmoking, cette méthode n'est pas prête de
disparaître.
L'intention est louable mais peu réaliste.
Tout cela étant dit, je suggère de ne pas cacher votre modification derrière une assertion telle que
if (!typeof(substr) == 'function')
ou
if (!String.prototype.hasOwnProperty("substr"))
C'est le plus sûr moyen d'introduire un bug silencieux dans la base de code.
Bug qui ne sera découvert que bien plus tard,
et dont on aura du mal à comprendre la survenance le moment venu.
Si vous vous lancé dans cette modif, autant y aller franchement dès maintenant,
selon moi.
Alors oui, ça demande plus d'efforts, c'est moins efficace productivement parlant, ça coûte plus cher,
ça ne permet pas de s'auto-congratuler d'efforts consentis à pisser de la merde mal testée,
ça évite juste de procrastiner..
Bonne journée.
Partager