Bonjour,
je rebondis sur une discussion que j’ai lu sur la liste user cette semaine ou quelqu’un faisait
[(#LOGO_ARTICLE|?{#LOGO_ARTICLE,#LOGO_RUBRIQUE})]
et avait du mal a comprendre que cela produisait un double appel à #LOGO_ARTICLE
Le compilateur ne devrait-il pas optimiser automatiquement les expression du type
X>?{X,Y}
en
X>sinon{Y}
?
Ca n'est possible que si X n'effectue aucune affectation, sinon il n'est pas sur que les 2 occurrences vont retourner la même valeur. S'assurer de la chose n'est nullement une "petite optimisation", ça implique d'avoir une base de connaissances sur tout ce qu'utilise X: filtres, opérateur, balise. Si le langage de squelettes était purement fonctionnel, on pourrait le faire en toute tranquilité, la base de connaissances se réduisant à "aucune affectation dans le langage". Depuis qu'il y a #SET, c'est mort.
je rebondis sur une discussion que j'ai lu sur la liste user cette semaine
ou quelqu'un faisait
[(#LOGO_ARTICLE|?{#LOGO_ARTICLE,#LOGO_RUBRIQUE})]
et avait du mal a comprendre que cela produisait un double appel à #LOGO_ARTICLE
Il n'a pas lu la doc qui expose #LOGO_ARTICLE_RUBRIQUE ?
je rebondis sur une discussion que j'ai lu sur la liste user cette semaine
ou quelqu'un faisait
[(#LOGO_ARTICLE|?{#LOGO_ARTICLE,#LOGO_RUBRIQUE})]
et avait du mal a comprendre que cela produisait un double appel à #LOGO_ARTICLE
Il n'a pas lu la doc qui expose #LOGO_ARTICLE_RUBRIQUE ?
En l'occurrence, c'était #LOGO_AUTEUR, sinon, #LOGO_ARTICLE
El Friday 11 September 2009 11:31:45 Cédric Morin va escriure:
Le compilateur ne devrait-il pas optimiser automatiquement les
expression du type
X>?{X,Y}
en
X>sinon{Y}
?
Peut-être un avertissement dans le fichier de log ?
Outre la raison d'effet de bord possible de X déjà évoquée, je vois aussi
que c'est pas mal d'inciter les développeurs (mais de façon non brutale)
à écrire leur code proprement plutôt que de le faire pour eux
automatiquement.
Un cas similaire est le traitement des   sans point-virgule par IE :
en les traitant comme des il corrige certes un code imparfait,
mais en faisant ça l'effet est que les devs se reposent sur ce
comportement, et les interpréteurs de code doivent être de plus en plus
permissifs et le code est de plus en plus flou, ce qui n'est pas vraiment
un service rendu à qui que ce soit.