par
Hubert Roksor » 27 juil. 2007, 14:27
Ben euh... oui, if + do c'est comme un while, mais qui possèderait un else. Pour moi ce n'est pas du détournement, la fonction de while est de répéter une boucle tant qu'une condition est vraie, en la vérifiant avant chaque itération. La fonction de do/while est de répéter une boucle tant qu'une condition est vraie, en la vérifiant après chaque itération. Pour moi il s'agit de la même structure, le mot-clé "do" est utilisé pour des raisons syntaxiques.
Si tu vois if + do comme un détournement, alors que dire de num_rows() ? Sur le principe c'est comparable à l'utilsation d'un SELECT COUNT(*) ou count($arr) pour vérifier si une table ou un tableau est vide... L'utilisation de num_rows() présume que le set de résultat est parfaitement connu (
prefetched, c'est pour quoi ça ne fonctionne pas sur mysql_unbuffered_query()). Sur le principe, ça forcerait un driver qui implémente le résultat d'une requête SELECT sous la forme d'un curseur à faire plus de boulot pour voir jusqu'où les résultats courent. D'ailleurs, je crois me rappeler qu'à l'époque de la préhistoire (PHP4) il était délicat d'obtenir ce nombre à partir des autres SGBD sans pré-charger tous les résultats soi-même.
J'espère avoir clarifié ma position, et même si ça peut être perçu comme un détail je pense qu'on doit éviter le plus possible d'utiliser des informations précises ("
combien de x dans le set ?") quand une information plus vague ("
est-ce qu'il y a un x dans le set ?") est directement accessible et peut être utilisée à la place.
une condition inutilement répétée (dans le if et dans le while)
Juste pour vérifier, et pour m'assurer que ce passage n'est pas mal interprété (je me suis fait avoir à la première lecture), quand tu dis "
condition inutilement répétée" tu parles bien de l'action de copier/coller le code, et non de son exécution ? Que ce soit if+do ou while, la condition est vérifiée
i+1 fois, où
i est le nombre d'itérations.
Ben euh... oui, if + do c'est comme un while, mais qui possèderait un else. Pour moi ce n'est pas du détournement, la fonction de while est de répéter une boucle tant qu'une condition est vraie, en la vérifiant avant chaque itération. La fonction de do/while est de répéter une boucle tant qu'une condition est vraie, en la vérifiant après chaque itération. Pour moi il s'agit de la même structure, le mot-clé "do" est utilisé pour des raisons syntaxiques.
Si tu vois if + do comme un détournement, alors que dire de num_rows() ? Sur le principe c'est comparable à l'utilsation d'un SELECT COUNT(*) ou count($arr) pour vérifier si une table ou un tableau est vide... L'utilisation de num_rows() présume que le set de résultat est parfaitement connu ([i]prefetched[/i], c'est pour quoi ça ne fonctionne pas sur mysql_unbuffered_query()). Sur le principe, ça forcerait un driver qui implémente le résultat d'une requête SELECT sous la forme d'un curseur à faire plus de boulot pour voir jusqu'où les résultats courent. D'ailleurs, je crois me rappeler qu'à l'époque de la préhistoire (PHP4) il était délicat d'obtenir ce nombre à partir des autres SGBD sans pré-charger tous les résultats soi-même.
J'espère avoir clarifié ma position, et même si ça peut être perçu comme un détail je pense qu'on doit éviter le plus possible d'utiliser des informations précises ("[i]combien de x dans le set ?[/i]") quand une information plus vague ("[i]est-ce qu'il y a un x dans le set ?[/i]") est directement accessible et peut être utilisée à la place.
[quote="Ryle"]une condition inutilement répétée (dans le if et dans le while)[/quote]
Juste pour vérifier, et pour m'assurer que ce passage n'est pas mal interprété (je me suis fait avoir à la première lecture), quand tu dis "[i]condition inutilement répétée[/i]" tu parles bien de l'action de copier/coller le code, et non de son exécution ? Que ce soit if+do ou while, la condition est vérifiée [i]i[/i]+1 fois, où [i]i[/i] est le nombre d'itérations.