IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Actualités Discussion :

Le pire bout de code que vous ayez vu

  1. #401
    Membre éclairé Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Points : 676
    Points
    676
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Non, je ne vois pas ça comme ça, moi : quand un circuit est en état « haute impédance », il n'est pas présent dans la logique du système.
    oui justement c'est pour cela qu'on se retrouve avec un état ambiguë pour la suite sauf si on a mis des résistences de pull-up/pull-down ce qu'on fait toujours donc bon ..

  2. #402
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Euh, ce type d'électronique a été inventé pour pouvoir mettre en parallèle sur un même bus plusieurs circuits,
    qui peuvent ainsi « causer » chacun à leur tour.
    Rien à voir avec le définition de Wiki,
    Cet article est une ébauche et je t'invite à aller y apporter les corrections nécessaires si tu penses en avoir la compétence

    De plus ce n'est pas non plus le meilleur exemple pour expliquer le tribool je le reconnais et d'autre part on se moque de savoir pourquoi le composant a été inventé c'est simplement pour faire une analogie sur une variable booléenne qui prend 3 états 0,1 ou indéterminé.


    Citation Envoyé par Jipété Voir le message
    Ça permet juste au circuit d'être présent dans le reste de l'électronique, ou pas : quand il est présent il « cause » boolean (0 ou 1), quand il est absent (sortie haute impédance) il est absent, il ne cause pas, il n'y a pas d'état ambigu.
    Je ne vois pas ce qui te gêne, tu as bien 3 états à partir du moment où l'on considère la haute impédance comme un état. Quand tu es en haute impédance tu ne peux ni dire que la valeur booléenne est 1 ou 0 alors quelle est sa valeur ? Elle est soit indéterminé soit ambigu dans les 2 cas en informatique cela à un sens(peut-être pas en électronique)

    Pour info ton exemple avec la checkbox est erroné. En effet même si une checkbox n'est pas enabled tu peux connaître et modifier son état.
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  3. #403
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 725
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 725
    Points : 15 125
    Points
    15 125
    Par défaut
    Citation Envoyé par hegros Voir le message
    (...) Quand tu es en haute impédance tu ne peux ni dire que la valeur booléenne est 1 ou 0 alors quelle est sa valeur ? (..)
    Quand la sortie est en haute impédance, c'est comme si le circuit n'était pas là, alors sa valeur, 0 ou 1 (qui existe en interne au circuit ! C'est la sortie qui est "désactivée" par la logique du système), on s'en tamponne un peu !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #404
    Membre éclairé Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Points : 676
    Points
    676
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Quand la sortie est en haute impédance, c'est comme si le circuit n'était pas là, alors sa valeur, 0 ou 1 (qui existe en interne au circuit ! C'est la sortie qui est "désactivée" par la logique du système), on s'en tamponne un peu !
    heu.. on s'en tamponne pas forcément en fonction de ce qu'il y a derrière !
    en général on met en résistance de pull-up/down pour forcer l'état a 1/0 quand on a cet état indéterminé.

  5. #405
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Quand la sortie est en haute impédance, c'est comme si le circuit n'était pas là, alors sa valeur, 0 ou 1 (qui existe en interne au circuit ! C'est la sortie qui est "désactivée" par la logique du système), on s'en tamponne un peu !
    Tu devrais lire ce qu'écrit unknow0 qui est probablement plus calé que moi en électronique

    On ne s'en moque pas forcément, en fait cela dépend de ce qu'il y a derrière. Si j'ai besoin de réaliser un traitement particulier quand le circuit est désactivé cela est utile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(Circuit.HauteImpedance)
      //traitement spécifique
    else if(Circuit.StateIsTrue)
       //traitement sur la valeur booléenne 1
        else
       //traitement sur la valeur booléenne 0
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  6. #406
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 725
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 725
    Points : 15 125
    Points
    15 125
    Par défaut
    Citation Envoyé par unknow0 Voir le message
    en général on met en résistance de pull-up/down pour forcer l'état a 1/0 quand on a cette état indéterminée.
    Non non non ! Si tu mets une résistance pour forcer à 0 ou 1, tu vas donc avoir 0 ou 1, ton circuit va "causer" alors que le contrôleur de circuit est censé l'avoir désactivé !
    Le but de la manip c'est de pouvoir mettre plusieurs circuits en parallèle sur un même bus, mais il n'y en a qu'UN seul qui cause à l'instant T, sous le contrôle d'un circuit maître (piloté par la logique générale du bazar).

    Ou alors, quand tu parles d'état indéterminé, tu parles de la transition 0->1 ou 1->0, qui ne peut pas être instantanée, on est bien d'accord. Mais ce problème existait AVANT l'invention des circuits à sortie tri-state, et a toujours été réglé par un petit délai par rapport à l'horloge principale, ie, le circuit qui doit lire ("recevoir" serait mieux) les données va attendre un chouchouille avant de valider ce qui est présent sur le bus de données.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  7. #407
    Membre éclairé Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Points : 676
    Points
    676
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Non non non ! Si tu mets une résistance pour forcer à 0 ou 1, tu vas donc avoir 0 ou 1, ton circuit va "causer" alors que le contrôleur de circuit est sensé l'avoir désactivé !
    justement quand personne parle il faut bien mettre un état sinon on a du bruit .. après le reste peut très bien s'en accommoder .. ou pas.
    ça dépend de ce que l'on fait.

    Le but de la manip c'est de pouvoir mettre plusieurs circuits en parallèle sur un même bus, mais il n'y en a qu'UN seul qui cause à l'instant T, sous le contrôle d'un circuit maître (piloté par la logique générale du bazar).
    oui mais dans le cas ou personne "parle" .. a un état indéterminée.

    Ou alors, quand tu parles d'état indéterminé, tu parles de la transition 0->1 ou 1->0, qui ne peut pas être instantanée, on est bien d'accord. Mais ce problème existait AVANT l'invention des circuits à sortie tri-state, et a toujours été réglé par un petit délai par rapport à l'horloge principale, ie, le circuit qui doit lire ("recevoir" serait mieux) les données va attendre un chouchouille avant de valider ce qui est présent sur le bus de données.
    et les circuits ne sont pas forcément cadencés sur une horloge mais travail en temps réelle ..

    Ce dont tu parles n'est qu'un cas particulier.
    Mais en général on s'arrange toujours pour enlever les états indéterminés ou qu'il arrive à un moment ou on se fiche de son état.

  8. #408
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 725
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 725
    Points : 15 125
    Points
    15 125
    Par défaut
    Citation Envoyé par hegros Voir le message
    (...) Pour info ton exemple avec la checkbox est erroné. En effet même si une checkbox n'est pas enabled tu peux connaître et modifier son état.
    Okay, désolé, je viens de tester (j'avais pas de machine avec un IDE quand j'ai posté), et franchement, ça, je l'aurais jamais cru ! L'a fallu que je teste, dis donc !
    Connaître son état je veux bien (et encore...), mais pouvoir le modifier, ça alors !
    Bon, c'est pas du vrai "disabled" au sens électronique, ça,

    Alors en fait, on cause de logique ternaire, là ; pas la même chose qu'une logique binaire + enabled ou pas,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  9. #409
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Okay, désolé, je viens de tester (j'avais pas de machine avec un IDE quand j'ai posté), et franchement, ça, je l'aurais jamais cru ! L'a fallu que je teste, dis donc !
    Connaître son état je veux bien (et encore...), mais pouvoir le modifier, ça alors !
    Bon, c'est pas du vrai "disabled" au sens électronique, ça,
    Disons que c'est désactivé au niveau de l'interface utilisateur, pas au niveau du programmeur.

    Cela te permet de modifier l'état de ta checkbox sans que tu risques un clique souris malencontreux de l'utilisateur qui viendrait changer l'état pile poil entre le moment ou tu modifies ta checkbox et celui ou tu la désactives.

    Alors en fait, on cause de logique ternaire, là ; pas la même chose qu'une logique binaire + enabled ou pas,
    Et potentiellement on peut dériver sur la logique floue après , mais bon si on part dans ce sens on s'éloigne franchement du débat original, cela n'est pas pour me déplaire
    bazar: http://www.improetcompagnie.com/publ...ctacles-6.html

    BÉPO la disposition de clavier francophone, ergonomique et libre: http://bepo.fr/wiki/Accueil

    Emacs Wiki: http://www.emacswiki.org/

    En attente de ce que produira: http://www.pushmid.com

  10. #410
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Points : 68
    Points
    68
    Par défaut
    un magnifique bout de code en perl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ( $nivale ne '10' && $nivale ne '11' && $nivale >= '96' && $nivale <= '91' ) { # gdg
    		previent_ace( $flastale, $tps_min, $codret, $textfin) ;
    }

  11. #411
    Expert éminent
    Avatar de Lyche
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2007
    Messages
    2 523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 523
    Points : 6 775
    Points
    6 775
    Billets dans le blog
    4
    Par défaut
    Et bien voilà, je porte ma contribution.. ceci provient d'un site en ASP 3.0 (oui c'est super vieux ) et je suis tombé, entre autre, sur ce code

    Code ASP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    		pays2 = LCase(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace( rsFiche2("pays"), "ñ", "n"), "á", "a"), ",", "-"), "í", "i"), "ó", "o"), "ò", "o"), "ù", "u"), "ü", "u"), "ú", "u"), "õ", "o"), "ô", "o"), "â", "a"), "ë", "e"), "ã", "a"), "à", "a"), "î", "i"),"ï", "i"), "ê", "e"), "é", "e"), "è", "e"), " ", "-"), "’", "-"), "'", "-"))
    		region2 = LCase(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace( rsFiche2("region"), "ñ", "n"), "á", "a"), ",", "-"), "í", "i"), "ó", "o"), "ò", "o"), "ù", "u"), "ü", "u"), "ú", "u"), "õ", "o"), "ô", "o"), "â", "a"), "ë", "e"), "ã", "a"), "à", "a"), "î", "i"),"ï", "i"), "ê", "e"), "é", "e"), "è", "e"), " ", "-"), "’", "-"), "'", "-"))
    		dept2 =LCase( Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace( rsFiche2("dept"), "ñ", "n"), "á", "a"), ",", "-"), "í", "i"), "ó", "o"), "ò", "o"), "ù", "u"), "ü", "u"), "ú", "u"), "õ", "o"), "ô", "o"), "â", "a"), "ë", "e"), "ã", "a"), "à", "a"), "î", "i"),"ï", "i"), "ê", "e"), "é", "e"), "è", "e"), " ", "-"), "’", "-"), "'", "-"), "/", "-"))
    		ville2 = LCase(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace( rsFiche2("ville"), "ñ", "n"), "á", "a"), ",", "-"), "í", "i"), "ó", "o"), "ò", "o"), "ù", "u"), "ü", "u"), "ú", "u"), "õ", "o"), "ô", "o"), "â", "a"), "ë", "e"), "ã", "a"), "à", "a"), "î", "i"),"ï", "i"), "ê", "e"), "é", "e"), "è", "e"), " ", "-"), "’", "-"), "'", "-"), "/", "-"))
    		nom2 = LCase(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace( rsFiche2("nom"), "ñ", "n"), "á", "a"), ",", "-"), "í", "i"), "ó", "o"), "ò", "o"), "ù", "u"), "ü", "u"), "ú", "u"), "õ", "o"), "ô", "o"), "â", "a"), "ë", "e"), "ã", "a"), "à", "a"), "î", "i"),"ï", "i"), "ê", "e"), "é", "e"), "è", "e"), "/", "-"), " ", "-"), "’", "-"), "'", "-"), """", ""), "&", ""), "--", "-"))
     
    		pays = LCase(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace( rsFiche("pays"), "ñ", "n"), "á", "a"), ",", "-"), "í", "i"), "ó", "o"), "ò", "o"), "ù", "u"), "ü", "u"), "ú", "u"), "õ", "o"), "ô", "o"), "â", "a"), "ë", "e"), "ã", "a"), "à", "a"), "î", "i"),"ï", "i"), "ê", "e"), "é", "e"), "è", "e"), " ", "-"), "’", "-"), "'", "-"))
    		region = LCase(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace( rsFiche("region"), "ñ", "n"), "á", "a"), ",", "-"), "í", "i"), "ó", "o"), "ò", "o"), "ù", "u"), "ü", "u"), "ú", "u"), "õ", "o"), "ô", "o"), "â", "a"), "ë", "e"), "ã", "a"), "à", "a"), "î", "i"),"ï", "i"), "ê", "e"), "é", "e"), "è", "e"), " ", "-"), "’", "-"), "'", "-"))
    		dept =LCase( Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace( rsFiche("dept"), "ñ", "n"), "á", "a"), ",", "-"), "í", "i"), "ó", "o"), "ò", "o"), "ù", "u"), "ü", "u"), "ú", "u"), "õ", "o"), "ô", "o"), "â", "a"), "ë", "e"), "ã", "a"), "à", "a"), "î", "i"),"ï", "i"), "ê", "e"), "é", "e"), "è", "e"), " ", "-"), "’", "-"), "'", "-"), "/", "-"))
    		ville = LCase(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace( rsFiche("ville"), "ñ", "n"), "á", "a"), ",", "-"), "í", "i"), "ó", "o"), "ò", "o"), "ù", "u"), "ü", "u"), "ú", "u"), "õ", "o"), "ô", "o"), "â", "a"), "ë", "e"), "ã", "a"), "à", "a"), "î", "i"),"ï", "i"), "ê", "e"), "é", "e"), "è", "e"), " ", "-"), "’", "-"), "'", "-"), "/", "-"))
    		nom = LCase(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace( rsFiche("nom"), "ñ", "n"), "á", "a"), ",", "-"), "í", "i"), "ó", "o"), "ò", "o"), "ù", "u"), "ü", "u"), "ú", "u"), "õ", "o"), "ô", "o"), "â", "a"), "ë", "e"), "ã", "a"), "à", "a"), "î", "i"),"ï", "i"), "ê", "e"), "é", "e"), "è", "e"), "/", "-"), " ", "-"), "’", "-"), "'", "-"), """", ""), "&", ""), "--", "-"))
    Rejoignez la communauté du chat et partagez vos connaissances ou vos questions avec nous

    Mon Tutoriel pour apprendre les Agregations
    Consultez mon Blog SQL destiné aux débutants

    Pensez à FAQ SQL Server Ainsi qu'aux Cours et Tuto SQL Server

  12. #412
    Membre habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 367
    Points : 191
    Points
    191
    Par défaut
    Un bon bout de code en ASP 3 qui nous a fait tirer les cheveux plus d'une fois

    Comme il n'y a pas de commentaires multi lignes (et qu'en plus le fichier est interprété au fur et à mesure), un collègue met

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    '...
    If 1 = 2 then
    'ancien code
    End If
    'nouveau code
    notez l'indentation, il ne l'augmente pas dans son If

    Sauf que quand on "débuggue", on cherche par exemple la requête qui fait ça, ou le morceau de code qui affiche tel textbox.

    Et là on fait un ctrl+s, on prend le premier résultat, on fait des modifs, on regarde le résultat, pas de changement... et évidemment pas de débugger, sinon ça serait trop facile.

    Jusqu'à ce qu'on se décide à mettre un
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Response.Write "---> trace <---"
    Response.End

    et qu'on passe au travers...

    Heureusement on n'a plus beaucoup d'applis en ASP 3

    Mais bon on lui en veut pas, ça doit être son code le moins propre, tout le reste est nickel

  13. #413
    Membre averti
    Homme Profil pro
    Buisint
    Inscrit en
    Septembre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Buisint

    Informations forums :
    Inscription : Septembre 2008
    Messages : 220
    Points : 438
    Points
    438
    Par défaut Un petit pour la route...
    ... sur lequel je viens de tomber et dû valoir un petit moment de solitude à son auteur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Si(Champ  =  "01" ;  "A" ;  Si(Champ  =  "02" ;  "B" ;  Si(Champ  
    =  "03" ;  "C" ;  Si(Champ  =  "04" ;  "D" ;  Si(Champ  =  "05" ;  
    "E" ;  Si(Champ  =  "06" ;  "F" ;  Si(Champ  =  "07" ;  "G" ;  
    Si(Champ  =  "08" ;  "H" ;  Si(Champ  =  "09" ;  "I" ;  Si(Champ  
    =  "10" ;  "J" ;  Si(Champ  =  "11" ;  "K" ;  Si(Champ  =  "12" ;  
    "L" ;  Si(Champ  =  "13" ;  "M" ;  Si(Champ  =  "14" ;  "N" ;  
    Si(Champ  =  "15" ;  "O" ;  Si(Champ  =  "16" ;  "P" ;  Si(Champ  
    =  "17" ;  "Q" ;  Si(Champ  =  "18" ;  "R" ;  Si(Champ  =  "19" ;  
    "S" ;  Si(Champ  =  "20" ;  "T" ;  Si(Champ  =  "21" ;  "U" ;  
    Si(Champ  =  "22" ;  "V" ;  Si(Champ  =  "23" ;  "W" ;  Si(Champ  
    =  "24" ;  "X" ;  Si(Champ  =  "25" ;  "Y" ;  Si(Champ  =  "26" ;  
    "Z" ;  Si(Champ  =  "27" ;  "1" ;  Si(Champ  =  "28" ;  "2" ;  
    Si(Champ  =  "29" ;  "3" ;  Si(Champ  =  "30" ;  "4" ;  Si(Champ  
    =  "31" ;  "5" ;  Si(Champ  =  "32" ;  "6" ;  Si(Champ  =  "33" ;  
    "7" ;  Si(Champ  =  "34" ;  "8" ;  Si(Champ  =  "35" ;  "9" ;  
    Si(Champ  =  "36" ;  "0" ;  "Ù" ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 
    ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
    L'outil ne permet pas d'indenter : il faut indenter dans un éditeur externe et copier-coller, puis retirer les tabulations et les retours-charriot que l'outil ne comprend pas !

    Si la largeur d'affichage tombe juste, cette formule est correctement alignée et se vérifie relativement aisément... mais ce n'est pas le cas dans la boîte de saisie dudit outil, comme reproduit à peu près ci-dessus ; et encore, là, on voit toute la formule d'un coup, alors que ce n'est pas le cas dans l'outil !

    Au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Si(VersNum(Champ)  <=  36 ;
      Extrait("ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; VersNum(Champ) ;  1 ) ;  
      "Ù" 
    )

  14. #414
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Points : 12
    Points
    12
    Par défaut
    Pour mon premier post, je vais vous donner cette perle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    My.Company.Some.FullName.Proxy.ADataContract refresh = SomeUsefulHelperObj.GetInstance().BackupFunctionNameRefresh != null && SomeUsefulHelperObj.GetInstance().BackupFunctionNameRefresh.WorkingDate != DateTime.MinValue ? SomeUsefulHelperObj.GetInstance().BackupMonitoringRefresh : SomeUsefulHelperObj.GetInstance().MonitoringRefresh;
    La taille originale du code avant que je le rende anonyme est de 377 caractères.
    Le tout en une ligne... Ca m'a pris 5 minutes pour me rendre compte que c'était un opérateur ternaire...Et tout le code est comme ça...

  15. #415
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 22
    Points : 16
    Points
    16
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     If File.Exists(path) = False Then
    
                ' Create a file to write to.
                Dim createText() As String = {"Hello", "And", "Welcome"}
                File.WriteAllLines(path, createText)
            End If
    Microsoft ne connait pas NOT
    http://msdn.microsoft.com/fr-fr/libr...(v=VS.80).aspx

  16. #416
    Expert confirmé Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Points : 5 277
    Points
    5 277
    Par défaut
    Écrire "if (mavariable == false) {...}" n'est pas une erreur de codage.

    Certaines normes de qualité de code imposent cette écriture même si elle est plus verbeuse que "if (!mavariable)".
    "tatatatatatatatataaa !! tata taaa !! tata taaa !! tatatata tataaa !! tata taaa !! tata taaa !!"

  17. #417
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    Citation Envoyé par Barsy Voir le message
    Écrire "if (mavariable == false) {...}" n'est pas une erreur de codage.

    Certaines normes de qualité de code imposent cette écriture même si elle est plus verbeuse que "if (!mavariable)".
    L'éternel débat entre verbosité et lisibilité.....je suis du coté des verbeux(noooon, pas la têêêêête!!!!!).

    Sinon, un exemple de code infernal : une horreur à l'ancienne, sur l'avant dernier post de la première page.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    C100-BD-VALIDATE.                                        
        MOVE 0 TO  ERR-HLD1.                                
                                                            
    **** STA-BA IS OVERRIDE FOR SAA-L, -J, -2 ************  
        IF P-PRES-IND(STA-BA) = 'Y'                          
            IF P-PRES-IND(SAA-L) NOT = 'Y'                  
                IF P-PRES-IND(SAA-J) NOT = 'Y'              
                    IF P-PRES-IND(SAA-2) NOT = 'Y'          
                        MOVE 2469 TO ERR-HLD1                
                        MOVE P-SCAN-SUB(STA-BA) TO HLD-SUB1 
                        MOVE 'STA' TO SRCH-KEY              
                        PERFORM D000-ERR-LOAD THRU D000-EXIT 
                                                            
    ******************************************************** 
    * THIS CODE COMMENTED OUT AS PER GARY GOODNUFF 3/8/89.  
    ******************************************************** 
    *   IF RMF-GAA-A-FLAG = 'Y'                              
    *       IF P-PRES-IND (WAA-M) NOT = 'Y'                  
    *           MOVE 2258 TO ERR-HLD1                        
    *           MOVE P-SCAN-SUB (GAA-A) TO HLD-SUB1          
    *           MOVE 'GAA' TO SRCH-KEY                      
    *           PERFORM D000-ERR-LOAD THRU D000-EXIT.        
                                                            
        MOVE 1 TO RMF-VCA-SECTION-CNTL-INDX.                
        MOVE '0' TO NQA-SW.                                  
    C100-BD-NQA-CHK.                                        
        IF RMF-RS-SECTION-ALPHA (RMF-VCA-SECTION-CNTL-INDX) 
            MOVE '1' TO NQA-SW                              
            MOVE 99 TO RMF-VCA-SECTION-CNTL-INDX.            
        ADD 1 TO RMF-VCA-SECTION-CNTL-INDX.
    Pour ceux qui ne connaissent pas cobol, un point ferme tous les IF ouverts, et les flemmards remplacent plusieurs END-IF par un seul point, donnant ce genre d'horreur. Et les '*' mettent le code en commentaire, donc le point qui servait de END-IF aux 4 premiers IF. Et donc, le code tombe dans la dernière partie ou il ne devrait pas(ou le devrait-il? Impossible à savoir).
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  18. #418
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 519
    Points : 1 104
    Points
    1 104
    Par défaut
    Citation Envoyé par Barsy Voir le message
    Écrire "if (mavariable == false) {...}" n'est pas une erreur de codage.

    Certaines normes de qualité de code imposent cette écriture même si elle est plus verbeuse que "if (!mavariable)".
    Qu’en est-il de “if(not mavariable) { ... }” (écriture possible en C++) ?

  19. #419
    Expert confirmé Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Points : 5 277
    Points
    5 277
    Par défaut
    Citation Envoyé par spidermario Voir le message
    Qu’en est-il de “if(not mavariable) { ... }” (écriture possible en C++) ?
    Comment ça ?

    Peut importe ce qu'il est possible ou pas de faire, tout est permis tant que l'on écrit un code commenté et lisible.

    Ce que je voulais préciser ci-dessus, c'est que dans certaines normes de codages, il est imposé d'écrire en clair "== true" ou "== false". Donc l'erreur signalé ici n'en est pas vraiment une.
    "tatatatatatatatataaa !! tata taaa !! tata taaa !! tatatata tataaa !! tata taaa !! tata taaa !!"

  20. #420
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    dans la catégorie truc pas tres propre, je vois des méthodes a plus de 10 paramètres, je trouve déjà que 5 c'est beaucoup en général, des state machines avec plus de 40 états, ....
    bazar: http://www.improetcompagnie.com/publ...ctacles-6.html

    BÉPO la disposition de clavier francophone, ergonomique et libre: http://bepo.fr/wiki/Accueil

    Emacs Wiki: http://www.emacswiki.org/

    En attente de ce que produira: http://www.pushmid.com

Discussions similaires

  1. Quel est le pire bout de code que vous ayez jamais écrit ?
    Par Gordon Fowler dans le forum Débats sur le développement - Le Best Of
    Réponses: 61
    Dernier message: 31/10/2011, 12h18
  2. Quelle est la plus grosse erreur de programmation que vous ayez jamais commise ?
    Par Katleen Erna dans le forum Débats sur le développement - Le Best Of
    Réponses: 138
    Dernier message: 03/08/2011, 23h38
  3. Petit bout de code que je ne saisis pas trop
    Par MeTaLCaM dans le forum C#
    Réponses: 5
    Dernier message: 03/12/2009, 00h07
  4. [Vos débuts] Quel est le premier langage que vous ayez appris ?
    Par Commodore dans le forum La taverne du Club : Humour et divers
    Réponses: 171
    Dernier message: 02/02/2007, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo