la condition de if (vote) sera toujours true, parce vote est de type NodeList. Si aucun élément est trouvé par querySelectorAll, vote sera une liste vide ([], de type NodeList, mais on s'en fiche un peu), et en Javascript, une liste vide [] a une valeur vraie. C'est l'inverse de Python, où une liste vide a une valeur fausse. Dans les deux cas, une boucle va traiter le cas vide correctement sans surcoût donc la condition peut être retirée :
Le mot-clé var est maintenant à éviter en Javascript, le mot-clé let est pris en charge partout et a une sémantique plus claire, qui est la même qu'une déclaration de variable en C et en Java (alors que var est sujet à ces histoires de hoisting en début de fonctions. Si vous ne savez pas ce que ça veut dire, n'hésitez pas à vous renseigner mais ça ne fait que renforcer mon point :-))
En fait, on pourra utiliser for..of. J'en profite pour renommer vote en votes parce que c'est une liste. On pourrait aussi nommer la variable voteList, j'aime moins mais c'est peut-être plus claire:
On aurait aussi pu nommer votesvoteElements ou voteElementList, et votevoteElement, pour indiquer le type dans la variable. On aime ou on aime pas (ou on s'en fiche...).
Dans ce genre de cas, je ne suis de toute façon pas fan de la variable intermédiaire, mais c'est une question de goût.
Et puis finalement, ça ressemble à un cas où on devrait préférer injecter du CSS avec une extension comme Stylus pour éviter le Javascript complètement. Si on veut absolument le faire en Javascript, on pourra faire un truc du genre :
On notera l'utilisation des chaînes Javascript multilignes, de la directive !important découragée en CSS et le fait que je n'ai pas du tout testé le code de ce commentaire... à généraliser à tout le code du journal.
Finalement, j'ai effectivement eu un peu les mêmes réflexions sur le karma que toi et j'ai un avis mitigé, voir réservé, sur ce système, alors merci de lancer cette discussion :-)
# Petites remarques sur le script
Posté par raphj (site web personnel) . En réponse au journal Karma is considered harmful. Évalué à 9.
Allez, je me lance, parce que ça peut intéresser du monde ici :-)
la condition de
if (vote)sera toujourstrue, parcevoteest de typeNodeList. Si aucun élément est trouvé parquerySelectorAll, vote sera une liste vide ([], de typeNodeList, mais on s'en fiche un peu), et en Javascript, une liste vide[]a une valeur vraie. C'est l'inverse de Python, où une liste vide a une valeur fausse. Dans les deux cas, une boucle va traiter le cas vide correctement sans surcoût donc la condition peut être retirée :Le mot-clé
varest maintenant à éviter en Javascript, le mot-cléletest pris en charge partout et a une sémantique plus claire, qui est la même qu'une déclaration de variable en C et en Java (alors quevarest sujet à ces histoires de hoisting en début de fonctions. Si vous ne savez pas ce que ça veut dire, n'hésitez pas à vous renseigner mais ça ne fait que renforcer mon point :-))En fait, on pourra utiliser
for..of. J'en profite pour renommervoteenvotesparce que c'est une liste. On pourrait aussi nommer la variable voteList, j'aime moins mais c'est peut-être plus claire:On aurait aussi pu nommer
votesvoteElementsouvoteElementList, etvotevoteElement, pour indiquer le type dans la variable. On aime ou on aime pas (ou on s'en fiche...).Dans ce genre de cas, je ne suis de toute façon pas fan de la variable intermédiaire, mais c'est une question de goût.
Et puis finalement, ça ressemble à un cas où on devrait préférer injecter du CSS avec une extension comme Stylus pour éviter le Javascript complètement. Si on veut absolument le faire en Javascript, on pourra faire un truc du genre :
On notera l'utilisation des chaînes Javascript multilignes, de la directive
!importantdécouragée en CSS et le fait que je n'ai pas du tout testé le code de ce commentaire... à généraliser à tout le code du journal.Finalement, j'ai effectivement eu un peu les mêmes réflexions sur le karma que toi et j'ai un avis mitigé, voir réservé, sur ce système, alors merci de lancer cette discussion :-)