[alg] slechtste prog voorbeelden. Overzicht Volgende deel Laatste deel

Dit topic is onderdeel van een reeks. Ga naar het meest recente topic in deze reeks.

Pagina: 1 ... 5 ... 11 Laatste
Acties:
  • 18.982 views sinds 30-01-2008

Acties:
  • 0 Henk 'm!

  • Mayco
  • Registratie: Augustus 2002
  • Laatst online: 13-08 08:00
hé! niet lachen! mijn eerste vb prutsels hadden ook invisible labels om men data te saven :)
mjah, achteraf denk je dan, toch logisch om vars te gebruiken, maar als je nog nooit van zoiets had gehoort, wat moet je dan? :)

edit: net even gekeken naar mijn oudste progsel dat ik nog heb (al mijn vb dingen heb ik niet meer, jammer, zouden zeker leuke dingen tussen gezeten hebben)

code:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
procedure cplayer;
label
  misschien;
begin
  if Thereisawinner then
  begin
    Thereisawinner := False;
    goto misschien;
  end;
  if numplayers = 2 then
  begin
    if playercolor = kleur[1] then
    begin
      playercolor := kleur[2];
      mainform.status.panels[0].bevel := pbnone;
      mainform.status.panels[1].bevel := pbnone;
      mainform.status.panels[2].bevel := pbRaised;
      mainform.status.panels[3].bevel := pbRaised;
      mainform.status.panels[4].bevel := pbnone;
      mainform.status.panels[5].bevel := pbnone;
      mainform.status.panels[6].bevel := pbnone;
      mainform.status.panels[7].bevel := pbnone;
    end
    else
    begin
      playercolor := kleur[1];
      mainform.status.panels[0].bevel := pbraised;
      mainform.status.panels[1].bevel := pbraised;
      mainform.status.panels[2].bevel := pbnone;
      mainform.status.panels[3].bevel := pbnone;
      mainform.status.panels[4].bevel := pbnone;
      mainform.status.panels[5].bevel := pbnone;
      mainform.status.panels[6].bevel := pbnone;
      mainform.status.panels[7].bevel := pbnone;
    end;
  end;
  if numplayers = 3 then
  begin
    if playercolor = kleur[3] then
    begin
      playercolor := kleur[1];
      mainform.status.panels[0].bevel := pbraised;
      mainform.status.panels[1].bevel := pbraised;
      mainform.status.panels[2].bevel := pbnone;
      mainform.status.panels[3].bevel := pbnone;
      mainform.status.panels[4].bevel := pbnone;
      mainform.status.panels[5].bevel := pbnone;
      mainform.status.panels[6].bevel := pbnone;
      mainform.status.panels[7].bevel := pbnone;
      goto misschien;
    end;
    if playercolor = kleur[2] then
    begin
      playercolor := kleur[3];
      mainform.status.panels[0].bevel := pbnone;
      mainform.status.panels[1].bevel := pbnone;
      mainform.status.panels[2].bevel := pbnone;
      mainform.status.panels[3].bevel := pbnone;
      mainform.status.panels[4].bevel := pbraised;
      mainform.status.panels[5].bevel := pbraised;
      mainform.status.panels[6].bevel := pbnone;
      mainform.status.panels[7].bevel := pbnone;
      goto misschien;
    end;
    if playercolor = kleur[1] then
    begin
      playercolor := kleur[2];
      mainform.status.panels[0].bevel := pbnone;
      mainform.status.panels[1].bevel := pbnone;
      mainform.status.panels[2].bevel := pbRaised;
      mainform.status.panels[3].bevel := pbRaised;
      mainform.status.panels[4].bevel := pbnone;
      mainform.status.panels[5].bevel := pbnone;
      mainform.status.panels[6].bevel := pbnone;
      mainform.status.panels[7].bevel := pbnone;
      goto misschien;
    end;
  end;
  if numplayers = 4 then
  begin
    if playercolor = kleur[3] then
    begin
      playercolor := kleur[4];
      mainform.status.panels[0].bevel := pbnone;
      mainform.status.panels[1].bevel := pbnone;
      mainform.status.panels[2].bevel := pbnone;
      mainform.status.panels[3].bevel := pbnone;
      mainform.status.panels[4].bevel := pbnone;
      mainform.status.panels[5].bevel := pbnone;
      mainform.status.panels[6].bevel := pbraised;
      mainform.status.panels[7].bevel := pbraised;
      goto misschien;
    end;
    if playercolor = kleur[4] then
    begin
      playercolor := kleur[1];
      mainform.status.panels[0].bevel := pbraised;
      mainform.status.panels[1].bevel := pbraised;
      mainform.status.panels[2].bevel := pbnone;
      mainform.status.panels[3].bevel := pbnone;
      mainform.status.panels[4].bevel := pbnone;
      mainform.status.panels[5].bevel := pbnone;
      mainform.status.panels[6].bevel := pbnone;
      mainform.status.panels[7].bevel := pbnone;
      goto misschien;
    end;
    if playercolor = kleur[2] then
    begin
      playercolor := kleur[3];
      mainform.status.panels[0].bevel := pbnone;
      mainform.status.panels[1].bevel := pbnone;
      mainform.status.panels[2].bevel := pbnone;
      mainform.status.panels[3].bevel := pbnone;
      mainform.status.panels[4].bevel := pbraised;
      mainform.status.panels[5].bevel := pbraised;
      mainform.status.panels[6].bevel := pbnone;
      mainform.status.panels[7].bevel := pbnone;
      goto misschien;
    end;
    if playercolor = kleur[1] then
    begin
      playercolor := kleur[2];
      mainform.status.panels[0].bevel := pbnone;
      mainform.status.panels[1].bevel := pbnone;
      mainform.status.panels[2].bevel := pbRaised;
      mainform.status.panels[3].bevel := pbRaised;
      mainform.status.panels[4].bevel := pbnone;
      mainform.status.panels[5].bevel := pbnone;
      mainform.status.panels[6].bevel := pbnone;
      mainform.status.panels[7].bevel := pbnone;
      goto misschien;
    end;
    misschien:
    computerturn;
  end;
end;


vreselijk, en als ik die labels enzo zie krijg ik al rillingen :)

(is btw een 4 op een rij in delphi)

[ Voor 93% gewijzigd door Mayco op 23-04-2004 18:52 ]


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-08 20:27
Deze van mij (schaam):
PHP:
1
2
3
4
foreach($_FRIENDLY as $f)
{
  $rootfolder .= '../';
}


Moest natuurlijk zijn:
PHP:
1
$rootfolder .= str_repeat('../',count($_FRIENDLY));

Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 14-09 18:57

Robtimus

me Robtimus no like you

Mayco schreef op 23 april 2004 @ 18:48:
hé! niet lachen! mijn eerste vb prutsels hadden ook invisible labels om men data te saven :)
mjah, achteraf denk je dan, toch logisch om vars te gebruiken, maar als je nog nooit van zoiets had gehoort, wat moet je dan? :)

edit: net even gekeken naar mijn oudste progsel dat ik nog heb (al mijn vb dingen heb ik niet meer, jammer, zouden zeker leuke dingen tussen gezeten hebben)

<code>

vreselijk, en als ik die labels enzo zie krijg ik al rillingen :)

(is btw een 4 op een rij in delphi)
Vergeet het gebruik van goto :X

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

  • Volk
  • Registratie: Januari 2004
  • Laatst online: 14-09 12:44
Mayco schreef op 23 april 2004 @ 18:48:
hé! niet lachen! mijn eerste vb prutsels hadden ook invisible labels om men data te saven :)
mjah, achteraf denk je dan, toch logisch om vars te gebruiken, maar als je nog nooit van zoiets had gehoort, wat moet je dan? :)

edit: net even gekeken naar mijn oudste progsel dat ik nog heb (al mijn vb dingen heb ik niet meer, jammer, zouden zeker leuke dingen tussen gezeten hebben)

code:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
procedure cplayer;
label
  misschien;
begin
  if Thereisawinner then
  begin
    Thereisawinner := False;
    goto misschien;
  end;
  if numplayers = 2 then
  begin
    if playercolor = kleur[1] then
    begin
      playercolor := kleur[2];
      mainform.status.panels[0].bevel := pbnone;
      mainform.status.panels[1].bevel := pbnone;
      mainform.status.panels[2].bevel := pbRaised;
      mainform.status.panels[3].bevel := pbRaised;
      mainform.status.panels[4].bevel := pbnone;
      mainform.status.panels[5].bevel := pbnone;
      mainform.status.panels[6].bevel := pbnone;
      mainform.status.panels[7].bevel := pbnone;
    end
    else
    begin
      playercolor := kleur[1];
      mainform.status.panels[0].bevel := pbraised;
      mainform.status.panels[1].bevel := pbraised;
      mainform.status.panels[2].bevel := pbnone;
      mainform.status.panels[3].bevel := pbnone;
      mainform.status.panels[4].bevel := pbnone;
      mainform.status.panels[5].bevel := pbnone;
      mainform.status.panels[6].bevel := pbnone;
      mainform.status.panels[7].bevel := pbnone;
    end;
  end;
  if numplayers = 3 then
  begin
    if playercolor = kleur[3] then
    begin
      playercolor := kleur[1];
      mainform.status.panels[0].bevel := pbraised;
      mainform.status.panels[1].bevel := pbraised;
      mainform.status.panels[2].bevel := pbnone;
      mainform.status.panels[3].bevel := pbnone;
      mainform.status.panels[4].bevel := pbnone;
      mainform.status.panels[5].bevel := pbnone;
      mainform.status.panels[6].bevel := pbnone;
      mainform.status.panels[7].bevel := pbnone;
      goto misschien;
    end;
    if playercolor = kleur[2] then
    begin
      playercolor := kleur[3];
      mainform.status.panels[0].bevel := pbnone;
      mainform.status.panels[1].bevel := pbnone;
      mainform.status.panels[2].bevel := pbnone;
      mainform.status.panels[3].bevel := pbnone;
      mainform.status.panels[4].bevel := pbraised;
      mainform.status.panels[5].bevel := pbraised;
      mainform.status.panels[6].bevel := pbnone;
      mainform.status.panels[7].bevel := pbnone;
      goto misschien;
    end;
    if playercolor = kleur[1] then
    begin
      playercolor := kleur[2];
      mainform.status.panels[0].bevel := pbnone;
      mainform.status.panels[1].bevel := pbnone;
      mainform.status.panels[2].bevel := pbRaised;
      mainform.status.panels[3].bevel := pbRaised;
      mainform.status.panels[4].bevel := pbnone;
      mainform.status.panels[5].bevel := pbnone;
      mainform.status.panels[6].bevel := pbnone;
      mainform.status.panels[7].bevel := pbnone;
      goto misschien;
    end;
  end;
  if numplayers = 4 then
  begin
    if playercolor = kleur[3] then
    begin
      playercolor := kleur[4];
      mainform.status.panels[0].bevel := pbnone;
      mainform.status.panels[1].bevel := pbnone;
      mainform.status.panels[2].bevel := pbnone;
      mainform.status.panels[3].bevel := pbnone;
      mainform.status.panels[4].bevel := pbnone;
      mainform.status.panels[5].bevel := pbnone;
      mainform.status.panels[6].bevel := pbraised;
      mainform.status.panels[7].bevel := pbraised;
      goto misschien;
    end;
    if playercolor = kleur[4] then
    begin
      playercolor := kleur[1];
      mainform.status.panels[0].bevel := pbraised;
      mainform.status.panels[1].bevel := pbraised;
      mainform.status.panels[2].bevel := pbnone;
      mainform.status.panels[3].bevel := pbnone;
      mainform.status.panels[4].bevel := pbnone;
      mainform.status.panels[5].bevel := pbnone;
      mainform.status.panels[6].bevel := pbnone;
      mainform.status.panels[7].bevel := pbnone;
      goto misschien;
    end;
    if playercolor = kleur[2] then
    begin
      playercolor := kleur[3];
      mainform.status.panels[0].bevel := pbnone;
      mainform.status.panels[1].bevel := pbnone;
      mainform.status.panels[2].bevel := pbnone;
      mainform.status.panels[3].bevel := pbnone;
      mainform.status.panels[4].bevel := pbraised;
      mainform.status.panels[5].bevel := pbraised;
      mainform.status.panels[6].bevel := pbnone;
      mainform.status.panels[7].bevel := pbnone;
      goto misschien;
    end;
    if playercolor = kleur[1] then
    begin
      playercolor := kleur[2];
      mainform.status.panels[0].bevel := pbnone;
      mainform.status.panels[1].bevel := pbnone;
      mainform.status.panels[2].bevel := pbRaised;
      mainform.status.panels[3].bevel := pbRaised;
      mainform.status.panels[4].bevel := pbnone;
      mainform.status.panels[5].bevel := pbnone;
      mainform.status.panels[6].bevel := pbnone;
      mainform.status.panels[7].bevel := pbnone;
      goto misschien;
    end;
    misschien:
    computerturn;
  end;
end;


vreselijk, en als ik die labels enzo zie krijg ik al rillingen :)

(is btw een 4 op een rij in delphi)
Ik ben voor school tegenwoordig ook wat aan het programaren en het valt me op dat delphi wel verdomd veel klijkt op Pascal.

Is delphi mss gebasseerd op Pascal?
Waarschijnlijk een domme vraag maar programmeren is helemaal nieuw voor me:)

Acties:
  • 0 Henk 'm!

  • Mayco
  • Registratie: Augustus 2002
  • Laatst online: 13-08 08:00
idd, delphi is pascal, maar dan object georienteerd.

Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-08 20:27
--dubbel--

[ Voor 98% gewijzigd door Skaah op 23-04-2004 19:18 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-09 08:45

Bosmonster

*zucht*

Ok.. niet echt programmeren.. maar kwam dit stukje 'html' tegen van iemand...

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
  <body>
    <script language="jscript">
      var top = document.body.clientHeight / 2;
      var left = document.body.clientWidth / 2;
      document.writeln('<img src="img/bla.jpg" style="position:absolute; top:' + (top - 160) + 'px; left:' + (left - 300) + 'px">');
      document.writeln('<img src="img/bla.jpg" style="position:absolute; top:' + (top - 130) + 'px; left:' + (left - 170) + 'px">');
      document.writeln('<img src="img/bla.jpg" style="position:absolute; top:' + (top + 35) + 'px; left:' + (left - 170) + 'px">');
      document.writeln('<a href="bla.html" style="text-decoration:none"><span style="position:absolute; top:' + (top - 125) + 'px; left:' + (left - 120) + 'px; color:#84C225; font-size:28pt; font-weight:bold; font-style:italic; cursor:hand">blabla</span></a>');
      document.writeln('<span style="position:absolute; top:' + (top + 40) + 'px; left:' + (left - 120) + 'px; color:#5E88EB; font-size:28pt; font-weight:bold; font-style:italic">blabla<br><font size="2">(Under construction)</span>');
      document.writeln('<span style="position:absolute; top:' + (top - 80) + 'px; left:' + (left - 45) + 'px; font-size:10pt; width:300px">blabla</span>');
      document.writeln('<span style="position:absolute; top:' + (top + 105) + 'px; left:' + (left - 45) + 'px; font-size:10pt; width:300px">blabla</span>');
    </script>
  </body>


Tja.. zo kun je ook iets centreren :*

[ Voor 11% gewijzigd door Bosmonster op 26-04-2004 20:55 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 08:20

gorgi_19

Kruimeltjes zijn weer op :9

Je kan zeggen wat je wilt, maar hij heeft wel z'n best gedaan om het zelf uit te zoeken.. :P

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:19
Ff een subtiel schopje, maareuh....

Stel je hebt een form met daarop een combobox; die combobox heeft een aantal items.
De keuze die de gebruiker maakt in die combobox, moet opgeslagen worden in een DB.
En ja, wat doe je dan: je slaat zeker niet de key van dat item, of het item op nee, je slaat lekker de ItemIndex op van het geselecteerde item. |:(

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Ik kwam laatst van mezelf van 5 jaar geleden ofzo ook iets moois tegen:
PHP:
1
2
3
// Don't know any other way to create an empty array ...
$array = array( 'dummy' );
array_pop ( $array );


:D

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

Verwijderd

ook iets leuks wat ik laatst tegenkwam:
code:
1
2
3
select *
from table
where value = nvl( column, null );


Jaaaa, da's een handig gebruik van NVL :P

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

drm schreef op donderdag 12 mei 2005 @ 09:34:
Ik kwam laatst van mezelf van 5 jaar geleden ofzo ook iets moois tegen:
PHP:
1
2
3
// Don't know any other way to create an empty array ...
$array = array( 'dummy' );
array_pop ( $array );


:D
Hahaha, die is fantastisch _/-\o_

En mijn eigen blunders, ik weet er iig nog eentje.
Het eerste beetje PHP dat ik heb geschreven, ik vroeg me maar af waar alle variabelen in $_POST heen waren :X
PHP:
1
$_POST = $_GET;

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • ReallyStupidGuy
  • Registratie: Januari 2002
  • Laatst online: 14-09 11:18
whoami schreef op donderdag 12 mei 2005 @ 09:33:
Ff een subtiel schopje, maareuh....

Stel je hebt een form met daarop een combobox; die combobox heeft een aantal items.
De keuze die de gebruiker maakt in die combobox, moet opgeslagen worden in een DB.
En ja, wat doe je dan: je slaat zeker niet de key van dat item, of het item op nee, je slaat lekker de ItemIndex op van het geselecteerde item. |:(
Is in ieder geval wel veilig, dan heeft niemand meer wat aan de DB zonder de applicatie!

Duizend wijzen kunnen meer vragen stellen dan één idioot kan beantwoorden.


Acties:
  • 0 Henk 'm!

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Waar ik me tegenwoordig vaak aan stoor is dat mensen ontwerpen opzetten vanuit classes en in die classes al bepaalde functionaliteit zetten. Naarmate je meer richting core zaken gaat, zaken die veel dependants hebben, geeft dit vaak enorme problemen als je het wilt uitbreiden.

Mensen die ontwerpen opzetten van classes kunnen duidelijk niet ontwerpen en hebben 0.0 visie en tenzij ze in een of andere niche zitten (zoals Lucene) neem ik zo`n product ook snel niet meer serieus.

[ Voor 13% gewijzigd door Alarmnummer op 12-05-2005 10:30 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Tijdens het lesgeven krijg je de vreemdste constructies te zien. :P

Ik begeleid hier practicumlessen Java, waarbij de studenten de gekste dingen verzinnen, bijvoorbeeld een object auto, die een getWiel-functie heeft:
Java:
1
getWiel() = "blaat";

Daarmee denken ze dan een waarde aan het wiel toe te kennen. Dat ze zelf die functie hebben geschreven en geen enkele code hebben gemaakt die überhaupt dingen kan setten, dat maakt niet uit. :+

Hardnekkig probleem trouwens, ze blijven het proberen, hoe vaak je ook zegt dat het niet zo werkt. :D

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
-NMe- schreef op donderdag 12 mei 2005 @ 10:38:
Tijdens het lesgeven krijg je de vreemdste constructies te zien. :P

Ik begeleid hier practicumlessen Java, waarbij de studenten de gekste dingen verzinnen, bijvoorbeeld een object auto, die een getWiel-functie heeft:
Java:
1
getWiel() = "blaat";

Daarmee denken ze dan een waarde aan het wiel toe te kennen. Dat ze zelf die functie hebben geschreven en geen enkele code hebben gemaakt die überhaupt dingen kan setten, dat maakt niet uit. :+

Hardnekkig probleem trouwens, ze blijven het proberen, hoe vaak je ook zegt dat het niet zo werkt. :D
Tja, dan moeten ze maar C++ gebruiken he. ;->

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

ReallyStupidGuy schreef op donderdag 12 mei 2005 @ 10:22:
[...]


Is in ieder geval wel veilig, dan heeft niemand meer wat aan de DB zonder de applicatie!
tot er items bij komen in die combobox, of de sortering aangepast wordt, dan heb je weer niks aan je DB :P
-NMe- schreef op donderdag 12 mei 2005 @ 10:38:
Tijdens het lesgeven krijg je de vreemdste constructies te zien. :P

..
Hardnekkig probleem trouwens, ze blijven het proberen, hoe vaak je ook zegt dat het niet zo werkt. :D
so true, ik merk het ook bij het vak HTML wat ik "geef", je kan het honderden keren uitleggen en voorbeelden geven, maar nog gaan ze bijvoorbeeld <strong> tags in een <title> zetten 8)7

Acties:
  • 0 Henk 'm!

  • Yoeri
  • Registratie: Maart 2003
  • Niet online

Yoeri

O+ Joyce O+

(overleden)
Op stage moesten wij een documentenbeheersysteem dat door een extern bedrijf geleverd was aanpassen op maat.

Daar stonden constructies in als
code:
1
2
3
if i != 1
  doe heel wat dingen
end if

We hebben de code volledig uitgespit. i kon ONMOGELIJK verschillend van 1 zijn (twee lijnen hoger werd ie nog op 1 gezet). We haalden de if weg en toch werkte het niet meer.

en honderden, zoniet duizenden, keren de befaamde
code:
1
2
'als i gelijk is aan 1 gaat hier iets onverklaarbaar fout
on error resume next

We hebben onze stagebegeleider toen letterlijk gesmééééékt om het programma from scratch te mogen herschrijven, maar kregen geen toestemming. Op de eindwerkpresentatie was er gelukkig iemand aanwezig van het bedrijf dat de software afgeleverd had. Die man wist niet hoe diep hij in de grond moest kruipen van schaamte, toen we ons eindwerk niet begonnen met onze functionele aanpassingen, maar met een waslijst aan bugfixes en performance issues

[ Voor 25% gewijzigd door Yoeri op 12-05-2005 10:46 ]

Kijkje in de redactiekeuken van Tweakers.net
22 dec: Onze reputatie hooghouden
20 dec: Acht fouten


Acties:
  • 0 Henk 'm!

Verwijderd

Alarmnummer schreef op zaterdag 29 maart 2003 @ 10:55:
code:
1
2
3
4
if blaat then begin
end else begin
     doe iets.
end;
Precies deze constructie heb ik ook gezien in een groot Java project. In mijn geval was het gemaakt door iemand die niet van leren houdt en alleen on-the-job dingen wil uitvinden. Op het moment dat ie het intikte wist ie inderdaad niet dat je een negatie van een conditie kon nemen.

Andere wazige constructies die me nu even te binnen schieten zijn het gebruik van een map waarbij na elke get weer een set volgde. Die personen (waren er meerdere!) dachten allemaal dat zodra je een get deed je het object ook echt verwijderde. Het begrip pointer of reference was blijkbaar nog niet helemaal doorgedrongen. Dit waren echter wel mensen die code aan een systeem toevoegde wat echt in produltie was.

Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 13-09 20:47

LauPro

Prof Mierenneuke®

Alarmnummer schreef op donderdag 12 mei 2005 @ 10:29:
Waar ik me tegenwoordig vaak aan stoor is dat mensen ontwerpen opzetten vanuit classes en in die classes al bepaalde functionaliteit zetten. Naarmate je meer richting core zaken gaat, zaken die veel dependants hebben, geeft dit vaak enorme problemen als je het wilt uitbreiden.

Mensen die ontwerpen opzetten van classes kunnen duidelijk niet ontwerpen en hebben 0.0 visie en tenzij ze in een of andere niche zitten (zoals Lucene) neem ik zo`n product ook snel niet meer serieus.
Kan je dit iets meer toelichten? Of bedoel je dat men zaken als het comitten naar de db, of iets schrijven naar de outputbuffer in classen dumpt oid?

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Yoeri schreef op donderdag 12 mei 2005 @ 10:45:
We hebben de code volledig uitgespit. i kon ONMOGELIJK verschillend van 1 zijn (twee lijnen hoger werd ie nog op 1 gezet). We haalden de if weg en toch werkte het niet meer.
Waarom niet dan?

Acties:
  • 0 Henk 'm!

  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05 22:30

FendtVario

The leader drives Vario!

Deze zal misschien wel ergens voorkomen, maar deze kwam ik net tegen.
Delphi:
1
2
3
4
if tmpGewicht <> 0 then
  tmpGewogen := True
else
  tmpGewogen := False;

www.fendt.com | Nikon D7100 | PS5


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

FendtVario schreef op donderdag 12 mei 2005 @ 13:50:
Deze zal misschien wel ergens voorkomen, maar deze kwam ik net tegen.
Delphi:
1
2
3
4
if tmpGewicht <> 0 then
  tmpGewogen := True
else
  tmpGewogen := False;
zo kwam ik laatst deze tegen:

PHP:
1
2
3
4
5
6
7
8
9
function bla(){
  // hier wordt iets uitgevoerd...

  if ($result){
    return false;
  }else{
    return true;
  }
}


:X

beter/handiger is natuurlijk:
PHP:
1
2
3
4
5
function bla(){
  // hier wordt iets uitgevoerd...
  
 return !$result;
}

Acties:
  • 0 Henk 'm!

  • semicon
  • Registratie: Augustus 2003
  • Laatst online: 20-08 14:04
ik heb ooit samen met een vriend van mij een website in asp probere te "debuggen", waarbij we dachten van "Ooo... izi" de foutmelding was inmiddels een insert into query waar het mis ging, kan nooit moeilijk zijn...wij zoeken en zoeken in zoiets:
code:
1
INSERT INTO tabel (blaat, blaat2 .... blaat34) VALUES ('" & var_blaat & "','" & var_blaat2 & "', .... '" & var_blaat34 & "') WHERE iets = 'id'


Helemaal nooit die WHERE achter een INTO gezien, (op een of andere manier lees je eroverheen ofzo :P) maar we konden het maar niet vinden, heeft toch zeker 30 min gekost voordat het belletje ging ringkelen 8)7 |:( :+

Acties:
  • 0 Henk 'm!

Verwijderd

FendtVario schreef op donderdag 12 mei 2005 @ 13:50:
Deze zal misschien wel ergens voorkomen, maar deze kwam ik net tegen.
Delphi:
1
2
3
4
if tmpGewicht <> 0 then
  tmpGewogen := True
else
  tmpGewogen := False;
Tis niet echt fout toch? Misschien wil diegene verderop in de code vaak de uitkomst van "tmpGewicht <> 0" gebruiken, en dan is het overzichtelijker om gewoon een boolean aan te spreken?

Of bedoel je dat je ook gewoon zo kunt doen:
Delphi:
1
tmpGewogen := tmpGewicht > 0;

Acties:
  • 0 Henk 'm!

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
FendtVario schreef op donderdag 12 mei 2005 @ 13:50:
Deze zal misschien wel ergens voorkomen, maar deze kwam ik net tegen.
Delphi:
1
2
3
4
if tmpGewicht <> 0 then
  tmpGewogen := True
else
  tmpGewogen := False;
Die kom ik ook nog maar al te vaak tegen :X

Acties:
  • 0 Henk 'm!

Verwijderd

mysql icm php wordt bij mij altijd errug ranzig... ook zo traag als wat altijd :P

Acties:
  • 0 Henk 'm!

  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05 22:30

FendtVario

The leader drives Vario!

Verwijderd schreef op donderdag 12 mei 2005 @ 14:15:
[...]

Tis niet echt fout toch? Misschien wil diegene verderop in de code vaak de uitkomst van "tmpGewicht <> 0" gebruiken, en dan is het overzichtelijker om gewoon een boolean aan te spreken?

Of bedoel je dat je ook gewoon zo kunt doen:
Delphi:
1
tmpGewogen := tmpGewicht > 0;
Hier zal groter dan wel goed gaan omdat je normaal gesproken niet negatief kunt wegen, maar anders gewoon <> gebruiken natuurlijk. Het is niet echt fout maar het kan ook in regel natuurlijk wat het wat bij betreft overzichtelijker maakt. Je kan de uitkomst natuurlijk om verschillende redenen naar een var schrijven, bijv. omdat die een andere scope heeft.

Wat trouwens een soorgelijk geval is is deze (ook wel eens gezien), functie ff snel verzonnen.
Delphi:
1
2
3
4
5
6
7
function IsLinksGroter(Links, Recht: Integer);
begin
  if Links > Rechts then
    Result := true
  else 
    Result := false;
end;

www.fendt.com | Nikon D7100 | PS5


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:19
ReallyStupidGuy schreef op donderdag 12 mei 2005 @ 10:22:
[...]


Is in ieder geval wel veilig, dan heeft niemand meer wat aan de DB zonder de applicatie!
Ja, probeer dan maar eens een nieuw item in de combobox toe te voegen, of die items in een andere volgorde te displayen.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

FendtVario schreef op donderdag 12 mei 2005 @ 13:50:
Deze zal misschien wel ergens voorkomen, maar deze kwam ik net tegen.
Delphi:
1
2
3
4
if tmpGewicht <> 0 then
  tmpGewogen := True
else
  tmpGewogen := False;
da's voor mij net hetzelfde als

Java:
1
2
3
4
5
  if(myBooleanVar == true) {
     //fiets maar rustig verder
  } else {
     // afstappen en dan te voet verder....
  }


Iemand vertelde me trouwens onlangs dat dat ook andere bytecode opleverde... Ik vond het gewoon lomp gedaan maar dacht dat de compiler er wel naast zou kijken, dat blijkt dus niet het geval...

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:19
Erkens schreef op donderdag 12 mei 2005 @ 14:03:
[...]

zo kwam ik laatst deze tegen:

PHP:
1
2
3
4
5
6
7
8
9
function bla(){
  // hier wordt iets uitgevoerd...

  if ($result){
    return false;
  }else{
    return true;
  }
}


:X

beter/handiger is natuurlijk:
PHP:
1
2
3
4
5
function bla(){
  // hier wordt iets uitgevoerd...
  
 return !$result;
}
Mja, maar dat kan je niet echt een 'domme fout' ofzo noemen.
Verwijderd schreef op donderdag 12 mei 2005 @ 14:55:
[...]


da's voor mij net hetzelfde als

Java:
1
2
3
4
5
  if(myBooleanVar == true) {
     //fiets maar rustig verder
  } else {
     // afstappen en dan te voet verder....
  }


Iemand vertelde me trouwens onlangs dat dat ook andere bytecode opleverde... Ik vond het gewoon lomp gedaan maar dacht dat de compiler er wel naast zou kijken, dat blijkt dus niet het geval...
Vind ik helemaal niet zo erg, en doe ik zelfs ook meestal, gewoon omdat ik dit:
code:
1
if( myBool == false )

leesbaarder vindt dan
code:
1
if( !myBool )

[ Voor 41% gewijzigd door whoami op 12-05-2005 15:02 ]

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Yoeri
  • Registratie: Maart 2003
  • Niet online

Yoeri

O+ Joyce O+

(overleden)
Hebben we nooit ontdekt :X

Kijkje in de redactiekeuken van Tweakers.net
22 dec: Onze reputatie hooghouden
20 dec: Acht fouten


Acties:
  • 0 Henk 'm!

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 10-09 11:15
Alarmnummer schreef op donderdag 12 mei 2005 @ 10:29:
Waar ik me tegenwoordig vaak aan stoor is dat mensen ontwerpen opzetten vanuit classes en in die classes al bepaalde functionaliteit zetten. Naarmate je meer richting core zaken gaat, zaken die veel dependants hebben, geeft dit vaak enorme problemen als je het wilt uitbreiden.

Mensen die ontwerpen opzetten van classes kunnen duidelijk niet ontwerpen en hebben 0.0 visie en tenzij ze in een of andere niche zitten (zoals Lucene) neem ik zo`n product ook snel niet meer serieus.
Met name het 2e stukje kan ik niet echt volgen. Wat is er mis met het ontwerpen van classes? Of moeten dat (in jouw beleving) interfaces zijn?

Voel me misschien wel héél klein beetje aangesproken ;)

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


Acties:
  • 0 Henk 'm!

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Erkens schreef op donderdag 12 mei 2005 @ 14:03:
beter/handiger is natuurlijk:
PHP:
1
2
3
4
5
function bla(){
  // hier wordt iets uitgevoerd...
  
 return !$result;
}
Ik vind het eerste stuk code eigenlijk gemakkelijker te lezen. Het ligt veel meer bij je natuurlijke denkwijze (als het er is, dan false teruggeven, anders true) dan de tweede (je moet het omgekeerde van het bestaan ervan teruggeven). Dat het iets meer regels is boeit me dan niet.

Acties:
  • 0 Henk 'm!

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Verwijderd schreef op donderdag 12 mei 2005 @ 14:55:
[...]
Java:
1
2
3
4
5
  if(myBooleanVar == true) {
     //fiets maar rustig verder
  } else {
     // afstappen en dan te voet verder....
  }
Dat soort code moet je acuut fixen en terug richting auteur sturen.
Java:
1
2
3
4
5
  if( (((myBooleanVar == true)==true))==true) {
     //fiets maar rustig verder
  } else {
     // afstappen en dan te voet verder....
  }

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Acties:
  • 0 Henk 'm!

  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05 22:30

FendtVario

The leader drives Vario!

Als je de inverse waarde moet teruggeven kun je misschien beter '//hier wordt iets uitgevoerd...' herschrijven zodat je gewoon return $result kunt doen. Lijkt mij duidelijker dan een uitroepteken en mooier dan de if-then constructie.

@MSalters
Maak er dan dit van :Y)
Java:
1
2
3
4
5
  if ((myBooleanVar == true)!=false) {
     //fiets maar rustig verder
  } else {
     // afstappen en dan te voet verder....
  }

[ Voor 34% gewijzigd door FendtVario op 12-05-2005 15:09 ]

www.fendt.com | Nikon D7100 | PS5


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

whoami schreef op donderdag 12 mei 2005 @ 14:58:
Mja, maar dat kan je niet echt een 'domme fout' ofzo noemen.
het is ook geen domme fout, dat zeg ik ook niet, alleen vind ik het niet echt overzichtelijk als je op deze manier te werk gaat, het functioneerd wel, maar het werkt snel verwarrend, want het is niet direct te zien dat er een "not" toegepast wordt op het resultaat.

Acties:
  • 0 Henk 'm!

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
riezebosch schreef op donderdag 12 mei 2005 @ 15:02:
[...]
Met name het 2e stukje kan ik niet echt volgen. Wat is er mis met het ontwerpen van classes?
In veel gevallen (niet alle... soms is het imho onzin om vanuit interfaces te werken) zorgt het voor veel beperkingen. Als jij pure abstracte classes hebt, dan is de schade nog te overzien, alhoewel zelfs een puur abstracte class grotere beperkingen oplegt dan een interface. Maar op het moment dat ook maar 1 veld erin staat of 1 stuk functionaliteit dat je niet kunt overriden, zijn de wereld aan patterns niet meer toepasbaar. Voor een eind applicatie maakt het imho niet zoveel uit, maar als je meer richting herbruikbare componenten gaat, wil je (uiteindelijk) hoe dan ook vrijheid.

Daarom ontwerpen vanuit interfaces en niet vanuit classes.

Acties:
  • 0 Henk 'm!

  • Bartjuh
  • Registratie: Oktober 2001
  • Niet online

Bartjuh

Hej

Voor mijn leraar programmeren die dacht dat je met een switch-case alleen maar met een reeks vaste waarden kon vergelijken :z

C#:
1
2
3
4
5
6
7
8
9
10
switch(true)
{
  case (waarde < 3):
    // bla
    break;
  case (waarde > 3 && waarde < 10):
    //bla
    break;
    //etc etc
}

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Bartjuh schreef op donderdag 12 mei 2005 @ 15:19:
Voor mijn leraar programmeren die dacht dat je met een switch-case alleen maar met een reeks vaste waarden kon vergelijken :z

C#:
1
2
3
4
5
6
7
8
9
10
switch(true)
{
  case (waarde < 3):
    // bla
    break;
  case (waarde > 3 && waarde < 10):
    //bla
    break;
    //etc etc
}
dat vind ik vies misbruik maken van een switch, je switched op "true", beetje vaag, hier kan je beter if-statements voor gebruiken imo

Acties:
  • 0 Henk 'm!

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
FendtVario schreef op donderdag 12 mei 2005 @ 15:07:
Als je de inverse waarde moet teruggeven kun je misschien beter '//hier wordt iets uitgevoerd...' herschrijven zodat je gewoon return $result kunt doen. Lijkt mij duidelijker dan een uitroepteken en mooier dan de if-then constructie.

@MSalters
Maak er dan dit van :Y)
Java:
1
2
3
4
5
  if ((myBooleanVar == true)!=false) {
     //fiets maar rustig verder
  } else {
     // afstappen en dan te voet verder....
  }
Is dit een grapje of meen je dit serieus? Dit is ronduit slecht.

Mensen die trouwens boolean vergelijken met == en != vind ik sowieso al.. hmmm.. vreemd..

Acties:
  • 0 Henk 'm!

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 10-09 11:15
Alarmnummer schreef op donderdag 12 mei 2005 @ 15:25:
[...]
Is dit een grapje of meen je dit serieus? Dit is ronduit slecht.

Mensen die trouwens boolean vergelijken met == en != vind ik sowieso al.. hmmm.. vreemd..
Als je kijkt wélk bericht hij quote, begrijp je dat het een grapje is ;)

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


Acties:
  • 0 Henk 'm!

  • schoene
  • Registratie: Maart 2003
  • Laatst online: 09:21
riezebosch schreef op donderdag 12 mei 2005 @ 15:37:
[...]

Als je kijkt wélk bericht hij quote, begrijp je dat het een grapje is ;)
Tuurlijk is het geen grap. Persoonlijk vind ik het volgende nog duidelijker :+
Java:
1
2
3
4
5
  if ((myBooleanVar == true) && (myBooleanVar != false)) {
     //fiets maar rustig verder
  } else {
     // afstappen en dan te voet verder....
  }

Nee, serieus, ik heb echt wel al redelijk gelijkaardige constructies gezien 8)7

[ Voor 10% gewijzigd door schoene op 12-05-2005 15:56 ]


Acties:
  • 0 Henk 'm!

  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05 22:30

FendtVario

The leader drives Vario!

@Alarmnummer; Bloedserieus

Nee natuurlijk niet. :+

www.fendt.com | Nikon D7100 | PS5


Acties:
  • 0 Henk 'm!

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
FendtVario schreef op donderdag 12 mei 2005 @ 16:28:
@Alarmnummer; Bloedserieus

Nee natuurlijk niet. :+
Je weet het soms maar nooit ;)

Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

whoami schreef op donderdag 12 mei 2005 @ 14:58:
Vind ik helemaal niet zo erg, en doe ik zelfs ook meestal, gewoon omdat ik dit:
code:
1
if( myBool == false )

leesbaarder vindt dan
code:
1
if( !myBool )
Dat ligt aan de naam van myBool. Het laatste kan heel natuurlijk zijn, mits daar met de naam van de boolean rekening mee is gehouden. Daar geef ik persoonlijk wel de voorkeur aan.

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

Verwijderd

Confusion schreef op donderdag 12 mei 2005 @ 20:31:
Dat ligt aan de naam van myBool. Het laatste kan heel natuurlijk zijn, mits daar met de naam van de boolean rekening mee is gehouden. Daar geef ik persoonlijk wel de voorkeur aan.
Daar ben ik het niet mee eens. Het laatste is altijd natuurlijk, ongeacht de naam van de boolean. De evaluatie blijft immers hetzelfde.

!waarde is identiek aan waarde<>true.

Dus zelfs dit:

code:
1
2
3
  cMijnString = false;
  [..]
  if (!cMijnString) { .... }


Is net zo duidelijk als
code:
1
2
3
  cMijnString = false;
  [..]
  if (cMijnString <> true) { .... }


De naan van de variabele heeft hier niets mee te maken. Beide zijn even (on)duidelijk.

Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Verwijderd schreef op donderdag 12 mei 2005 @ 20:55:
Daar ben ik het niet mee eens. Het laatste is altijd natuurlijk, ongeacht de naam van de boolean. De evaluatie blijft immers hetzelfde.
Als dat het criterium is, dan kunnen we alle variabelen wel gewoon 'a' tot en met 'zzz' noemen, 'de evaluatie blijft immers toch hetzelfde' ;). In mijn ogen moet code leesbaar zijn: letterlijk. Variabelen moeten dus niet alleen betekenisvolle, maar ook zoveel mogelijk opleesbare namen hebben, zodat een constructie gelezen kan worden en helder is, omdat het bijna een geldige zin is (voor een andere programmeur, niet voor een leek). Je noemt de boolean dus niet 'set', maar 'isSet'. Niet 'triggered', maar 'wasTriggered', etc. Je krijgt zinnen als "if (class.property.isSet) then..." etc. Als iemand de boolean 'set' heeft genoemd, dan is "if (class.property.set == True) then..." natuurlijker. Het leest natuurlijker en is dus makkelijker te begrijpen.

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

Verwijderd

Natuurlijk moet je je variabelen een zo logisch mogelijke naam geven. Dat is echter een heel andere discussie.

De vraag of je beter !blaat dan blaat<>true kunt schrijven staat daar volledig los van. Ongeacht de variabelenaam.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op donderdag 12 mei 2005 @ 21:19:
[...]


Natuurlijk moet je je variabelen een zo logisch mogelijke naam geven. Dat is echter een heel andere discussie.

De vraag of je beter !blaat dan blaat<>true kunt schrijven staat daar volledig los van. Ongeacht de variabelenaam.
dat was juist wat Confusion duidelijk probeerde te maken dat
code:
1
if (!isSet) // doe meuk

duidelijker is dan
code:
1
if (!set) // doe meuk

en dat je in degelijke gevallen voor de duidelijkheid er prima
code:
1
if (set!=true) // doe meuk

kan gebruiken, zodat het wel een leesbaar verhaal blijft.

Acties:
  • 0 Henk 'm!

Verwijderd

Erkens schreef op donderdag 12 mei 2005 @ 21:20:
[...]
code:
1
if (!set) // doe meuk

en dat je in degelijke gevallen voor de duidelijkheid er prima
code:
1
if (set!=true) // doe meuk

kan gebruiken, zodat het wel een leesbaar verhaal blijft.
Dit is de kern van de discussie, en ik ben het gewoon niet met jullie eens. Het tweede is niet duidelijker dan het eerste. Het betekend hetzelfde.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op donderdag 12 mei 2005 @ 21:24:
[...]


Dit is de kern van de discussie, en ik ben het gewoon niet met jullie eens. Het tweede is niet duidelijker dan het eerste. Het betekend hetzelfde.
tja, kwestie van verschil van mening, ik ben gewoon van mening (en vele met mij) dat "als niet waarde dan..." lastiger te lezen is dan "als waarde niet geldig is dan...". Althans het kost iets meer tijd om de code te begrijpen als je hem snel doorleest.

Acties:
  • 0 Henk 'm!

Verwijderd

Bij een vorig bedrijf had ik een collega die gewoon geen loops normaal kon schrijven. Meestal in een loop hou je de terminatie logica en de sequence logica (bv ophogen counter) zo centraal mogelijk. Deze man echter had de neiging om wel op tien(!) plaatsen in een loop een counter op te hogen aan de hand van testen die ie dan ook wel tien keer herhaalde.

Gevolg was dat z'n loops bij het minste geringste buiten de bounds kwamen waarop ze moesten werken. Als zoiets dan weer eens gebeurde ging ie altijd heel serieus kijken en zij: "Het zou eigenlijk niet moeten kunnen, maar af en toe gebeurd er iets heeeel vreemds. Ik denk dat het een fout in de hardware is" |:(

Voorbeeld van een dergelijk loopje:

Java:
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
boolean end1 = false;
boolean end2 = false;
boolean end3 = false;

int c = 0;
int l = str.length();

while (c<l) {
   if (end1 == true || str1.equals("x")) {
       end1 = true;
   }
   if ( end1 == false) {
        if ( x.length() == 10 ) {
           x = y;
        }
        x = y + z[c];
        c++;
   }
   if ( end2 == true || str2.equals("x")) {
       end2 == true;
       c++;
   }
   if ( end2 == false ) {
      // veel vage code: c-- , nog zo'n 3 keer if ( end2 == true) nog paar keer c = c + 1; etc...
}


Toen ik les gaf in C++ zag ik dit gedrag ook vaak: binnen loops meerdere keren ophogen van loop counter en meerdere keren iets testen, terwijl dat makkelijk met een beetje nadenken in de main loop conditie kon.

Je ziet vaak dat mensen een counter meerdere keren ophogen binnen een loop, maar slechts 1 maal checken of het binnen de bounds valt. En dan nog raar opkijken als ie eroverheen gaat...

Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 14-09 18:57

Robtimus

me Robtimus no like you

Verwijderd schreef op donderdag 12 mei 2005 @ 21:47:
Java:
1
2
3
   if (end1 == true || str1.equals("x")) {
       end1 = true;
   }
Wauw, da's prachtig. Als end1 al true is, maak hem dan nog meer true! En dat 2x in zo'n kort stukje code!

Ik hoop dat ik nooit code van die gast hoef te lezen ;)

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

Verwijderd

IceManX schreef op donderdag 12 mei 2005 @ 21:56:
[...]
Wauw, da's prachtig. Als end1 al true is, maak hem dan nog meer true! En dat 2x in zo'n kort stukje code!
In het hele loop stond het nog veel meer keren! Een stuk of 10 keer zelfs...

Em wat dacht je dan van het fragment:

Java:
1
2
3
4
if ( x.length() == 10 ) {
           x = y;
        }
        x = y + z[c]; 


Die toekenning x = y slaat nergens op, want hij zal daarna altijd teniet gedaan worden door x=y + z[c].

[ Voor 39% gewijzigd door Verwijderd op 13-05-2005 00:02 ]


Acties:
  • 0 Henk 'm!

  • jos707
  • Registratie: December 2000
  • Laatst online: 13-09 23:08
IceManX schreef op donderdag 12 mei 2005 @ 21:56:
[...]
Wauw, da's prachtig. Als end1 al true is, maak hem dan nog meer true! En dat 2x in zo'n kort stukje code!

Ik hoop dat ik nooit code van die gast hoef te lezen ;)
Wel hier staat toch een OR statement dus end1 was per definitie niet al true.

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 09:03
IceManX schreef op donderdag 12 mei 2005 @ 21:56:
[...]
Wauw, da's prachtig. Als end1 al true is, maak hem dan nog meer true! En dat 2x in zo'n kort stukje code!
Ik hoop dat ik nooit code van die gast hoef te lezen ;)
Zo'n constructie kan (in een loop) om performance redenen best interessant zijn.. na de OR wordt immers niet uitgevoerd. Het enige verwijt dat je kunt maken is dat het korter kan:
PHP:
1
$end1 = ($end1 || $str1 == ' x' );


* T-MOB is eigenlijk wel benieuwd welk logisch equivalent volgens jou dan beter is...

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
jos707 schreef op vrijdag 13 mei 2005 @ 00:15:
[...]


Wel hier staat toch een OR statement dus end1 was per definitie niet al true.
Nee inderdaad maar als hij door die conditie in de if loop komt dan gebeurt er feitenlijk niets. Er had dus net zogoed alleen de string.equals kunnen staan.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • JoetjeF
  • Registratie: Juni 2003
  • Laatst online: 10-11-2012

JoetjeF

Mo Chuisneoir

Met vvv O-)

[ Voor 97% gewijzigd door JoetjeF op 13-05-2005 01:14 ]


Acties:
  • 0 Henk 'm!

Verwijderd

[knip]

noob fout: zag OR voor AND aan.

[ Voor 95% gewijzigd door Verwijderd op 13-05-2005 01:09 ]


Acties:
  • 0 Henk 'm!

Verwijderd

uit een hbo3 project:

PHP:
1
2
3
4
5
6
7
8
if ($iets==$bla)
{
if ($iets==$bla2)
{
//nog meer if statements

}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
}


dat rijtje } was trouwens nog een heel stuk langer :)
ik kan het bestand jammer genoeg niet meer vinden

[ Voor 8% gewijzigd door Verwijderd op 13-05-2005 01:22 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ikzelf had in mijn begintijd iets verschrikkelijks. :P

Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function Form1.iets(): boolean
begin
  if Panel1.Left = balletje.x then
    // doe iets
  if Panel2.Left = balletje.x then
    // doe iets
  if Panel3.Left = balletje.x then
    // doe iets
  if Panel4.Left = balletje.x then
    // doe iets

   //// ............

  if Panel180.Left = balletje.x then
    // doe iets
end;

:D

Ik kende duidelijk de controls/components properties nog niet. :+

edit:
Code is nogal wat vereenvoudigd trouwens, het betrof een implementatie van Noid. :P

[ Voor 12% gewijzigd door NMe op 13-05-2005 01:37 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 09:03
rwb schreef op vrijdag 13 mei 2005 @ 00:57:
[...]
Nee inderdaad maar als hij door die conditie in de if loop komt dan gebeurt er feitenlijk niets. Er had dus net zogoed alleen de string.equals kunnen staan.
Maar de boolean evaluatie is performanter dan de string.equals (die afweging zal aan mijn scripting achtergrond liggen). Daarnaast zou str1 in de gequote code al TRUE kunnen zijn (zonder dat de string.equals waar is). Zo "per definitie fout" is de code dus helemaal niet...

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 14-09 18:57

Robtimus

me Robtimus no like you

Niet fout, maar wel vreemd.

Laten we het even nader bekijken.
Java:
1
2
3
4
if (end1 == true || str1.equals("x"))
{
    end1 = true;
}
Als end1 al true is, dan wordt str1.equals("x") niet eens geevalueerd en meteen de body uitgevoerd. Dus als vooraf end1 == true, dan is deze if dus niets meer als
Java:
1
2
3
4
if (end1 == true)
{
    end1 = true;
}
of nog korter
Java:
1
2
// end1 == true
end1 = true;
Compleet overbodig dus. Alleen checken op str1.equals("x") is dus genoeg:
Java:
1
2
3
4
if (str.equals("x"))
{
    end1 = true;
}
T-MOB schreef op vrijdag 13 mei 2005 @ 00:34:
PHP:
1
$end1 = ($end1 || $str1 == ' x' );
Niet helemaal juist; end1 wordt nml niet op false gezet als end1 == false && !str.equals("x"). Over hoe het dus wel zou "moeten": gewoon dat end1 == true weghalen uit de guard.

[ Voor 6% gewijzigd door Robtimus op 13-05-2005 09:11 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Verwijderd schreef op donderdag 12 mei 2005 @ 21:24:
Dit is de kern van de discussie, en ik ben het gewoon niet met jullie eens. Het tweede is niet duidelijker dan het eerste. Het betekend hetzelfde.
Ik pleit niet voor het tweede, maar voor het eerste met handige namen van booleans. Als je beweert dat
if ( ! class.property.isSet) ...
en
if ( ! class.property.set) ...
even goed te begrijpen zijn, dan heb je voor jezelf misschien gelijk, maar voor het grootste deel van de lezers niet. Het eerste zit dichter bij natuurlijke talen en dat maakt code aantoonbaar makkelijker te begrijpen. Het tweede kan dan nodig zijn als je moet coden voor bestaande booleans waarvan je de naam niet kan wijzigen. Kijk, ik verzin niet zelf dat code beter te begrijpen is als het dichter bij natuurlijke taal zit; dat is gewoon een experimenteel feit. Wat me overigens ook doet betwijfelen of je overtuiging dat je het even goed begrijpt wel gerechtvaardigd is: je denkt van wel, maar zou je echt verbaasd zijn als uit een experiment bleek dat het eerste je net iets sneller maakt in het begrijpen van een stuk code? (Dan hebben we het dus niet alleen over naamkeuze van booleans, maar over algemene naamkeuze, die alles 'leesbaar' maakt).

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:19
Dat geneuzel over die booleans icm condities vind ik hier niet echt thuishoren.
Dat is gewoon een kwestie van smaak, het maakt een programma er niet beter of slechter op, het is geen dinges waarvan je gaat |:( als je het ziet, etc....

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

Confusion schreef op vrijdag 13 mei 2005 @ 09:12:
Ik pleit niet voor het tweede, maar voor het eerste met handige namen van booleans. Als je beweert dat
if ( ! class.property.isSet) ...
en
if ( ! class.property.set) ...
Dat beweer ik dus niet. Het ging niet om de naamgeving van de variabelen (juist niet). Het ging er om of !variabele meer of minder duidelijk is dan variabele==false.

Acties:
  • 0 Henk 'm!

Verwijderd

whoami schreef op vrijdag 13 mei 2005 @ 09:20:
Dat geneuzel over die booleans icm condities vind ik hier niet echt thuishoren.
Dat is gewoon een kwestie van smaak, het maakt een programma er niet beter of slechter op, het is geen dinges waarvan je gaat |:( als je het ziet, etc....
Uhmm, booleaanse optimalisatie hoort wel degelijk bij goede of foute code.
Verwijderd schreef op donderdag 12 mei 2005 @ 21:47:
Java:
1
2
3
   if (end1 == true || str1.equals("x")) {
       end1 = true;
   }
Ik ben het absoluut met T-Mob eens dat dit absoluut geen fout gebruik is. Het is in de meeste gevallen zelfs vele malen sneller dan end1 == true weg te halen.

Stel end1 is al true, in dat geval zal meteen de "if-body" uitgevoerd worden en zal end1 op true gezet worden. De kosten hiervan zijn O(1). str1.equals("x") wordt niet eens meer uitgevoerd. equals heeft O(n) en is veel kostbaarder.
De code had nog beter gekund door te stellen:
Java:
1
2
3
   if (end1 == false && str1.equals("x")) {
       end1 = true;
   }


Wanneer in dit geval de variabele end1 al op true staat, zal de "if-body" niet uitgevoerd worden.

Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

whoami schreef op vrijdag 13 mei 2005 @ 09:20:
Dat geneuzel over die booleans icm condities vind ik hier niet echt thuishoren.
Dat is gewoon een kwestie van smaak, het maakt een programma er niet beter of slechter op, het is geen dinges waarvan je gaat |:( als je het ziet, etc....
Dan gaan wij |:( van verschillende dingen :) Ik ga eerder |:( als ik iets in lastig leesbare code probeer te vinden dan van fouten van mensen die eenvoudigweg de taal niet beheersen of logische operatoren niet begrijpen. Het laatste kan ik begrijpen; van het eerste kan ik niet begrijpen hoe iemand het zelf handig kan vinden.

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 22:43

TeeDee

CQB 241

Onder het mom van: Even X en Y waardes van een afbeelding opvragen om de afbeelding proportioneel te schalen.

Nee, ik wist toen nog niets van de .SizeF af :+
C#:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
        public string GetNewXandY(string _imgroot)
        {
            string xeny = "";
            System.Drawing.Imaging.ImageFormat _imgformat = GetImageFormat(_imgroot);
            System.Drawing.Image _originalimage = System.Drawing.Image.FromFile(_imgroot);
            // wat meuk variables
            int _newwidth, _newheight;
    
            if (Request.QueryString["afbeelding"] == "nieuw")
            {
                // scaling van het image // let op: __tempx / y zijn omgewisseld!!
                int __tempy = _originalimage.Width;
                int __tempx = _originalimage.Height;
                int maxx = 0;
                int maxy = 0;
                if (Int32.Parse(Request.QueryString["formaat"].ToString()) == 1){
                    maxx = 2362;
                    maxy = 1636;
                }
                else {
                    maxx = 1654;
                    maxy = 1063;
                }

                if (__tempx >= __tempy ) {
                    if (maxx * __tempy / __tempx <= maxy) {
                        _newwidth = maxx * __tempy/__tempx;
                        _newheight = maxx;
                    } 
                    else {
                        _newwidth = maxy;
                        _newheight = maxy * __tempx / __tempy;
                    }

                } else  {
                    if (maxx * __tempx / __tempy <= maxy) {
                        _newwidth = maxx;
                        _newheight = maxx * __tempx / __tempy;
                    } 
                    else {
                        _newwidth = maxy * __tempy / __tempx;
                        _newheight = maxy;
                    }
                }
            }
            else {
                if (Int32.Parse(Request.QueryString["formaat"].ToString()) == 0) //a6 
                {
                    if (_originalimage.Width >= _originalimage.Height) {
                        _newwidth = 1843;
                        _newheight = 1252;
                    } 
                    else {
                        _newwidth = 1252;
                        _newheight = 1843;
                    }
                } 
                else {
                    _newwidth = _originalimage.Width;
                    _newheight = _originalimage.Height;
                }
            }
            xeny = _newwidth.ToString()+"|"+_newheight.ToString();
            return xeny;
        }

En je eigen maar afvragen: wat doet dit en wat moet er uit komen.
Voor de liefhebbers: de waarde xeny is een string, die in een andere functie gesplit wordt, vervolgens geparsed wordt naar Int.

Het allermooiste commentaar vind ik:
code:
1
// let op: __tempx / y zijn omgewisseld!!

Om het e.e.a. nog lastiger te maken :)

[ Voor 14% gewijzigd door TeeDee op 13-05-2005 13:07 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

Verwijderd

Een geweldige site over dit onderwerp is:

http://www.thedailywtf.com

Hier wordt iedere dag(behalve in het weekend) een voorbeeld uit reallife code gehaald. Code waar je altijd maar van hoopt dat je het zelf niet tegenkomt =]

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 22:43

TeeDee

CQB 241

Verwijderd schreef op vrijdag 13 mei 2005 @ 12:32:
Een geweldige site over dit onderwerp is:

http://www.thedailywtf.com

Hier wordt iedere dag(behalve in het weekend) een voorbeeld uit reallife code gehaald. Code waar je altijd maar van hoopt dat je het zelf niet tegenkomt =]
offtopic:
I know. Staat bij mij in mijn sage :) Er zitten heerschende tussen, maar sommige reacties zijn wel erg "slashdotterig", van "Oeeeeoeoeeeee, dat is stom, zoiets zou ik noooooooit doen." Als je begrijpt wat ik bedoel :)

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06 16:43

Varienaja

Wie dit leest is gek.

Ik heb de source van één van mijn allereerste serieuze programmeersels eens bekeken. Ik dacht dat daar toch wel veel afschrikwekkende stukken code in zouden zitten, maar het valt me alles mee.

Het is wel redelijk onleesbare code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
   Pi = 4 * ATN(1)
   pX% = pX% / Gr%: pY% = pY% / Gr%
   LINE (Gr% * (pX% + 1.5), Gr% * pY%)-(Gr% * (pX% + 1.7), Gr% * (pY% + 4)), K%, BF
   LINE (Gr% * (pX% + 2.5), Gr% * pY%)-(Gr% * (pX% + 2.7), Gr% * (pY% + 4)), K%, BF
   LINE (Gr% * (pX% + 4.8), Gr% * pY%)-(Gr% * (pX% + 5), Gr% * (pY% + 4)), K%, BF
   LINE (Gr% * (pX% + 5.8), Gr% * pY%)-(Gr% * (pX% + 6), Gr% * (pY% + 4)), K%, BF
   CIRCLE (Gr% * (pX% + 2), Gr% * (pY% + 5)), Gr%, K%, .5 * Pi, 1.5 * Pi
   CIRCLE (Gr% * (pX% + 6), Gr% * (pY% + 5)), Gr%, K%, 1.5 * Pi, .5 * Pi
   LINE (Gr% * (pX% + 2), Gr% * (pY% + 3.6))-(Gr% * (pX% + 6), Gr% * (pY% + 3.6)), K%
   LINE (Gr% * (pX% + 2), Gr% * (pY% + 6.3))-(Gr% * (pX% + 6), Gr% * (pY% + 6.3)), K%
   PAINT (Gr% * (pX% + 4), Gr% * (pY% + 5)), K%
   CIRCLE (Gr% * (pX% + 3), Gr% * (pY% + 6)), Gr% * 1, K%
   CIRCLE (Gr% * (pX% + 5.2), Gr% * (pY% + 6)), Gr% * 1, K%
   PAINT (Gr% * (pX% + 3), Gr% * (pY% + 7)), K%
   PAINT (Gr% * (pX% + 5.2), Gr% * (pY% + 7)), K%
   CIRCLE (Gr% * (pX%), Gr% * (pY% + 7.5)), Gr% * 1, K%, , , .3
   PAINT (Gr% * (pX%), Gr% * (pY% + 7.5)), K%
   CIRCLE (Gr% * (pX% - .2), Gr% * (pY% + 7.8)), Gr% * .1, 0
   PAINT (Gr% * (pX% - .2), Gr% * (pY% + 7.8)), 0
   CIRCLE (Gr% * (pX% + 4.5), Gr% * (pY% - 1.8)), Gr% * 4.5, 10, , , .14
   PAINT (Gr% * (pX% + 4.5), Gr% * (pY% - 1.8)), 10
   CIRCLE (Gr% * (pX% + 1), Gr% * (pY% + 6)), Gr% * 1.6, K%, (3 / 4) * Pi, 1.7 * Pi, 1.2
   CIRCLE (Gr% * (pX% + 1), Gr% * (pY% + 6)), Gr% * .9, K%, (2.5 / 4) * Pi, 1.6 * Pi, 1.2
   PAINT (Gr% * (pX% - .1), Gr% * (pY% + 6)), K%

Bovenstaand tekent een kameel, op positie pY, pX, grootte Gr en kleur K, zie screenshot:
Afbeeldingslocatie: http://varienaja.demon.nl/piramid.gif

Siditamentis astuentis pactum.


Acties:
  • 0 Henk 'm!

  • Bartjuh
  • Registratie: Oktober 2001
  • Niet online

Bartjuh

Hej

Erkens schreef op donderdag 12 mei 2005 @ 15:21:
[...]
dat vind ik vies misbruik maken van een switch, je switched op "true", beetje vaag, hier kan je beter if-statements voor gebruiken imo
Ik vind het ook een beetje vies, maar wel creatief ;)
Het werkt gewoon goed, en over het algemeen nog vrij overzichtelijk, als je geen rare dingen gaat doen :D

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Bartjuh schreef op vrijdag 13 mei 2005 @ 15:33:
[...]

Ik vind het ook een beetje vies, maar wel creatief ;)
Het werkt gewoon goed, en over het algemeen nog vrij overzichtelijk, als je geen rare dingen gaat doen :D
dat is met bijna alle stukken code in dit topic, het werkt wel (goed), maar het is gewoon geen mooie code, of juist lastig te lezen/begrijpen, waardoor je de code als "slecht" kan bestempelen :Y)

Acties:
  • 0 Henk 'm!

  • Rac-On
  • Registratie: November 2003
  • Niet online
uit vrij recente code:
PHP:
1
$batch = $batch + 0;

eigenlijk niet zo heel fout. $batch is hierbij een string dat een nummer representeerd, met nullen ervoor om een fixed length te creeeren (00008081 bijvoorbeeld) en ik wilde de nullen strippen. Dit was het snelste wat ik kon bedenken ;)

doet niet aan icons, usertitels of signatures


Acties:
  • 0 Henk 'm!

  • Koppensneller
  • Registratie: April 2002
  • Laatst online: 14-09 15:19

Koppensneller

winterrrrrr

Van een klasgenoot van mij:

code:
1
2
3
4
5
6
7
while (i<30)
do
  i=0
  {code}
  echo i
  i++
end


Waarom wordt die 'i' nou niet hoger? 8)7 :D

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Niet in alle talen, bovendien kan een switch vaak geoptimaliseerd worden met bijv. een jumptable of door de case labels zo te herorderen dat je een binary search kunt doen (waardoor je minder evaluaties krijgt). Met de code die jij gepost hebt kan dat niet. En bovendien, wat gebeurt er als meerdere cases true lijken te zijn? Ze worden dan niet allemaal uitgevoerd.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 22:23

Knutselsmurf

LED's make things better

rac-on schreef op vrijdag 13 mei 2005 @ 15:46:
uit vrij recente code:
PHP:
1
$batch = $batch + 0;

eigenlijk niet zo heel fout. $batch is hierbij een string dat een nummer representeerd, met nullen ervoor om een fixed length te creeeren (00008081 bijvoorbeeld) en ik wilde de nullen strippen. Dit was het snelste wat ik kon bedenken ;)
Dit soort luie constructies heb ik zelf ook wel eens gebruikt. In mijn ogen niet zoveel mis mee, zolang je maar in commentaar erbij zet waarom deze op het eerste gezicht onnodige regel in de code staat.

- This line is intentionally left blank -


Acties:
  • 0 Henk 'm!

Verwijderd

Ik kwam deze tegen (gelukkig niet door mij geschreven):

PHP:
1
2
3
4
foreach($array_variables["session"]["saved_offertes"] AS $key => $waarde)
{
      if ($waarde["SESOFFERTE_ID"] == $check) break;
}


Over zinloze code gesproken :o

[ Voor 10% gewijzigd door Verwijderd op 13-05-2005 16:06 . Reden: typo ]


Acties:
  • 0 Henk 'm!

  • Ivo
  • Registratie: Juni 2001
  • Laatst online: 14-01 18:01

Ivo

Je bent PASCAL gewend en je begint met C te prutsen:
code:
1
2
3
4
5
6
7
8
int fact(a);

{
  if (a=1)
    return(a);
  else
    return(a*fact(a-1));
}

Acties:
  • 0 Henk 'm!

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Er zijn tegenwoordig ook systemen om zinloos commentaar erbij te zetten.

Afbeeldingslocatie: http://www.cenqua.com/images/cmt_prefs.gif
Commentator

Het voordeel van dit soort systemen is dat je een garantie af kan geven over de kwaliteit van het commentaar. Verder scheelt dit behoorlijk in de kosten (commentaar schrijven kost gewoon tijd). Ik denk dat zo`n tool bij veel bedrijven een goede aankoop zou zijn.

[ Voor 43% gewijzigd door Alarmnummer op 13-05-2005 16:12 ]


Acties:
  • 0 Henk 'm!

  • majornono
  • Registratie: Juni 2002
  • Laatst online: 10-03-2023
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
function StringBewerken(str1, Str2)
  dim iStart

  iStart = InStr(1, str1, str2, 1) + Len(Str2)

  if iStart <> 0 then
    ...
  else
    ...
  end if

end function


en het maar vreemd vinden dat de else tag nooit bereikt werd

[ Voor 24% gewijzigd door majornono op 13-05-2005 16:16 . Reden: indentation ]

Problem Exists Between Chair And Keyboard


Acties:
  • 0 Henk 'm!

  • Paul C
  • Registratie: Juni 2002
  • Laatst online: 13-09 09:58
Ik heb ooit van die momenten dat ik alles goed vindt, als het maar werkt :Y) 8)7 :
PHP:
1
2
3
4
5
6
7
8
9
if(isset($_GET['url']) AND isset($_GET['usr']) AND isset($_GET['pwd']) AND isset($_GET['prt']) AND isset($_GET['files']) AND isset($_GET['fil2']) AND isset($_GET['fil1']) AND isset($_GET['fil3']) /*isset($_GET['url2']) AND isset($_GET['url1']) AND isset($_GET['url3']) */AND isset($_GET['pat'])){    // Is er niet zoiets als areset(); ??
   Stuk processing code
}
elseif(isset($_GET['url']) OR isset($_GET['usr']) OR isset($_GET['pwd']) OR isset($_GET['prt']) OR isset($_GET['files']) OR isset($_GET['fil2']) OR isset($_GET['fil1']) OR isset($_GET['fil3']) /*isset($_GET['url2']) OR isset($_GET['url1']) OR isset($_GET['url3']) */OR isset($_GET['pat'])){
   Formulier met melding dat niet alles ingevult is
}
else{
   Gewoon formulier
}

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
[rml][ Vrijdagmiddagonzin] wat is je terroristen naam[/rml]

* RobIII checked de source van dat ding...
JavaScript:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<SCRIPT LANGUAGE="JavaScript">

fullName = new String;
var x = 0;
var currentNum = 0;
var currentChar;
var y = 0;

var ozName = new Array("Abdulaziz Ichi Ghonads", "Al-Yazir Ima Fhatti", "Mustafa Turban", "Misukin Osama Offen", "Issamaysin Alah Dabommsinit", "Usama Bin Shafting", "Faghil Al-Gaylord", "Abu Yassir Fatti Fukki", "Misukin Alah Offen", "Huymada Farti Noys", "Mistafa Dafagbhut", "Muhammed bin Shagfest", "Abdalla The Kenyan", "Abdullah Honeylocks", "Fatin'ma Bhutti", "Mohammed Al Wank'han", "Bhati Al-Boya", "Ghai Fagbhut", "Usama Su'kocken", "Al-Muhajir Fukpuss", "Issamaysin Alah Dabommsinit", "Sheikh Rattle-al-Roll", "Ismail Delivered", "Yasser Marrowfat", "Al-Raghie Ma'byatch", "Ussama Al shiten", "Darkanzali Al'boobslim", "Ahmed The Tanzanian", "Mohammed Al-Bom-Ya", "Abdullah B'hati", "Abu Marzook Whafukama-Doin", "Sheikh Yo-ass", "Sorry you sound too nice to be a terrorist!", "Mustafa Jihad", "Mustafa Kalashnikov", "Al-Yazir Ima Fhatti", "Issamaysin Alah Dabommsinit", "Usama Bin Shafting", "Faghil Al-Gaylord", "Abu Yassir Fatti Fukki", "Misukin Alah Offen", "Huymada Farti Noys", "Mistafa Dafagbhut", "Muhammed bin Shagfest", "Ahmed The Tanzanian", "Abdalla The Kenyan", "Abdullah Honeylocks", "Fatin'ma Bhutti", "Mohammed Al Wank'han", "Bhati Al-Boya", "Ghai Fagbhut", "Usama Su'kocken", "Al-Muhajir Fukpuss", "Sheikh Rattle-al-Roll", "Ismail Delivered", "Yasser Marrowfat", "Al-Raghie Ma'byatch", "Ussama Al shiten", "Darkanzali Al'boobslim", "Ahmed The Tanzanian", "Mohammed Al-Bom-Ya", "Abdullah B'hati", "Abu Marzook Whafukama-Doin", "Sheikh Yo-ass", "Mustafa Jihad", "Mustafa Kalashnikov", "Al-Yazir Ima Fhatti", "Mustafa Turban", "Misukin Osama Offen", "Issamaysin Alah Dabommsinit", "Usama Bin Shafting", "Faghil Al-Gaylord", "Abu Yassir Fatti Fukki", "Misukin Alah Offen", "Huymada Farti Noys", "Mistafa Dafagbhut", "Muhammed bin Shagfest", "Abdalla The Kenyan", "Abdullah Honeylocks", "Fatin'ma Bhutti", "Mohammed Al Wank'han", "Bhati Al-Boya", "Ghai Fagbhut", "Usama Su'kocken", "Al-Muhajir Fukpuss", "Issamaysin Alah Dabommsinit", "Sheikh Rattle-al-Roll", "Ismail Delivered", "Yasser Marrowfat", "Al-Raghie Ma'byatch", "Ussama Al shiten", "Darkanzali Al'boobslim", "Ahmed The Tanzanian", "Mohammed Al-Bom-Ya", "Abdullah B'hati", "Abu Marzook Whafukama-Doin", "Sheikh Yo-ass", "Sorry you sound too nice to be a terrorist!", "Mustafa Jihad", "Mustafa Kalashnikov")


function matchLtr() {

    if (currentChar == "a" || currentChar == "A") {
        currentNum = 1;
    }
    if (currentChar == "b" || currentChar == "B") {
        currentNum = 2;
    }
    if (currentChar == "c" || currentChar == "C") {
        currentNum = 3;
    }
    if (currentChar == "d" || currentChar == "D") {
        currentNum = 4;
    }
    if (currentChar == "e" || currentChar == "E") {
        currentNum = 5;
    }
    if (currentChar == "f" || currentChar == "F") {
        currentNum = 6;
    }
    if (currentChar == "g" || currentChar == "G") {
        currentNum = 7;
    }
    if (currentChar == "h" || currentChar == "H") {
        currentNum = 8;
    }
    if (currentChar == "i" || currentChar == "I") {
        currentNum = 9;
    }
    if (currentChar == "j" || currentChar == "J") {
        currentNum = 10;
    }
    if (currentChar == "k" || currentChar == "K") {
        currentNum = 11;
    }
    if (currentChar == "l" || currentChar == "L") {
        currentNum = 12;
    }
    if (currentChar == "m" || currentChar == "M") {
        currentNum = 13;
    }
    if (currentChar == "n" || currentChar == "N") {
        currentNum = 14;
    }
    if (currentChar == "o" || currentChar == "O") {
        currentNum = 15;
    }
    if (currentChar == "p" || currentChar == "P") {
        currentNum = 16;
    }
    if (currentChar == "q" || currentChar == "Q") {
        currentNum = 17;
    }
    if (currentChar == "r" || currentChar == "R") {
        currentNum = 18;
    }
    if (currentChar == "s" || currentChar == "S") {
        currentNum = 19;
    }
    if (currentChar == "t" || currentChar == "T") {
        currentNum = 20;
    }
    if (currentChar == "u" || currentChar == "U") {
        currentNum = 21;
    }
    if (currentChar == "v" || currentChar == "V") {
        currentNum = 22;
    }
    if (currentChar == "w" || currentChar == "W") {
        currentNum = 23;
    }
    if (currentChar == "x" || currentChar == "X") {
        currentNum = 24;
    }
    if (currentChar == "y" || currentChar == "Y") {
        currentNum = 25;
    }
    if (currentChar == "z" || currentChar == "Z") {
        currentNum = 26;
    }
        
    x += currentNum;
}

function selName() {
    
    x = 0;
    fullName = document.names.firstname.value + document.names.lastname.value;
    
    for (i=0; i < fullName.length; i++) {
    
        currentChar = fullName.charAt(i);
        matchLtr();
        
    }
        
    popName()
}

function popName() {

    y = x % 80;
    document.names.ozbitchname.value = ozName[y];
    start();
}  

function start() {

    document.names.firstname.focus();
}

</SCRIPT>

:X

En dan zitten er in die 100 namen ook nog eens een bult dubbele (array bounds checken is moeilijk he? :P als je dan toch al niet weet hoe je binnen die bounds moet blijven :P )

Update: De code is gewoon 1 op 1 gejat van http://www.prisonbitchname.com/ . Ze hebben alleen de namen vervangen :X

[ Voor 63% gewijzigd door RobIII op 14-05-2005 03:34 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

pcmadman schreef op vrijdag 13 mei 2005 @ 16:55:
PHP:
1
// Is er niet zoiets als areset(); ??
Anders code je die zelf, 1 minuut werk :X

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Ik kan zo snel geen grappige echte mislukkingen bedenken, maar wel een hele hoop ranzige combinaties van GUI en applicatie en verkeerde indeling van klassen e.d. :D
Of bijvoorbeeld klassen die public vars van andere klassen direct zitten te mishandelen in plaats van met fatsoenlijke set methodes te werken ( :*) :P )

Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

Code is @work dus even uit het blote hoofd. Vandaag kwam ik dit tegen toen ik een programma een tikje moest aanpassen:


Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
For i As Integer = 0 To Ubound(topics)
  currenttopic = topics(i)

dotopic:
  ' Wat code die iets met het topic doet

  ' !!! Bij topic A moet ook altijd topic B gedaan worden !!!
  If currenttopic = "A" Then
    currenttopic = "B"
    Goto dotopic
  End If
Next i

Topics is een array van zaken die geexporteerd moeten worden, een topic is dus geen forumtopic, zo heet het nu eenmaal in de software...

Een paar regels boven deze loop wordt het topics array gevuld met de topics die geexporteerd dienen te worden |:(

[ Voor 25% gewijzigd door Gerco op 13-05-2005 20:30 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • misfire
  • Registratie: Maart 2001
  • Laatst online: 12-10-2024
Ik ben zelf nogal fan van defensief (pessimistisch) programmeren en self documenting code (geen commentaar in code zetten om uit te leggen wat het doet, maar duidelijke code schrijven). Ik zit sinds kort weer op een nieuw project en omdat ik dan nog niet veel van het systeem/code begreep mocht ik een review doen (klinkt misschien tegenstrijdig maar dat is echt een nuttige manier om mensen in te werken). Naast een paar kleine bugjes en WTF's viel mij op dat er op verschillende plekken het commentaar stond "Dit gebeurt toch niet". Vervolgens stonden er allemaal null assignments om de (Java) compiler "happy" te houden. Dus ongeveer zo:
code:
1
2
3
4
5
6
7
8
String bla = null;
try
{
  bla = foo.bar();
} catch (IOException e) {
  // Dit gebeurt toch niet.
}
bla.substring(1,4);

of
code:
1
2
3
4
5
6
7
if (test)
{
  return waarde;
} else if (andereTest) {
  return andereWaarde;
}
return null; // Dit gebeurt toch niet

Helaas was het commentaar "Dit gebeurt toch niet" in sommige gevallen bovendien een beetje voorbarig. De nulls die de compiler happy hield verborg de oorspronkelijke foutsituatie, en zorgde voor de meest vreemde fouten op andere plekken (of erger: geen fouten).

Mijn code-pattern bijdrage: zorg er altijd voor dat je code crasht in dit soort situaties, ipv dat je een "Dit gebeurt toch niet" commentaar schrijft. Dit is meestal maar een paar lettertjes meer typen dan een suf commentaar blok, en je kunt meer vertrouwen op je compiler. Dus bijvoorbeeld:
code:
1
2
3
4
5
6
7
8
String bla;
try
{
  bla = foo.bar();
} catch (IOException e) {
  throw new IllegalStateException("Er is een onverwachte IOException opgetreden", e);
}
bla.substring(1,4);

of
code:
1
2
3
4
5
6
7
if (test)
{
  return waarde;
} else if (andereTest) {
  return andereWaarde;
}
throw new IllegalStateException("Zowel test als andereTest zijn ongeldig, mag niet voorkomen.");
Het heeft twee uur discussiëren en een vreemde productiestoring nodig gehad, maar nu is de rest van mijn team het met me eens. :)

Acties:
  • 0 Henk 'm!

  • Ivo
  • Registratie: Juni 2001
  • Laatst online: 14-01 18:01

Ivo

Ik kwam deze code tegen in een programma waar ik een unit voor moet schrijven. Ik zou denken dat het domme code is, maar de persoon die het geschreven heeft schat ik hoger in.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure TTree.Delete(AValue: Integer; var P: PNode);
var
  Q: PNode; // Node to be deleted
begin
  if P = nil
  then {skip}
  else
    case Compare(AValue, P^.FValue) of
      ls: Delete(AValue, P^.FLeft);
      gt: Delete(AValue, P^.FRight);
      eq:
        begin
          if P^.FRight = nil then begin Q := P; P := P^.FLeft end
          else if P^.FLeft = nil then begin Q := P; P := P^.FRight end
          else
            begin
              DeleteRM(P^.FLeft, Q);
              P^.FValue := Q^.FValue
            end;
          Dispose(Q)
        end;
    end{case}
end;


Ik zou dus gewoon:

code:
1
if P <> nil then


gebruikt hebben. Misschien dat het de recursie wat explixieter maakt.

Acties:
  • 0 Henk 'm!

  • D4Skunk
  • Registratie: Juni 2003
  • Laatst online: 26-07 16:22

D4Skunk

Kind of Blue

Ivo schreef op zaterdag 14 mei 2005 @ 14:02:
[...]

Ik zou dus gewoon:

code:
1
if P <> nil then


gebruikt hebben. Misschien dat het de recursie wat explixieter maakt.
Ik zou dit dus ook net zoals jou doen. Het tegenargument hiervoor is, dat men om een negatie te lezen 'zaken in het hoofd moet omzetten'. Dit lijkt misschien wel belachelijk in deze situatie, maar in vergevorderde vergelijkingen is dit effectief wel van toepassing... Stel je hierbij een reeks geneste if's voor, met allemaal negatieve condities...
Dit is dus louter subjectief, dus om dit nu meteen slechte code te noemen....
;)

Deze regel is oorspronkelijk van toepassing op communicatie in het algemeen. Even verduidelijken met een concreet voorbeeld :
Veronderstel dat jij me de weg vraagt, en ik antwoord :
Wel, je rijdt hier rechtuit tot waar de weg in twee splitst, en je slaat :
-> niet linksaf.
-> rechtsaf.
Voor welke optie zou je kiezen ? :P

Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
D4Skunk schreef op zondag 15 mei 2005 @ 10:21:
Veronderstel dat jij me de weg vraagt, en ik antwoord :
Wel, je rijdt hier rechtuit tot waar de weg in twee splitst, en je slaat :
-> niet linksaf.
-> rechtsaf.
Voor welke optie zou je kiezen ? :P
En niet linksaf zou dan !P zijn en rechtsaf P <> nil?

Acties:
  • 0 Henk 'm!

  • Paul
  • Registratie: September 2000
  • Laatst online: 09:17
!Pointer lijkt me dan weer veel ranziger dan Pointer <> nil

!Pointer impliceert dat een boolean een getal is en nil gelijkstaat aan false. In Delphi zou ik "if not Assigned(P) then" gebruiken :)

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Paul Nieuwkamp schreef op zondag 15 mei 2005 @ 12:46:
!Pointer lijkt me dan weer veel ranziger dan Pointer <> nil

!Pointer impliceert dat een boolean een getal is en nil gelijkstaat aan false. In Delphi zou ik "if not Assigned(P) then" gebruiken :)
Waarom zou het impliceren dat een boolean een getal is?
IMO impliceert het alleen dat een pointer te evalueren is als boolean (wat IMO dus ook zo is).
Verder is het best gebruikelijk dat niet nul als true wordt gezien en nul als false.

[ Voor 11% gewijzigd door Olaf van der Spek op 15-05-2005 13:06 ]


Acties:
  • 0 Henk 'm!

  • Paul
  • Registratie: September 2000
  • Laatst online: 09:17
OlafvdSpek schreef op zondag 15 mei 2005 @ 13:06:
[...]

Waarom zou het impliceren dat een boolean een getal is?
Dat zeg je zelf de eerste zin die je erna typt :)
IMO impliceert het alleen dat een pointer te evalueren is als boolean
Een pointer is een getal, een verwijzing naar een geheugenadres, waardoor je dus een willekeurig getal kunt evalueren als boolean en dus een boolean ook een getal is.
Verder is het best gebruikelijk dat niet nul als true wordt gezien en nul als false.
Het is mischien gebruikelijk, maar geen wet of zo die alle (al dan niet al ontwikkelde) programmeertalen geldt. Met !P ga je er dus vanuit dat nil gelijk staat aan false, want eigenlijk wil je op nil testen, en helemaal niet op false :)

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Paul Nieuwkamp schreef op zondag 15 mei 2005 @ 13:41:
[...]

Dat zeg je zelf de eerste zin die je erna typt :)
[...]

Een pointer is een getal, een verwijzing naar een geheugenadres, waardoor je dus een willekeurig getal kunt evalueren als boolean en dus een boolean ook een getal is.
Een boolean hoeft helemaal geen getal te zijn. Het zegt imo niet dat een boolean een getal is, alleen dat een getal als boolean te gebruiken is (net als null en niet-null soms dus).

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Paul Nieuwkamp schreef op zondag 15 mei 2005 @ 13:41:
Dat zeg je zelf de eerste zin die je erna typt :)
Ik zie het nergens staan.
Een pointer is een getal, een verwijzing naar een geheugenadres, waardoor je dus een willekeurig getal kunt evalueren als boolean en dus een boolean ook een getal is.
Die afleiding kan ik niet volgen. Wat een pointer 'intern' is, is een implementatie detail. Of het nou met getallen of met touwtjes werkt.
Dat je een pointer kunt evalueren als boolean betekent niet dat een boolean (ook) een getal is.
Het is mischien gebruikelijk, maar geen wet of zo die alle (al dan niet al ontwikkelde) programmeertalen geldt. Met !P ga je er dus vanuit dat nil gelijk staat aan false, want eigenlijk wil je op nil testen, en helemaal niet op false :)
Wat bedoel je precies met 'gelijk staan aan'?
false zou best een (1) of 'f' kunnen zijn in een bepaalde programmeertaal en dan nog zouden !P en P gewoon kunnen werken (met dezelfde semantiek).

Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

C++:
1
2
3
4
#include "bestand1.cpp"
#include "bestand2.cpp"
#include "bestand3.cpp"
..enz..


en dan een makefile met alleen gcc -o executable mainbestand.cpp erin
Wat duurt dat compilen toch lang 8)7

[ Voor 12% gewijzigd door Radiant op 15-05-2005 14:01 ]


Acties:
  • 0 Henk 'm!

  • Paul
  • Registratie: September 2000
  • Laatst online: 09:17
Aangezien we nu verzanden in de discussie of een boolean nu wel of geen getal is, terwijl ik eigenlijk gewoon de imho ranzige cast van een pointer naar een boolean wil aantonen geef ik jullie bij deze gelijk: een boolean is niet per definitie een getal, en gaan we weer door met waar het over ging:
Michali schreef op zondag 15 mei 2005 @ 13:53:
[...]

Een boolean hoeft helemaal geen getal te zijn. Het zegt imo niet dat een boolean een getal is, alleen dat een getal als boolean te gebruiken is (net als null en niet-null soms dus).
Als je een getal als boolean kunt gebruiken geeft dat toch aan dat een boolean een (subset van) een getal is, ie er zit iets in die boolean waardoor je het met een getal kunt vergelijken?
Ofwel dat, of je bent iets totaal aan het verkrachten. Ja je kunt een kam ook gebruiken als hamer, maar dat is dus een ranzige oplossing. Als je een spijker in de muur wilt slaan moet je daarvoor een hamer gebruiken en geen kam, en als je wilt weten of een pointer nil is moet je daarop testen en geen boolean gebruiken -> ranzig gebruik van de mogelijkheden.
OlafvdSpek schreef op zondag 15 mei 2005 @ 13:55:
Die afleiding kan ik niet volgen. Wat een pointer 'intern' is, is een implementatie detail. Of het nou met getallen of met touwtjes werkt.
Dat je een pointer kunt evalueren als boolean betekent niet dat een boolean (ook) een getal is.
Nu loop je te mierenneuken over mijn aanname van het implementatiedetail pointer = getal. Stel: pointer = getal. Hoe wilde je het dan doen? Schijnbaar is in jouw programmeertaal ergens afgesproken dat nil gelijkstaat aan false, want anders zou je niet (succesvol) een boolean operator kunnen gebruiken op iets van het type pointer.
Wat bedoel je precies met 'gelijk staan aan'?
Wat denk je zelf? if (nil = false) then echo "Ze zijn gelijk", dat is immers waar je schijnbaar met !P op aan het testen bent.
false zou best een (1) of 'f' kunnen zijn in een bepaalde programmeertaal en dan nog zouden !P en P gewoon kunnen werken (met dezelfde semantiek).
Met !P ofwel de inverse van P zou je zomaar kunnen bedoelen: De pointer naar het adres waarvan alle bitjes precies andersom staan dan in P..
Dat iemand bij het ontwikkelen van de programmeertaal heeft besloten dat dat je een pointer kunt evalueren als boolean door op dat moment die pointer te vergelijken met nil is helemaal niet vanzelfsprekend, je zou net zo goed kunnen vergelijken met 1 van de andere 4 miljard mogelijke waarden.

Door !P te gebruiken beschouw je op dat moment P als boolean, waardoor hij van 4 miljard mogelijkheden er opeens nog maar 2 heeft, en is het aan de programmeur om maar in de specificaties van de programmeertaal om op te zoeken welke 3,999,999,998 mogelijkheden weg zijn gevallen.
Een pointer is geen boolean en dus vind ik !P ranzig.

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 14-09 17:26

Johnny

ondergewaardeerde internetguru

Wat me opvalt is dat in veel van deze voorbeelden veel Nederlandse bestandsnamen, commentaar en code wordt gebruikt, doen jullie dat in het echt ook?

Ik vind het namelijk vaak nogal ranzig om Nederlands te gebruiken in een op Engels gebaseerde programmeertaal.

Veel van mijn klasgenoten doen dat ook, ze vinden dat ze goed bezigf zijn omdat ze hun klassenamen netjes met hoofdletters beginnen, maarvervolgens geven ze al die klassen, methoden en variablen en commentaar een boeren-klompen-Nederlandse naam.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.

Pagina: 1 ... 5 ... 11 Laatste

Dit topic is gesloten.

Let op:
Uiteraard is het in dit topic niet de bedoeling dat andere users en/of topics aangehaald worden om ze voor gek te zetten. Lachen om je eigen code, of over dingen die je "wel eens tegengekomen bent" is prima, maar hou het onderling netjes.