Question

J'en exécutais notre code via Jshint et j'ai décidé de passer des vérifications contre la complexité cyclomatique, puis j'ai fait du long refactoring sprint. Un endroit bien que me suis dérouté, voici un extrait de code:

var raf = null //raf stands for requestAnimationFrame

if (window.requestAnimationFrame) {
  raf = window.requestAnimationFrame;
} else if (window.webkitRequestAnimationFrame) {
  raf = window.webkitRequestAnimationFrame;
} else if (window.mozRequestAnimationFrame) {
  raf = window.mozRequestAnimationFrame;
} else if (window.msRequestAnimationFrame) {
  raf = window.msRequestAnimationFrame;
} else {
  raf = polyfillRequestAnimationFrame;
}

Sans surprise, dans cette implémentation CM est de 5, la première tentative a été d'utiliser une solution de MDN:

var requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame ||
                          window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;
window.requestAnimationFrame = requestAnimationFrame;

Ce qui ressemble simplement à un piratage pour moi (oui je sais, la majorité des programmeurs JavaScript à temps plein ne seront pas d'accord avec moi, mais c'est une opinion répandue au sein de notre équipe). Côter autour de mon code, j'ai trouvé un autre hacks que je pouvais employer pour le code de code complet, parmi ceux que j'étais fier pendant environ 5 secondes était l'utilisation de compréhensions du tableau:

var rafs = [
             window.requestAnimationFrame,
             window.webkitRequestAnimationFrame,
             window.mozRequestAnimationFrame,
             window.msRequestAnimationFrame,
             polyfillRequestAnimationFrame
           ].filter(function (rafClosure) {
             return rafClosure !== null && rafClosure !== undefined;
           });
return rafs[0];

Cependant, je suis curios

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top