|
|
|
#26 |
|
Messages: n/a
Hébergeur: |
Olivier Miakinen a écrit :
> Je suis d'accord avec Laurent. Même si ce n'est pas une « erreur » à > proprement parler, harmoniser l'usage des accolades dans un même > « if ... else ... » me semble une excellente idée pour la lisibilité. > > Pour ma part, je les mets systématiquement si je change de ligne. J'avoue que j'use des accolades en fonction des langage. Par exemple, en PHP, je les met systématiquement en raison de l'opérateur elseif. Allez trouver l'erreur : if(cond1) if(subcond1) bla() ; elseif(subcond1) bla() ; elseif(subcond1) bla() ; else bla() ; Mais en C et C++, j'évite les accolades quand elle sont inutiles (car je sais que l'ouverture d'un block entraîne l'empilement de l'adresse de retour. Étant donné qu'en javascript il n'y a pas de elseif, je ne met pas d'accolades lorsqu'il n'y a qu'une instruction. Mais au final, c'est une question de style, pas de défaut du langage. -- Mickaël Wolff aka Lupus Michaelis http://lupusmic.org |
|
|
|
#27 |
|
Messages: n/a
Hébergeur: |
Olivier Miakinen a écrit :
> Je suis d'accord avec Laurent. Même si ce n'est pas une « erreur » à > proprement parler, harmoniser l'usage des accolades dans un même > « if ... else ... » me semble une excellente idée pour la lisibilité. > > Pour ma part, je les mets systématiquement si je change de ligne. J'avoue que j'use des accolades en fonction des langage. Par exemple, en PHP, je les met systématiquement en raison de l'opérateur elseif. Allez trouver l'erreur : if(cond1) if(subcond1) bla() ; elseif(subcond1) bla() ; elseif(subcond1) bla() ; else bla() ; Mais en C et C++, j'évite les accolades quand elle sont inutiles (car je sais que l'ouverture d'un block entraîne l'empilement de l'adresse de retour. Étant donné qu'en javascript il n'y a pas de elseif, je ne met pas d'accolades lorsqu'il n'y a qu'une instruction. Mais au final, c'est une question de style, pas de défaut du langage. -- Mickaël Wolff aka Lupus Michaelis http://lupusmic.org |
|
|
|
#28 |
|
Messages: n/a
Hébergeur: |
En réponse à Olivier Miakinen qui écrivit, en date du : 6/09/07 12:56,
le message suivant : > > mais jamais : > if (test) { > instruction; > instruction; > instruction; > } else > instruction; Personnellement : if (test) { instruction; instruction; instruction; } else instruction; M'est farpaitement lisible contrairement à : if (test) { instruction; instruction; instruction; } else { instruction; } Où les { } sont un peu noyées et les if else pas posés au même alinéa (on dit alinéa dans ce cas ?) et je préfère : if(test) { instruction; instruction; instruction; } else instruction; même si : if(test) { instruction; instruction; instruction; } else { instruction; } pourrait être plus "propre" des gouts et des couleurs ? de sa propre lecture photographique ? -- SM |
|
|
|
#29 |
|
Messages: n/a
Hébergeur: |
En réponse à Olivier Miakinen qui écrivit, en date du : 6/09/07 12:56,
le message suivant : > > mais jamais : > if (test) { > instruction; > instruction; > instruction; > } else > instruction; Personnellement : if (test) { instruction; instruction; instruction; } else instruction; M'est farpaitement lisible contrairement à : if (test) { instruction; instruction; instruction; } else { instruction; } Où les { } sont un peu noyées et les if else pas posés au même alinéa (on dit alinéa dans ce cas ?) et je préfère : if(test) { instruction; instruction; instruction; } else instruction; même si : if(test) { instruction; instruction; instruction; } else { instruction; } pourrait être plus "propre" des gouts et des couleurs ? de sa propre lecture photographique ? -- SM |
|
|
|
#30 |
|
Messages: n/a
Hébergeur: |
Laurent vilday a écrit :
>> Non. Je un peu pénible. > > Quoi quoi quoi ? > Tu peux me la refaire en français STP, j'avoue ne rien avoir compris. Et à la lumière de ce lapsus je suis terrifié. Il fallait lire « Juste » en lieu et place de « Je ». > Oui et alors ? Tu l'as déjà dit et j'ai *jamais* dit le contraire, > j'allais même dans ton sens, si si. Mais bon, tout le contexte ayant été > supprimé de ton message c'est plus difficile de s'en rendre compte. Désolé, j'ai tendance à passer à la machette les messages. > Bon, force est de constater que l'humour léger de mon post n'a pas percé > la barrière de mon ordinateur. Tant pis un coup dans l'eau, j'essaierai > d'être plus accessible la prochaine fois. J'ai du mal à rire de sécurité informatique, surtout quand il y a un « kikoo lol » dans la phrase ![]() Si tu veux continuer ce troll velu, faisons-le en privé. -- Mickaël Wolff aka Lupus Michaelis http://lupusmic.org |
|
|
|
#31 |
|
Messages: n/a
Hébergeur: |
Laurent vilday a écrit :
>> Non. Je un peu pénible. > > Quoi quoi quoi ? > Tu peux me la refaire en français STP, j'avoue ne rien avoir compris. Et à la lumière de ce lapsus je suis terrifié. Il fallait lire « Juste » en lieu et place de « Je ». > Oui et alors ? Tu l'as déjà dit et j'ai *jamais* dit le contraire, > j'allais même dans ton sens, si si. Mais bon, tout le contexte ayant été > supprimé de ton message c'est plus difficile de s'en rendre compte. Désolé, j'ai tendance à passer à la machette les messages. > Bon, force est de constater que l'humour léger de mon post n'a pas percé > la barrière de mon ordinateur. Tant pis un coup dans l'eau, j'essaierai > d'être plus accessible la prochaine fois. J'ai du mal à rire de sécurité informatique, surtout quand il y a un « kikoo lol » dans la phrase ![]() Si tu veux continuer ce troll velu, faisons-le en privé. -- Mickaël Wolff aka Lupus Michaelis http://lupusmic.org |
|
|
|
#32 |
|
Messages: n/a
Hébergeur: |
Mickaël Wolff a écrit :
> Mais au final, c'est une question de style, pas de défaut du langage. Je ne suis pas d'accord. Le langage autorise l'omission des accolades mais je reste persuadé que c'est une erreur. Erreur induite par la présence de l'omission autorisée des points-virgules ; IMO c'est un des gros défauts du langage, ça devrait être soit l'un soit l'autre, mais pas les deux. Mais bon en parlant de défaut, le plus déroutant pour les débutants et le plus inutile pour les avertis, c'est incontestablement les variables qui peuvent être créées dans le scope le plus haut mais pas dans les scopes intermédiaires. global = 0; function scope1() { global = 1; function scope2() { // Impossible de déclarer une variable dans scope1 ici // mais ça peut la déclarer tout en haut ??? du nawak global = 2; function scope3() { // Impossible de déclarer une variable dans scope2 ni scope1 ici // mais ça peut la déclarer tout en haut ??? du nawak encore global = 3; } } } -- laurent |
|
|
|
#33 |
|
Messages: n/a
Hébergeur: |
Mickaël Wolff a écrit :
> Mais au final, c'est une question de style, pas de défaut du langage. Je ne suis pas d'accord. Le langage autorise l'omission des accolades mais je reste persuadé que c'est une erreur. Erreur induite par la présence de l'omission autorisée des points-virgules ; IMO c'est un des gros défauts du langage, ça devrait être soit l'un soit l'autre, mais pas les deux. Mais bon en parlant de défaut, le plus déroutant pour les débutants et le plus inutile pour les avertis, c'est incontestablement les variables qui peuvent être créées dans le scope le plus haut mais pas dans les scopes intermédiaires. global = 0; function scope1() { global = 1; function scope2() { // Impossible de déclarer une variable dans scope1 ici // mais ça peut la déclarer tout en haut ??? du nawak global = 2; function scope3() { // Impossible de déclarer une variable dans scope2 ni scope1 ici // mais ça peut la déclarer tout en haut ??? du nawak encore global = 3; } } } -- laurent |
|
|
|
#34 |
|
Messages: n/a
Hébergeur: |
Mickaël Wolff <mickael.wolff@laposte.net> wrote:
> Patrick Mevzek a écrit : > > > http://actuel.fr.selfhtml.org/articl.../md5/index.htm > > À noter que, hacher le mot de passe avec md5 depuis le client est > furieusement inutile. Au contraire, ça enlève une difficulté pour > pirater un compte. Trouvez le bon mot :-) <http://astrophoto.free.fr/md5.html> Thierry -- 4 Calculs & Astronomie en Javascript : <http://astrophoto.free.fr> 3 " Il y a 10 sortes de personnes sur Terre : ceux qui connais- 2 sent le système binaire et ceux qui ne le connaissent pas " 1....'....12.....'....24.....'....36.....'....48.. ...'....60.....'....72 |
|
|
|
#35 |
|
Messages: n/a
Hébergeur: |
Mickaël Wolff <mickael.wolff@laposte.net> wrote:
> Patrick Mevzek a écrit : > > > http://actuel.fr.selfhtml.org/articl.../md5/index.htm > > À noter que, hacher le mot de passe avec md5 depuis le client est > furieusement inutile. Au contraire, ça enlève une difficulté pour > pirater un compte. Trouvez le bon mot :-) <http://astrophoto.free.fr/md5.html> Thierry -- 4 Calculs & Astronomie en Javascript : <http://astrophoto.free.fr> 3 " Il y a 10 sortes de personnes sur Terre : ceux qui connais- 2 sent le système binaire et ceux qui ne le connaissent pas " 1....'....12.....'....24.....'....36.....'....48.. ...'....60.....'....72 |
|
|
|
#36 |
|
Messages: n/a
Hébergeur: |
Laurent vilday a écrit :
> Mickaël Wolff a écrit : >> Mais au final, c'est une question de style, pas de défaut du langage. > > Je ne suis pas d'accord. > > Le langage autorise l'omission des accolades mais je reste persuadé que > c'est une erreur. Erreur induite par la présence de l'omission autorisée > des points-virgules ; L'absence des accolades n'est pas une omission. C'est justement le contraire. Le mot clé if est suivi de la condition entre parenthèse puis d'UNE instruction. L'usage d'accolades, c'est à dire l'introduction d'un bloc d'instructions, est un contournement. Si on ne pouvais pas faire ça, il faudrait déclarer une fonction à chaque fois qu'il y a besoin de plus d'une instruction. Mais ce serait lourd ![]() En ce qui concerne le ;, concrètement, à quoi sert-il ? Une fin de ligne est déjà codée, pourquoi rajouter un symbole ? > IMO c'est un des gros défauts du langage, ça devrait être soit l'un soit > l'autre, mais pas les deux. Le défaut, c'est surtout de ne pas être typé. C'est ce que je regrette dans tout les langages de scripting (ou presque). > Mais bon en parlant de défaut, le plus déroutant pour les débutants et > le plus inutile pour les avertis, c'est incontestablement les variables > qui peuvent être créées dans le scope le plus haut mais pas dans les > scopes intermédiaires. Je crois que tu n'as pas compris ce qu'est une variable globale :p . Tu as commencé par quel langage de programmation à coder ? -- Mickaël Wolff aka Lupus Michaelis http://lupusmic.org |
|
|
|
#37 |
|
Messages: n/a
Hébergeur: |
Laurent vilday a écrit :
> Mickaël Wolff a écrit : >> Mais au final, c'est une question de style, pas de défaut du langage. > > Je ne suis pas d'accord. > > Le langage autorise l'omission des accolades mais je reste persuadé que > c'est une erreur. Erreur induite par la présence de l'omission autorisée > des points-virgules ; L'absence des accolades n'est pas une omission. C'est justement le contraire. Le mot clé if est suivi de la condition entre parenthèse puis d'UNE instruction. L'usage d'accolades, c'est à dire l'introduction d'un bloc d'instructions, est un contournement. Si on ne pouvais pas faire ça, il faudrait déclarer une fonction à chaque fois qu'il y a besoin de plus d'une instruction. Mais ce serait lourd ![]() En ce qui concerne le ;, concrètement, à quoi sert-il ? Une fin de ligne est déjà codée, pourquoi rajouter un symbole ? > IMO c'est un des gros défauts du langage, ça devrait être soit l'un soit > l'autre, mais pas les deux. Le défaut, c'est surtout de ne pas être typé. C'est ce que je regrette dans tout les langages de scripting (ou presque). > Mais bon en parlant de défaut, le plus déroutant pour les débutants et > le plus inutile pour les avertis, c'est incontestablement les variables > qui peuvent être créées dans le scope le plus haut mais pas dans les > scopes intermédiaires. Je crois que tu n'as pas compris ce qu'est une variable globale :p . Tu as commencé par quel langage de programmation à coder ? -- Mickaël Wolff aka Lupus Michaelis http://lupusmic.org |
|
|
|
#38 |
|
Messages: n/a
Hébergeur: |
Thierry Loiseau a écrit :
> Trouvez le bon mot :-) Ce sera 898f3e39c22962e38a389994a49c47ae qu'il faudra envoyer au serveur, bien évidemment :p -- Mickaël Wolff aka Lupus Michaelis http://lupusmic.org |
|
|
|
#39 |
|
Messages: n/a
Hébergeur: |
Thierry Loiseau a écrit :
> Trouvez le bon mot :-) Ce sera 898f3e39c22962e38a389994a49c47ae qu'il faudra envoyer au serveur, bien évidemment :p -- Mickaël Wolff aka Lupus Michaelis http://lupusmic.org |
|
|
|
#40 |
|
Messages: n/a
Hébergeur: |
Mickaël Wolff <mickael.wolff@laposte.net> wrote:
> Thierry Loiseau a écrit : > > > Trouvez le bon mot :-) > > Ce sera 898f3e39c22962e38a389994a49c47ae qu'il faudra envoyer au > serveur, bien évidemment :p Mais le test se fait en local :P -- 4 Calculs & Astronomie en Javascript : <http://astrophoto.free.fr> 3 " Il y a 10 sortes de personnes sur Terre : ceux qui connais- 2 sent le système binaire et ceux qui ne le connaissent pas " 1....'....12.....'....24.....'....36.....'....48.. ...'....60.....'....72 |
|
|
|
#41 |
|
Messages: n/a
Hébergeur: |
Mickaël Wolff <mickael.wolff@laposte.net> wrote:
> Thierry Loiseau a écrit : > > > Trouvez le bon mot :-) > > Ce sera 898f3e39c22962e38a389994a49c47ae qu'il faudra envoyer au > serveur, bien évidemment :p Mais le test se fait en local :P -- 4 Calculs & Astronomie en Javascript : <http://astrophoto.free.fr> 3 " Il y a 10 sortes de personnes sur Terre : ceux qui connais- 2 sent le système binaire et ceux qui ne le connaissent pas " 1....'....12.....'....24.....'....36.....'....48.. ...'....60.....'....72 |
|
|
|
#42 |
|
Messages: n/a
Hébergeur: |
Le 13/09/2007 22:25, Thierry Loiseau a écrit :
>> >> Ce sera 898f3e39c22962e38a389994a49c47ae qu'il faudra envoyer au >> serveur, bien évidemment :p > > Mais le test se fait en local :P En local, je peux accéder à toutes les ressources que je veux sans passer par ton code JavaScript. C'est pour accéder au compte sur le serveur que j'ai besoin du bon mot de passe. Et si ce mot de passe est 898f3e39c22962e38a389994a49c47ae je n'ai pas besoin non plus d'un code JavaScript vérifiant que je connais une chaîne dont le code MD5 donne ce mot de passe. |
|
|
|
#43 |
|
Messages: n/a
Hébergeur: |
Le 13/09/2007 22:25, Thierry Loiseau a écrit :
>> >> Ce sera 898f3e39c22962e38a389994a49c47ae qu'il faudra envoyer au >> serveur, bien évidemment :p > > Mais le test se fait en local :P En local, je peux accéder à toutes les ressources que je veux sans passer par ton code JavaScript. C'est pour accéder au compte sur le serveur que j'ai besoin du bon mot de passe. Et si ce mot de passe est 898f3e39c22962e38a389994a49c47ae je n'ai pas besoin non plus d'un code JavaScript vérifiant que je connais une chaîne dont le code MD5 donne ce mot de passe. |
|
|
|
#44 |
|
Messages: n/a
Hébergeur: |
Thierry Loiseau <loiseauthierry@free.fr> wrote:
> Mickaël Wolff <mickael.wolff@laposte.net> wrote: > > > Patrick Mevzek a écrit : > > > > > http://actuel.fr.selfhtml.org/articl.../md5/index.htm > > > > À noter que, hacher le mot de passe avec md5 depuis le client est > > furieusement inutile. Au contraire, ça enlève une difficulté pour > > pirater un compte. > > Trouvez le bon mot :-) > > <http://astrophoto.free.fr/md5.html> Bon personne du coup et d'un coup n'a trouvé : nmreglgermn Thierry -- 4 Calculs & Astronomie en Javascript : <http://astrophoto.free.fr> 3 " Il y a 10 sortes de personnes sur Terre : ceux qui connais- 2 sent le système binaire et ceux qui ne le connaissent pas " 1....'....12.....'....24.....'....36.....'....48.. ...'....60.....'....72 |
|
|
|
#45 |
|
Messages: n/a
Hébergeur: |
Olivier Miakinen <om+news@miakinen.net> wrote:
> Le 13/09/2007 22:25, Thierry Loiseau a écrit : > >> > >> Ce sera 898f3e39c22962e38a389994a49c47ae qu'il faudra envoyer au > >> serveur, bien évidemment :p > > > > Mais le test se fait en local :P > > En local, je peux accéder à toutes les ressources que je veux sans > passer par ton code JavaScript. C'est pour accéder au compte sur le > serveur que j'ai besoin du bon mot de passe. Et si ce mot de passe est > 898f3e39c22962e38a389994a49c47ae je n'ai pas besoin non plus d'un code > JavaScript vérifiant que je connais une chaîne dont le code MD5 donne > ce mot de passe. M*rdre ! Je ne comprends pas : 1) ta réponse 2) pourquoi toujours parler "côté serveur" ?? Thierry -- 4 Calculs & Astronomie en Javascript : <http://astrophoto.free.fr> 3 " Il y a 10 sortes de personnes sur Terre : ceux qui connais- 2 sent le système binaire et ceux qui ne le connaissent pas " 1....'....12.....'....24.....'....36.....'....48.. ...'....60.....'....72 |
|
|
|
#46 |
|
Messages: n/a
Hébergeur: |
Olivier Miakinen <om+news@miakinen.net> wrote:
> Le 13/09/2007 22:25, Thierry Loiseau a écrit : > >> > >> Ce sera 898f3e39c22962e38a389994a49c47ae qu'il faudra envoyer au > >> serveur, bien évidemment :p > > > > Mais le test se fait en local :P > > En local, je peux accéder à toutes les ressources que je veux sans > passer par ton code JavaScript. C'est pour accéder au compte sur le > serveur que j'ai besoin du bon mot de passe. Et si ce mot de passe est > 898f3e39c22962e38a389994a49c47ae je n'ai pas besoin non plus d'un code > JavaScript vérifiant que je connais une chaîne dont le code MD5 donne > ce mot de passe. M*rdre ! Je ne comprends pas : 1) ta réponse 2) pourquoi toujours parler "côté serveur" ?? Thierry -- 4 Calculs & Astronomie en Javascript : <http://astrophoto.free.fr> 3 " Il y a 10 sortes de personnes sur Terre : ceux qui connais- 2 sent le système binaire et ceux qui ne le connaissent pas " 1....'....12.....'....24.....'....36.....'....48.. ...'....60.....'....72 |
|
|
|
#47 |
|
Messages: n/a
Hébergeur: |
Le 13/09/2007 22:50, Thierry Loiseau a écrit :
>> >> En local, je peux accéder à toutes les ressources que je veux sans >> passer par ton code JavaScript. C'est pour accéder au compte sur le >> serveur que j'ai besoin du bon mot de passe. Et si ce mot de passe est >> 898f3e39c22962e38a389994a49c47ae je n'ai pas besoin non plus d'un code >> JavaScript vérifiant que je connais une chaîne dont le code MD5 donne >> ce mot de passe. > > M*rdre ! Je ne comprends pas : > > 1) ta réponse > 2) pourquoi toujours parler "côté serveur" ?? J'ai pris le fil en cours, mais -- si j'ai bien compris le contexte --, Mickaël parlait du cas où l'on transmet un mot de passe à un serveur pour accéder à un compte sur le serveur. Et il disait avec juste raison que faire un hash MD5 sur le client avant d'envoyer le résultat du hash au serveur était encore plus inefficace que d'envoyer le mot de passe en clair sur le réseau, avec un hash MD5 fait sur le serveur. En effet, supposons que tu aies eu accès à la base des mots de passe MD5-isés sur le serveur, dans le premier cas (hash sur le client) il te suffit de faire directement la requête avec le résultat du hash (que tu connais). Dans le second cas, il te faudra sniffer le réseau pour connaître le mot de passe en clair car la connaissance du hash ne te sert à rien. |
|
|
|
#48 |
|
Messages: n/a
Hébergeur: |
Le 13/09/2007 22:50, Thierry Loiseau a écrit :
>> >> En local, je peux accéder à toutes les ressources que je veux sans >> passer par ton code JavaScript. C'est pour accéder au compte sur le >> serveur que j'ai besoin du bon mot de passe. Et si ce mot de passe est >> 898f3e39c22962e38a389994a49c47ae je n'ai pas besoin non plus d'un code >> JavaScript vérifiant que je connais une chaîne dont le code MD5 donne >> ce mot de passe. > > M*rdre ! Je ne comprends pas : > > 1) ta réponse > 2) pourquoi toujours parler "côté serveur" ?? J'ai pris le fil en cours, mais -- si j'ai bien compris le contexte --, Mickaël parlait du cas où l'on transmet un mot de passe à un serveur pour accéder à un compte sur le serveur. Et il disait avec juste raison que faire un hash MD5 sur le client avant d'envoyer le résultat du hash au serveur était encore plus inefficace que d'envoyer le mot de passe en clair sur le réseau, avec un hash MD5 fait sur le serveur. En effet, supposons que tu aies eu accès à la base des mots de passe MD5-isés sur le serveur, dans le premier cas (hash sur le client) il te suffit de faire directement la requête avec le résultat du hash (que tu connais). Dans le second cas, il te faudra sniffer le réseau pour connaître le mot de passe en clair car la connaissance du hash ne te sert à rien. |
|
|
|
#49 |
|
Messages: n/a
Hébergeur: |
Mickaël Wolff a écrit :
> Laurent vilday a écrit : >> Mickaël Wolff a écrit : >>> Mais au final, c'est une question de style, pas de défaut du langage. >> Je ne suis pas d'accord. >> >> Le langage autorise l'omission des accolades mais je reste persuadé que >> c'est une erreur. Erreur induite par la présence de l'omission autorisée >> des points-virgules ; > > L'absence des accolades n'est pas une omission. C'est justement le > contraire. Le mot clé if est suivi de la condition entre parenthèse puis > d'UNE instruction. L'usage d'accolades, c'est à dire l'introduction d'un > bloc d'instructions, est un contournement. Je ne suis toujours pas d'accord, et ce qui me rassure, c'est que Douglas Crockford va dans mon sens, et comme il a largement plus de crédibilité que moi, je me sens moins seul sur le coup ![]() <http://javascript.crockford.com/style1.html> <cite>Douglas Crockford</cite> <q lang="en"> JavaScript's if statement is similar to C's: it can take statements or blocks. The problem with using statements is that a common error is very difficult to detect. It is better to write if ((e = c.indexOf(';', s)) == -1) e = c.length; as if ((e = c.indexOf(';', s)) == -1) { e = c.length; } Always use blocks in structured statements. </q> > En ce qui concerne le ;, concrètement, à quoi sert-il ? Une fin de > ligne est déjà codée, pourquoi rajouter un symbole ? euhh, peut être pour structurer les instructions et éviter les erreurs d'interprétation ? Et peut être aussi parce que un saut de ligne n'a pas beaucoup plus de signification qu'un espace, sauf dans quelques cas rares (cf [exemple A] ci dessous, exemple direct de ECMA-262 §7.9). if ( x ) y=25 z=33 Si on met de côté le parse error, c'est pas tout à fait pareil que if ( x ) y = 25; z = 33; ou encore while ( i++ > 25 ) alert(i) est *totalement* différent de while ( i++ > 25 ) ; alert(i); Le ; n'est pas obligatoire ( il devrait ) mais lorsqu'il n'est pas présent c'est à l'interpréteur de le rajouter en fourbe sans en avertir personne. Hors dès qu'il y a intervention automatique sur un source, il y a une dénaturation potentielle des instructions. cf. ECMA-262 3e édition chapitre 7.9 : Automatic Semicolor Insertion <http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf> [exemple A] Cette règle est extrêmement dangereuse parce que ça peut tout changer lorsqu'il existe un saut de ligne (LineTerminator) à la place du ; supposé être ajouté. return a + b Sera transformé, par cette règle 7.9, en return ; a + b ; et lÃ, baam, bug introduit par l'insertion automatique puisque à priori l'instruction désirée c'était : return a + b; >> IMO c'est un des gros défauts du langage, ça devrait être soit l'un soit >> l'autre, mais pas les deux. > > Le défaut, c'est surtout de ne pas être typé. C'est ce que je regrette > dans tout les langages de scripting (ou presque). Tiens, c'est rigolo je trouve justement au contraire que c'est une force des langages scriptés. IMO les variables typées ça a une importance quand on compile un source et qu'on doit donc gérer très précisément les zones mémoires attribuées. Tandis que pour les langages scriptés, ben c'est pas au dev de gérer toutes ces saloperies d'adressage mémoire et par conséquent, pas besoin de typer chaque variable. > Je crois que tu n'as pas compris ce qu'est une variable globale :p . > Tu as commencé par quel langage de programmation à coder ? Ohhh que t'es vilain ![]() <http://javascript.crockford.com/style2.html> <cite>Douglas Crockford</cite> <q lang="en"> Global variables are evil </q> -- laurent |
|
|
|
#50 |
|
Messages: n/a
Hébergeur: |
Mickaël Wolff a écrit :
> Laurent vilday a écrit : >> Mickaël Wolff a écrit : >>> Mais au final, c'est une question de style, pas de défaut du langage. >> Je ne suis pas d'accord. >> >> Le langage autorise l'omission des accolades mais je reste persuadé que >> c'est une erreur. Erreur induite par la présence de l'omission autorisée >> des points-virgules ; > > L'absence des accolades n'est pas une omission. C'est justement le > contraire. Le mot clé if est suivi de la condition entre parenthèse puis > d'UNE instruction. L'usage d'accolades, c'est à dire l'introduction d'un > bloc d'instructions, est un contournement. Je ne suis toujours pas d'accord, et ce qui me rassure, c'est que Douglas Crockford va dans mon sens, et comme il a largement plus de crédibilité que moi, je me sens moins seul sur le coup ![]() <http://javascript.crockford.com/style1.html> <cite>Douglas Crockford</cite> <q lang="en"> JavaScript's if statement is similar to C's: it can take statements or blocks. The problem with using statements is that a common error is very difficult to detect. It is better to write if ((e = c.indexOf(';', s)) == -1) e = c.length; as if ((e = c.indexOf(';', s)) == -1) { e = c.length; } Always use blocks in structured statements. </q> > En ce qui concerne le ;, concrètement, à quoi sert-il ? Une fin de > ligne est déjà codée, pourquoi rajouter un symbole ? euhh, peut être pour structurer les instructions et éviter les erreurs d'interprétation ? Et peut être aussi parce que un saut de ligne n'a pas beaucoup plus de signification qu'un espace, sauf dans quelques cas rares (cf [exemple A] ci dessous, exemple direct de ECMA-262 §7.9). if ( x ) y=25 z=33 Si on met de côté le parse error, c'est pas tout à fait pareil que if ( x ) y = 25; z = 33; ou encore while ( i++ > 25 ) alert(i) est *totalement* différent de while ( i++ > 25 ) ; alert(i); Le ; n'est pas obligatoire ( il devrait ) mais lorsqu'il n'est pas présent c'est à l'interpréteur de le rajouter en fourbe sans en avertir personne. Hors dès qu'il y a intervention automatique sur un source, il y a une dénaturation potentielle des instructions. cf. ECMA-262 3e édition chapitre 7.9 : Automatic Semicolor Insertion <http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf> [exemple A] Cette règle est extrêmement dangereuse parce que ça peut tout changer lorsqu'il existe un saut de ligne (LineTerminator) à la place du ; supposé être ajouté. return a + b Sera transformé, par cette règle 7.9, en return ; a + b ; et lÃ, baam, bug introduit par l'insertion automatique puisque à priori l'instruction désirée c'était : return a + b; >> IMO c'est un des gros défauts du langage, ça devrait être soit l'un soit >> l'autre, mais pas les deux. > > Le défaut, c'est surtout de ne pas être typé. C'est ce que je regrette > dans tout les langages de scripting (ou presque). Tiens, c'est rigolo je trouve justement au contraire que c'est une force des langages scriptés. IMO les variables typées ça a une importance quand on compile un source et qu'on doit donc gérer très précisément les zones mémoires attribuées. Tandis que pour les langages scriptés, ben c'est pas au dev de gérer toutes ces saloperies d'adressage mémoire et par conséquent, pas besoin de typer chaque variable. > Je crois que tu n'as pas compris ce qu'est une variable globale :p . > Tu as commencé par quel langage de programmation à coder ? Ohhh que t'es vilain ![]() <http://javascript.crockford.com/style2.html> <cite>Douglas Crockford</cite> <q lang="en"> Global variables are evil </q> -- laurent |
|