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é.
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.
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
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.
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.
oui mais dans le cas ou personne "parle" .. a un état indéterminée.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).
et les circuits ne sont pas forcément cadencés sur une horloge mais travail en temps réelle ..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.
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.
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,
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.
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éplaireAlors en fait, on cause de logique ternaire, là ; pas la même chose qu'une logique binaire + enabled ou pas,
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) ; }
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"), "/", "-"), " ", "-"), "", "-"), "'", "-"), """", ""), "&", ""), "--", "-"))
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
notez l'indentation, il ne l'augmente pas dans son If
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
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
2Response.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
... sur lequel je viens de tomber et dû valoir un petit moment de solitude à son auteur :
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 !
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" ; "Ù" ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
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 ) ; "Ù" )
Pour mon premier post, je vais vous donner cette perle:
La taille originale du code avant que je le rende anonyme est de 377 caractères.
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;
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...
Microsoft ne connait pas NOT
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
http://msdn.microsoft.com/fr-fr/libr...(v=VS.80).aspx
É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.
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).
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.
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.
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, ....
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager