[alg] Slechtste programmeervoorbeelden deel 2 Vorige deel Overzicht Volgende deel Laatste deel

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

Pagina: 1 ... 4 ... 11 Laatste
Acties:
  • 10.722 views sinds 30-01-2008

Acties:
  • 0 Henk 'm!

  • soulrider
  • Registratie: April 2005
  • Laatst online: 27-11-2017
Grijze Vos schreef op dinsdag 19 december 2006 @ 10:17:
[...]

Daar heeft het nog niet eens zo zeer mee te maken hoor. Een loop termineert bij een negatie van de guard (i < 100 is de guard), dus bij i >= 100, ofwel in dit geval, i = 100.
maar dan voert ie de loop ook niet meer uit ;)

maar hier is het de ';' op dezelfde regel als de for (er wordt niks gedaan tijdens de loop dus)
die ervoor zorgt dat er alleen 100<br> wordt geprint...

Acties:
  • 0 Henk 'm!

  • The Merovingian
  • Registratie: November 2004
  • Laatst online: 21-09-2010
Ik zit nu al een jaar op een erg 'leuk' project: ik heb een programma van ongeveer 100k regels overgenomen en moet daar ook support voor verlenen.
Nu is het geweldige ervan dat de vorige programmeur niet kon programmeren, werkelijk alles gaat fout. Het project is geheel geschreven in Delphi, de oudste code stamt uit 2000 en de kwaliteit van de nieuwere code is niet beter dan die oudste code.

Een leuk voorbeeld is dit:
Delphi:
1
2
3
4
5
6
if NumberOfStandards > 0 then begin
    SetLength(XVector, NumberOfStandards);
end
else begin
    Showmessage('NumberOfStandards < 0 ');
end;

Coolermaster S4000, 4400+ X2, 2GiB, XFX 7900GTX, Creative X-Fi, 1 TB, Dell 2405FPW: "Nahtlos."


Acties:
  • 0 Henk 'm!

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Showmessage voor debug doeleinden?

"The shell stopped unexpectedly and Explorer.exe was restarted."


Acties:
  • 0 Henk 'm!

  • The Merovingian
  • Registratie: November 2004
  • Laatst online: 21-09-2010
Nee, dat ook maar het gaat mij meer om de inhoud van de message...

[ Voor 11% gewijzigd door The Merovingian op 20-12-2006 15:43 ]

Coolermaster S4000, 4400+ X2, 2GiB, XFX 7900GTX, Creative X-Fi, 1 TB, Dell 2405FPW: "Nahtlos."


Acties:
  • 0 Henk 'm!

  • GoodspeeD
  • Registratie: April 2002
  • Laatst online: 12-09 13:29
The Merovingian schreef op woensdag 20 december 2006 @ 15:41:
Nee, dat ook maar het gaat mij meer om de inhoud van de message...
Het had natuurlijk <= moeten zijn. :D

Acties:
  • 0 Henk 'm!

  • pasta
  • Registratie: September 2002
  • Laatst online: 12-01 14:16

pasta

Ondertitel

Inderdaad, NumberOfStandards kan namelijk ook gewoon 0 zijn :)

Signature


Acties:
  • 0 Henk 'm!

  • The Merovingian
  • Registratie: November 2004
  • Laatst online: 21-09-2010
Juist. En het zijn altijd van dat soort kleine dingetjes die je volledig de keel uit gaan hangen op een gegeven moment. Ook leuk: het is common practice om .pas files te schrijven langer dan 1500 regels! En die bestaan dan uit één unit, en gebruiken ongeveer 20 public variabelen, en maken gebruik van zo'n 30 andere units. Gék word je d'r van.

Een ander punt dat ik wil aanhalen is toch wel het belang van goede variabelenamen, want als ik 400 regels verder ben in dezelfde method weet ik niet meer waar a, b, c, d, d_max, TmpStr, comp[a,b,c] ook alweer voor gebruikt wordt. Helemaal als a de nieuwe i is in bijna, maar niet alle, lussen.

Nog even aan toevoegen:
Delphi:
1
2
3
4
5
6
7
8
9
                            end;
                        end;
                    end;
                end;
            end;
        end;
    end;
end;
end.

wordt ook wat vervelend op een gegeven moment...

[ Voor 22% gewijzigd door The Merovingian op 20-12-2006 16:17 ]

Coolermaster S4000, 4400+ X2, 2GiB, XFX 7900GTX, Creative X-Fi, 1 TB, Dell 2405FPW: "Nahtlos."


Acties:
  • 0 Henk 'm!

  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 19-08 14:24

ZaZ

Tweakers abonnee

Ach, wees blij dat ie nog wel wat aan indenting heeft gedaan man. :+

Lekker op de bank


Acties:
  • 0 Henk 'm!

Verwijderd

Het eerste waar ik aan dacht - toen ik die code zag - was:
Delphi:
1
2
3
4
5
6
7
8
9
                     end;
                   end;end;
                 end;end;end;
               end;end;end;end;
             end;end;end;end;end;
           end;end;end;end;end;end;
         end;end;end;end;end;end;end;
       end;end;end;end;end;end;end;end;
                      end.

:X

offtopic:
[edit] Ik denk dat ik na dit incidentje en het feit dat ik al de hele dag naar Finse folkmuziek aan't luisteren ben, klaar ben voor de psychiatrie...

[ Voor 18% gewijzigd door Verwijderd op 20-12-2006 16:44 ]


Acties:
  • 0 Henk 'm!

  • The Merovingian
  • Registratie: November 2004
  • Laatst online: 21-09-2010
Nou, die indenting was in eerste instantie niet goed, de ene keer 5 spaties, dan weer 1 en dan weer 3, dus dan was er helemaal geen chocola van te maken. Maar dat hebben we even netjes opgelost met een goede code formatter.

Coolermaster S4000, 4400+ X2, 2GiB, XFX 7900GTX, Creative X-Fi, 1 TB, Dell 2405FPW: "Nahtlos."


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 00:05
Mag ik ook even wat PHP posten? Hij gaat ook naar thedailywtf denk ik ;)

PHP:
1
2
3
4
5
If (in_array($a, array('waarde'))
{
  $result_string = call_user_func("blaat_$a", $result_array, $b);
}
else {}

Wat is hier fout aan? O-)

[ Voor 7% gewijzigd door MBV op 03-01-2007 22:14 ]


Acties:
  • 0 Henk 'm!

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 10:55

Nick_S

++?????++ Out of Cheese Error

MBV schreef op woensdag 03 januari 2007 @ 22:11:
Mag ik ook even wat PHP posten? Hij gaat ook naar thedailywtf denk ik ;)

PHP:
1
2
3
4
5
If (in_array($a, array('waarde'))
{
  $result_string = call_user_func("blaat_$a", $result_array, $b);
}
else {}

Wat is hier fout aan? O-)
Mijn PHP is niet zo goed (zeg maar, nooit wat mee gedaan, maar kan het lezen) maar de variabele a controleren en b doorgeven? :S

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


Acties:
  • 0 Henk 'm!

  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

MBV schreef op woensdag 03 januari 2007 @ 22:11:
Mag ik ook even wat PHP posten? Hij gaat ook naar thedailywtf denk ik ;)

PHP:
1
2
3
4
5
If (in_array($a, array('waarde'))
{
  $result_string = call_user_func("blaat_$a", $result_array, $b);
}
else {}

Wat is hier fout aan? O-)
PHP:
1
2
if ($a == "waarde")
    $result_string = blaat_waarde($result_array, $b);

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 00:05
en wij maar zoeken waar blaat_waarde werd aangeroepen... :P

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 00:05
Nick_S schreef op woensdag 03 januari 2007 @ 22:20:
[...]

Mijn PHP is niet zo goed (zeg maar, nooit wat mee gedaan, maar kan het lezen) maar de variabele a controleren en b doorgeven? :S
if ($a == "blaat") then call function $a

oftewel: als a blaat is, moet je functie blaat aanroepen. Waarschijnlijk waren er ooit meer mogelijkheden voor blaat, althans, dat hoop ik :X

Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb vroeger eens een leuke gezien. Had iemand in TurboPascal (ongeveer) de volgende code staan:
code:
1
2
3
lF (a=1) THEN BEGIN
  doiets();
END;

Gaf een compilerfout op de eerste regel! Heb er wel een half uur (misschien langer) naar gestaard om het te vinden (uiteindelijk wel gelukt).

Helaas is het met het standaard GoT/FireFox font (in ieder geval op mijn scherm) nogal overduidelijk. Maar destijds was er op een klein fuzzy CRT scherm ongeveer een halve pixel verschil 8)

Acties:
  • 0 Henk 'm!

  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

MBV schreef op woensdag 03 januari 2007 @ 22:40:
en wij maar zoeken waar blaat_waarde werd aangeroepen... :P
Hehe ja, zou ik me heel goed voor kunnen stellen, dit gaat niet alleen voor PHP op, iets soortgelijks zou je ook kunnen doen in Java met de reflection API.

Acties:
  • 0 Henk 'm!

Verwijderd

En nog een leuke: je wil in embedded C programming een (integer) geheugenadres in een pointer zetten. Dit kan op een 'juiste' manier (een waarde optellen bij een pointer geeft een pointer, een waarde aftrekken van een pointer geeft een integer, conversie dus door NULL+x of x-0 met de juiste casts om byte-sized pointers te garanderen), maar die is nogal omslachtig in veel gevallen, dus wordt vaak gewoon het integer adres naar een pointer gecast.

Maar ja, dan zegt vervolgens je code-checking tool dat je een 'gevaarlijke' cast doet (en het code checking tool moet met 0 fouten komen voor de code geaccepteerd wordt), en zegt een coding standard dat je (in ieder geval in dit geval) geen integers expliciet naar pointers mag casten. Dus wat doe je dan?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
typedef union
{
  unsigned int u;
  short *p;
} TYPE_MIX_UNION;

...

TYPE_MIX_UNION moeilijk;
moeilijk.u=0x12345678;

...

short register_waarde=read_register(moeilijk.p);


En dan als dit wat verder uit elkaar staat maar zoeken waar die moeilijk.p toch gezet wordt en hoe het kan dat de code uiteindelijk wel werkt.

Dit is in ieder geval een van de redenen waarom voor mij een 'coding standard' altijd alleen maar 'guidelines' bevat (sommige wat meer strikt dan andere, maar voor nagenoeg iedere regel is wel een situatie te bedenken waar hij meer in de weg zit dan hij helpt). In dit geval lijkt me beter om toch maar een expliciete cast te gebruiken, bijvoorbeeld op deze manier zodat het adres ook nog een duidelijke naam krijgt:
code:
1
2
3
4
5
#define REG_ADDR ((short *)0x12345678)

...

short register_waarde=read_register(REG_ADDR);

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 00:05
prototype schreef op woensdag 03 januari 2007 @ 22:52:
[...]

Hehe ja, zou ik me heel goed voor kunnen stellen, dit gaat niet alleen voor PHP op, iets soortgelijks zou je ook kunnen doen in Java met de reflection API.
ach ja, die hele codebase is een grote puinhoop. 2 grote puinhopen: 1 waar niet over na is gedacht, gewoon echo-statements tussen de 'reken'-code, en 1 waar wel over na is gedacht, maar wat zo slecht is uitgewerkt dat je er ook niet mee kan werken :X. De andere 2 stukken code zijn 'redelijk te doen', als in, niet veel slechter dan ik het zou schrijven :P

Oh ja, ook zoiets leuks: die eerste puinhoop die evolueert naar iets met templates, objecten enzo. Code die tussen template/object-georienteerd en chaos inhangt is NIET leuk ;)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12-09 15:22

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op woensdag 03 januari 2007 @ 23:01:
En nog een leuke: je wil in embedded C programming een (integer) geheugenadres in een pointer zetten. Dit kan op een 'juiste' manier (een waarde optellen bij een pointer geeft een pointer, een waarde aftrekken van een pointer geeft een integer
Euh, een waarde aftrekken van een pointer geeft ook een pointer hoor. Het is een beetje vaag als ptr - 3 een int oplevert terwijl ptr + -3 een pointer is. Beide doen natuurlijk hetzelfde, namelijk een pointer teruggeven die naar het 3e element vóór ptr wijst. Als je een pointer van een pointer aftrekt, dàn krijg je een integer (want dan wil je het verschil in elementen weten) ;)

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!

  • The Merovingian
  • Registratie: November 2004
  • Laatst online: 21-09-2010
Ik kwam zojuist een monsterlijk stukje code tegen in het programma waar ik aan werk:

Delphi:
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
                    c := 4;
                    for a := 1 to Max_File_Nr do begin
                        if (opm_monsternr[a] = 'L')
                            and (PrepFactor_opm[a] <> 'F')
                            and (matrix_char[a] in ['A', 'L', 'W', 'P', 'G', 'g', 'a', 'b']) then begin
                            if (type_monster[a] = '')
                                or (type_monster[a] = 'C') then begin
                                for b := 1 to b_max do begin
                                    if rapp_bit[a, b] in ['J', '1', '2', 'C'] then begin
                                        TmpRapp := false;


De code werkt wel, maar zoiets valt niet te debuggen...

[ Voor 0% gewijzigd door The Merovingian op 05-01-2007 10:05 . Reden: regelnummer ]

Coolermaster S4000, 4400+ X2, 2GiB, XFX 7900GTX, Creative X-Fi, 1 TB, Dell 2405FPW: "Nahtlos."


Acties:
  • 0 Henk 'm!

  • Paul
  • Registratie: September 2000
  • Laatst online: 12-09 20:09
The Merovingian schreef op vrijdag 05 januari 2007 @ 10:04:
De code werkt wel, maar zoiets valt niet te debuggen...
Altijd leuk ja.. 300 dingen in een if, liefst iets met arrays en magic constants inderdaad, zonder een regel commentaar...

Herschrijven die hap :P
Delphi:
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
procedure Foo;

  { TODO: Betere naam verzinnen. Geen idee wat dit precies controleert }
  /// Controleert of blablabla...
  function Check1(FileNr: Integer): Boolean;
  begin
    // Magic constants! Zie \\fileserver\documentatie\wtfware\constants.txt vanaf regel X voor uitleg
    Result := ((opm_monsternr[FileNr] = 'L') and (PrepFactor_opm[FileNr] <> 'F') and (matrix_char[FileNr] in ['A', 'L', 'W', 'P', 'G', 'g', 'a', 'b']));
  end;

  { TODO: Betere naam verzinnen. Geen idee wat dit precies controleert }
  /// Controleert of blablabla...
  function Check2(FileNr: Integer): Boolean;
  begin
    // Magic constants! Zie \\fileserver\documentatie\wtfware\constants.txt vanaf regel Y voor uitleg
    Result := ((type_monster[FileNr] = '') or (type_monster[FileNr] = 'C'));
  end;

  { TODO: Betere naam verzinnen. Geen idee wat dit precies controleert }
  /// Controleert of blablabla...
  function Check3(FileNr, B: Integer): Boolean;
  begin
    // Magic constants! Zie \\fileserver\documentatie\wtfware\constants.txt vanaf regel Z voor uitleg
    Result := (rapp_bit[FileNr, B] in ['J', '1', '2', 'C']);
  end;

var FileNr, B: Integer;
begin
  //c := 4; Hint: Value assigned to 'c' never used
  for FileNr := 1 to MAX_FILE_NR do
    begin
      if Check1(FileNr) and Check2(FileNr)
        begin
          for B := 1 to MAX_B do
            begin
              if Check3(FileNr, B) then
                begin
                  DoeIets();

En dan nog zijn die constantes lelijk :P

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


Acties:
  • 0 Henk 'm!

  • Icelus
  • Registratie: Januari 2004
  • Niet online
Vond deze wel mooi:
PHP:
1
2
3
4
5
6
7
if ( $x ) {
  // relevante code
} else {
  // nog meer relevante code
} else {
  assert( false );
}

Developer Accused Of Unreadable Code Refuses To Comment


Acties:
  • 0 Henk 'm!

  • apa
  • Registratie: April 2001
  • Laatst online: 04-08 11:32

apa

Run Forest, ruuuuuuuuuunnnnn!!

In een applicatie waar we hier met een heel team (8 man) een jaar aan gewerkt hebben, moesten een aantal delen code tijdelijk inactief gezet worden (tot een latere release):
Visual Basic:
1
2
3
If True = False Then
   ...[some code]...
End if

Hoe het dan wel moet:
Visual Basic:
1
'...[some code]...

PC: R5-2600X | X370-Pro | 2x8GB | 960Pro 512GB | WD 4TB | GTX 660 | Eizo CX240 | Steinberg UR22MkII | JBL LSR305


Acties:
  • 0 Henk 'm!

  • rrrandy
  • Registratie: Juli 2005
  • Laatst online: 27-06 13:00
apa schreef op vrijdag 05 januari 2007 @ 15:37:
In een applicatie waar we hier met een heel team (8 man) een jaar aan gewerkt hebben, moesten een aantal delen code tijdelijk inactief gezet worden (tot een latere release):
Visual Basic:
1
2
3
If True = False Then
   ...[some code]...
End if

Hoe het dan wel moet:
Visual Basic:
1
'...[some code]...
Om tot die oplossing te komen is er toch zeker over nagedacht. Maakt het ook wel weer stijlvol :P

Acties:
  • 0 Henk 'm!

  • Puntslash
  • Registratie: December 2000
  • Niet online
Een vriend van mij had een website gemaakt voor een winkel, waarbij de winkelier zijn openingstijden kon wijzigen. Toen hij bij me kwam om te vragen of dit ontwerp een beetje goed was moest ik wel even lachen :)

Afbeeldingslocatie: http://puntslash.nl/stuff/database-ontwerp.jpg

Acties:
  • 0 Henk 'm!

Verwijderd

apa schreef op vrijdag 05 januari 2007 @ 15:37:
In een applicatie waar we hier met een heel team (8 man) een jaar aan gewerkt hebben, moesten een aantal delen code tijdelijk inactief gezet worden (tot een latere release):
Visual Basic:
1
2
3
If True = False Then
   ...[some code]...
End if

Hoe het dan wel moet:
Visual Basic:
1
'...[some code]...
misschien nog niet eens zo heel erg gek. Niet dat het een mooie oplossing is, maar code wegcommentariseren is in feite niet minder vervelend. Eigenlijk zou je voor het wegcommentariseren van code iets anders moeten hebben (met een ander kleurtje) dan voor het schrijven van commentaar.
Feit blijft dat het zonder highlighting in kleurtjes vervelend blijft om code te moeten lezen wat vol staat met inactieve code.

Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 14:53

Dido

heforshe

apa schreef op vrijdag 05 januari 2007 @ 15:37:
In een applicatie waar we hier met een heel team (8 man) een jaar aan gewerkt hebben, moesten een aantal delen code tijdelijk inactief gezet worden (tot een latere release):
Visual Basic:
1
2
3
If True = False Then
   ...[some code]...
End if
Toch is daar wat voor te zeggen. Het volledig commenten van de code kan tijdrovend zijn (en anders het uncommenten wel). Het verdient wel aanbeveling e.e.a. te documenteren (mbv duidelijke tags of zo :) )

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Dido schreef op vrijdag 05 januari 2007 @ 15:55:
[...]

Toch is daar wat voor te zeggen. Het volledig commenten van de code kan tijdrovend zijn (en anders het uncommenten wel). Het verdient wel aanbeveling e.e.a. te documenteren (mbv duidelijke tags of zo :) )
Persoonlijk zou ik er toch niet voor gaan; je released in principe (inactieve) code die met een simpele aanpassing in een hex-editor kan worden geactiveerd waardoor je gebruikers de software (ongewild/onbetaald/illegaal/whatever) zouden kunnen "upgraden". (Uiteraard zou een beetje compiler dit zowieso niet eens meecompilen naar de uiteindelijke binary, maar dat doet VB6 (als ik me niet vergis) wel). << Jup, zojuist gechecked ;)

Waarom gebruik je niet gewoon compiler directives? Die kent VB6 ook ;)

Visual Basic 6:
1
2
3
4
5
6
7
8
9
10
11
12
13
#Const Version = "1.0"

Private Sub SomeSub(Foo as String, Bar as Integer)
  #If Version = "1.0" then
    ...
    'Code hier
    ...
  #Else
    ...
    'Code hier
    ...
  #End If
End Eub

[ Voor 26% gewijzigd door RobIII op 05-01-2007 16:29 ]

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!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 11:37

Robtimus

me Robtimus no like you

Icelus schreef op vrijdag 05 januari 2007 @ 15:06:
Vond deze wel mooi:
PHP:
1
2
3
4
5
6
7
if ( $x ) {
  // relevante code
} else {
  // nog meer relevante code
} else {
  assert( false );
}
Is die code geldig?? Ik weet wel dat compilers van veel talen hier echt wel errors over geven.

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


Acties:
  • 0 Henk 'm!

  • apa
  • Registratie: April 2001
  • Laatst online: 04-08 11:32

apa

Run Forest, ruuuuuuuuuunnnnn!!

Verwijderd schreef op vrijdag 05 januari 2007 @ 15:53:
misschien nog niet eens zo heel erg gek. Niet dat het een mooie oplossing is, maar code wegcommentariseren is in feite niet minder vervelend.
De code die je zo ongebruikt laat wordt mee gecheckt tijdens de compilatie. Als een stuk code daarin een variabele gebruikt die je weghaalt, dan krijg je een compilatiefout... Het is trouwens zo dat ik op die vreemde werkwijze gevallen ben. Door het niet in commentaar te zetten, komt dat stuk code ook in de uiteindelijke binary en wordt het ook in het RAM geladen bij het uitvoeren van de applicatie. Niet erg efficiënt m.a.w..
Dido schreef op vrijdag 05 januari 2007 @ 15:55:
Toch is daar wat voor te zeggen. Het volledig commenten van de code kan tijdrovend zijn (en anders het uncommenten wel). Het verdient wel aanbeveling e.e.a. te documenteren (mbv duidelijke tags of zo :) )
Mjah... In Visual Studio heb je wel een knop in de toolbar waarmee je ineens een hele selectie in commentaar kan zetten of een geselecteerde commentaar kan "uncommenten": zó erg is dat dus niet.

PC: R5-2600X | X370-Pro | 2x8GB | 960Pro 512GB | WD 4TB | GTX 660 | Eizo CX240 | Steinberg UR22MkII | JBL LSR305


Acties:
  • 0 Henk 'm!

Verwijderd

Dido schreef op vrijdag 05 januari 2007 @ 15:55:
[...]

Toch is daar wat voor te zeggen. Het volledig commenten van de code kan tijdrovend zijn (en anders het uncommenten wel). Het verdient wel aanbeveling e.e.a. te documenteren (mbv duidelijke tags of zo :) )
Wat bedoel je daarmee? Wat is er tijdrovend aan het (un)commenten van code? Als je een behoorlijke editor gebruikt is dat met 1 toetscombinatie gebeurt, dus ik zie het punt niet...

Acties:
  • 0 Henk 'm!

  • bobo1on1
  • Registratie: Juli 2001
  • Laatst online: 18-05 17:57
Ik heb ooit dit eens weten te maken:

C:
1
2
3
4
5
6
7
8
if (!((getal / 100) % 10))
{
    ietsdoen();
}
else
{
    ietsanders();
}


Toen ik dit 3 weken later las had ik geen flauw idee meer wat het nou precies moest doen en omdat ik er geen comments bij had gezet heeft het me een tijd gekost om daar achter te komen.

Het komt uit een programma wat getallen omzet in nederlandse notatie:
code:
1
2
3
4
5
6
Voer een getal in of x om te stoppen:
2068
---> twee duizend acht en zestig <---
Voer een getal in of x om te stoppen:
2168
---> een en twintig honderd acht en zestig <---


Het stukje code is dus om te controleren of er een duizendtal of honderdtal geprint moet worden, op zich is het wel goed bedacht alleen is het zonder comments volstrekt onleesbaar.

Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.


Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 11:37

Robtimus

me Robtimus no like you

Valt wel mee.
(getal / 100) % 10 is gewoon je honderdtal. Als dat niet 0 is (! operator) doe je iets, anders iets anders. Maar je hebt gelijk, een regel commentaar kan hier zeker geen kwaad ;)

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


Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 14:53

Dido

heforshe

Verwijderd schreef op zaterdag 06 januari 2007 @ 14:29:
Wat bedoel je daarmee? Wat is er tijdrovend aan het (un)commenten van code? Als je een behoorlijke editor gebruikt is dat met 1 toetscombinatie gebeurt, dus ik zie het punt niet...
Het zal vast aan de editor liggen, maar ik ken er een paar die dan alles uncommenten. Ook wat al gecomment was binnen de gecommente code, dus. En daar zit je niet op te wachten :P

En niet iedereen heeft een vrije keus wat betreft editors :P

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • bobo1on1
  • Registratie: Juli 2001
  • Laatst online: 18-05 17:57
IceManX schreef op zaterdag 06 januari 2007 @ 16:10:
Valt wel mee.
(getal / 100) % 10 is gewoon je honderdtal. Als dat niet 0 is (! operator) doe je iets, anders iets anders. Maar je hebt gelijk, een regel commentaar kan hier zeker geen kwaad ;)
Omdat je mijn post gelezen hebt weet je dat, je moet je eens voorstellen dat je bent vergeten waar het überhaupt voor dient en dat je aan de hand van de expressie moet achterhalen wat het doet.

Ik had namelijk helemaal nergens comments geplaatst :+

Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.


Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 11:37

Robtimus

me Robtimus no like you

bobo1on1 schreef op zaterdag 06 januari 2007 @ 16:31:
[...]


Omdat je mijn post gelezen hebt weet je dat, je moet je eens voorstellen dat je bent vergeten waar het überhaupt voor dient en dat je aan de hand van de expressie moet achterhalen wat het doet.

Ik had namelijk helemaal nergens comments geplaatst :+
Zelfs zonder je post zou ik dat wel weten hoor. Dat heet gewoon de statement lezen, deze is nog vrij eenvoudig.
Waarom je het doet is hier dan nog niet uit op te maken, maar het is toch wel duidelijk dat je een onderscheidt maakt op honderdtallen: wel of niet 0.

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


Acties:
  • 0 Henk 'm!

  • Yo-han
  • Registratie: December 2001
  • Laatst online: 18-08 20:16

Yo-han

nope.

Deze komt in mijn lijstje met favoriete code voorbeelden. Zit hier wat gemelde bug te repareren en kom hier opeens dit stukje code tegen, de erfenis van een voormalig werknemer hier:

PHP:
1
2
3
4
5
6
7
$db->Execute ('DELETE FROM messages_read
               WHERE messageID = '.$_GET['mid'].'
               AND userID = '.$g_oUser->GetId());

$db->Execute ('INSERT INTO messages_read
        SET messageID = '.$_GET['mid'].',
        userID = '.$g_oUser->GetId());


Nu hoopte ik nog stiekem in de messages_read tabel een kolom createDate met als default waarde now aan te treffen, een read flag of wat er dan ook maar op mag lijken... maar:

SQL:
1
2
3
4
CREATE TABLE `messages_read` (
  `messageID` int(11) default NULL,
  `userID` int(11) default NULL
) 


:S

Acties:
  • 0 Henk 'm!

  • Paul
  • Registratie: September 2000
  • Laatst online: 12-09 20:09
Beetje omslachtige/dure manier om te zorgen dat een record met die waardes maar 1x voorkomt :P
En waarom mogen die waardes null zijn?

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


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Tja, hele volkstammen definieren zooi standaard met allow null, terwijl je eigenlijk altijd not null moet definieren tenzij echt een null value mogelijk moet zijn. Vaak is het een beetje een luie houding: geen zin om uit te zoeken of null values nodig zijn -> laat ik het maar toestaan.

{signature}


Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 11:37

Robtimus

me Robtimus no like you

1) beide queries missen een sluitende ' na de user id, maar dat kan verkeerd overtypen zijn
2) hoezo SQL injection?

Als gebruiker kun je zo ervoor zorgen dat $_GET['mid'] het volgende is: 1' OR '1' = '1
Gevolg:
'DELETE FROM messages_read WHERE messageID = '1' OR '1' = '1' AND userID = 'xxx'

Aangezien '1' = '1' altijd geldt worden dus alle records voor die user verwijderd. Ouch!

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


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Die SQL injection mogelijkheid is idd nog veel erger.
1) beide queries missen een sluitende ' na de user id, maar dat kan verkeerd overtypen zijn
In de query staan uiteindelijk helemaal geen single quotes hoor. B) Zoals het hoort met int values. :)

{signature}


Acties:
  • 0 Henk 'm!

  • Yo-han
  • Registratie: December 2001
  • Laatst online: 18-08 20:16

Yo-han

nope.

IceManX schreef op donderdag 11 januari 2007 @ 12:23:
1) beide queries missen een sluitende ' na de user id, maar dat kan verkeerd overtypen zijn
2) hoezo SQL injection?

Als gebruiker kun je zo ervoor zorgen dat $_GET['mid'] het volgende is: 1' OR '1' = '1
Gevolg:
'DELETE FROM messages_read WHERE messageID = '1' OR '1' = '1' AND userID = 'xxx'

Aangezien '1' = '1' altijd geldt worden dus alle records voor die user verwijderd. Ouch!
1. klopt, komt door overtypen
2. komt ook door het overtypen, even de Qstr (Quote string) functie die om de $_GET vars stond eruit gehaald. Maar was niet belangrijk voor het geen waarop ik doelde.

Het is gewoon achterlijk dat je gelezen berichten in een aparte tabel dumpt (zeker nog nooit van een flag gehoord) en dan DELETE , INSERT doet... REPLACE INTO? Geen indexen, mag null zijn een en al crap.

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Ook leuk dat die tabel blijkbaar geen primary key of andere indexen heeft. :P

'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!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 00:05
Yo-han schreef op donderdag 11 januari 2007 @ 10:41:
Deze komt in mijn lijstje met favoriete code voorbeelden. Zit hier wat gemelde bug te repareren en kom hier opeens dit stukje code tegen, de erfenis van een voormalig werknemer hier:

PHP:
1
2
3
4
5
6
7
$db->Execute ('DELETE FROM messages_read
               WHERE messageID = '.$_GET['mid'].'
               AND userID = '.$g_oUser->GetId());

$db->Execute ('INSERT INTO messages_read
        SET messageID = '.$_GET['mid'].',
        userID = '.$g_oUser->GetId());


Nu hoopte ik nog stiekem in de messages_read tabel een kolom createDate met als default waarde now aan te treffen, een read flag of wat er dan ook maar op mag lijken... maar:

SQL:
1
2
3
4
CREATE TABLE `messages_read` (
  `messageID` int(11) default NULL,
  `userID` int(11) default NULL
) 


:S
Zeg, zet jij eens nuttig commentaar in je code.
PHP:
1
2
3
4
         /* REMOVED VERY VERY VERY STRANGE CODE...
....
*/
// REPLACE VERY VERY VERY STRANGE CODE WITH NICE CODE //

en dankzij subversion mag je het direct weggooien, hoef je dit soort rariteiten niet tot in eeuwigheid in commentaar te laten voortleven... :P

En dit is dan nog van de minder erge medewerker, ik dacht dat het van die medewerker was die baas is geworden...

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

code:
1
2
3
4
5
            '\\ If the atom is already set, free it...
            If mhAtom > 0 Then
                mhAtom -= 1
            End If
            mhAtom += 1


:? De enige locatie waar mhAtom word gewijzigd.... Dit is een stukje voorbeeld code die gebruikt word tijdens de uitleg van een component.

[ Voor 27% gewijzigd door LuCarD op 11-01-2007 15:17 ]

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • Vaan Banaan
  • Registratie: Februari 2001
  • Niet online

Vaan Banaan

Heeft ook Apache ontdekt

C:
1
2
3
4
5
6
7
8
if (!((getal / 100) % 10))
{
    ietsdoen();
}
else
{
    ietsanders();
}
IceManX schreef op zaterdag 06 januari 2007 @ 16:10:
Valt wel mee.
(getal / 100) % 10 is gewoon je honderdtal. Als dat niet 0 is (! operator) doe je iets, anders iets anders. Maar je hebt gelijk, een regel commentaar kan hier zeker geen kwaad ;)
Volgens mij is het: Als dat (wel) 0 is doe iets, anders iets anders.

500 "The server made a boo boo"


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 00:05
ach ja, ==0 was netter geweest :)

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 00:05
Gelukkig leest hier niemand TDWTF ;)
(Enum true, false, FileNotFound is daar een keer langs geweest, en wordt eindeloos herhaald in de reacties).

De échte WTF is natuurlijk dat het niveau van de fouten hier een stuk lager is dan op TDWTF :P

[ Voor 74% gewijzigd door MBV op 11-01-2007 18:12 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12-09 15:22

.oisyn

Moderator Devschuur®

Demotivational Speaker

MBV schreef op donderdag 11 januari 2007 @ 18:11:
Gelukkig leest hier niemand TDWTF ;)
Jawel hoor, alleen niet de reacties, want die zijn meestal lame :)

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!

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 17:22
MBV schreef op donderdag 11 januari 2007 @ 18:11:
Gelukkig leest hier niemand TDWTF ;)
(Enum true, false, FileNotFound is daar een keer langs geweest, en wordt eindeloos herhaald in de reacties).
De échte WTF is natuurlijk dat het niveau van de fouten hier een stuk lager is dan op TDWTF :P
:? Heb je die van vandaag wel gezien met het geklooi met Integer en int? En in de reacties kunnen sommige mensen al niet eens het verschil zien tussen het doorgeven van een reference by value (oftewel van de reference word een kopie gemaakt en dus gewoon call by value) aan een functie en een call by reference en dan heb jij het over niveau? :P.

[ Voor 5% gewijzigd door Jaap-Jan op 11-01-2007 18:44 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Modbreak:Ik heb wat posts afgesplitst naar \[C++/Alg] Over booleans en integers. :)

'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!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 00:05
Jaap-Jan schreef op donderdag 11 januari 2007 @ 18:43:
[...]


[...]
:? Heb je die van vandaag wel gezien met het geklooi met Integer en int? En in de reacties kunnen sommige mensen al niet eens het verschil zien tussen het doorgeven van een reference by value (oftewel van de reference word een kopie gemaakt en dus gewoon call by value) aan een functie en een call by reference en dan heb jij het over niveau? :P.
sorry, ik moest even een 'echte' WTF verzinnen, in TDWTF stijl, en kon geen betere WTF verzinnen (wat een WTF op zich is natuurlijk :+)

En dat Integer-geklooi is onhandig, maar werkt uiteindelijk wel, toch? :)

[ Voor 5% gewijzigd door MBV op 12-01-2007 14:01 ]


Acties:
  • 0 Henk 'm!

  • bobo1on1
  • Registratie: Juli 2001
  • Laatst online: 18-05 17:57
Vaan Banaan schreef op donderdag 11 januari 2007 @ 16:27:
C:
1
2
3
4
5
6
7
8
if (!((getal / 100) % 10))
{
    ietsdoen();
}
else
{
    ietsanders();
}


[...]

Volgens mij is het: Als dat (wel) 0 is doe iets, anders iets anders.
Mijn stelling van de slechte leesbaarheid heeft zichzelf bewezen :)

Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.


Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 11:37

Robtimus

me Robtimus no like you

Deze week bezig geweest SQL Server 2000 DTSen om te zetten naar SQL Server 2005 SSIS packages. Via SQL Management Studio geexporteerd naar file en dan die aangepast.

Zo kwam ik 1 hele leuke DTS tegen. Hij bestaat uit 69 verschillende stappen, waaronder ruim 40 in de volgende vorm:

UPDATE tabel SET veld1 = waarde1 WHERE iets

UPDATE tabel SET veld2 = waarde2 WHERE zelfde iets

...

UPDATE tabel SET veld40 = waarde40 WHERE zelfde iets


Al met al kan de hele DTS worden ingekort tot hooguit 7 stappen (dit verhaal wordt voor andere WHERE clauses nog eens netjes herhaald) door gewoon alle updates in 1 statement te gooien:

UPDATE tabel SET veld1 = waarde1, veld2 = waarde2, ..., veld40 = waarde40 WHERE iets

Helaas toch maar niet gedaan aangezien deze DTS zorgt voor het overgrote deel van de rapportage (lees: inkomsten), en ik het liever niet per ongeluk wil breken.

[ Voor 4% gewijzigd door Robtimus op 21-01-2007 22:25 ]

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


Acties:
  • 0 Henk 'm!

  • den 150
  • Registratie: Oktober 2002
  • Niet online
Ik ken de achterliggende code niet, maar google geeft bij mij de volgende ads weer voor dit topic:
Verleid iedere vrouw
Mijn trukendoos leert je precies
wat te zeggen tegen mooie vrouwen.

Mooie Aziatische Vrouw
Aziatische vrouwen voor dating en
huwelijk. Schrijf je nu gratis in.

TradeStation Systems
Create a great TradeStation system?
Sell it on our site.

Vrouwen
Leuke single vrouwen en mannen
Bekijk de foto's. Schrijf Gratis in

Hoe je in hemelsnaam op basis van slechte codevoorbeelden op dating sites adverdenties komt is mij een raadsel :p

Acties:
  • 0 Henk 'm!

Verwijderd

Google is veranderd, het zijn tegenwoordig personalized ads, aan de hand van jou surfgedrag worden de advertenties bepaalt. Voor jou komt het er dus grofweg op neer dat 75% van je bezochte sites datingsites zijn.

.. Slightly offtopic ..

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12-09 15:22

.oisyn

Moderator Devschuur®

Demotivational Speaker

:D :D

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!

  • pietje63
  • Registratie: Juli 2001
  • Nu online

pietje63

RTFM

den 150 schreef op zondag 21 januari 2007 @ 22:51:
Hoe je in hemelsnaam op basis van slechte codevoorbeelden op dating sites adverdenties komt is mij een raadsel :p
In een post vlak boven je staat het woord 'update' een paar keer.. En datingsite kopen waarschijnlijk aardig wat advertenties in, en Google weet niet wanneer ze die anders moet verkopen.

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 11:37

Robtimus

me Robtimus no like you

De prutsende voormalige werknemer is weer bezig geweest.

Pseudo code:
Visual Basic:
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
RecSet.Open "Table", Conn, ...

While RecSet.EOF
    If RecSet("iets") = 68 Then
        Voor 15 velden, RecSet(veld) = vervang NULL of non-numeric met 0, anders RecSet(veld) zelf
        RecSet.Update
    End If
    RecSet.MoveNext
Wend

RecSet.MoveFirst

While RecSet.EOF
    If RecSet("iets") = 68 Then
        Voor dezelfde 15 velden, als RecSet(veld) niet NULL is vervang dan alle comma's door punten
        RecSet.Update
    End If
    RecSet.MoveNext
Wend

RecSet.MoveFirst

While RecSet.EOF
    If RecSet("iets") = 68 Then
        Voor dezelfde 15 velden, als RecSet(veld) niet NULL is verwijder dan alle niet-getallen en niet-punten uit RecSet(veld)
        RecSet.Update
    End If
    RecSet.MoveNext
Wend

RecSet.Close
De fouten op een rijtje:
- De tabel bevat ruim 770.000 records. Daarvan voldoen er maar zo'n 33.000 aan de guard in de If statement.
- Er wordt 3x over exact dezelfde record set geitereerd.
- Na de eerste iteratie zijn geen van de velden meer NULL. Sterker nog, ze zijn of een getal of 0.
- Na de tweede iteratie zijn alle velden getallen met punten ipv comma's. In de tabel komen geen hoge machten (E10 etc) of negatieve getallen voor. Met andere woorden, de hele stap is overbodig.

Ik heb het aangepast, nog wel alle drie de stappen maar dan in 1 loop. Ook maar meteen al op database niveau gefilterd.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
RecSet.Open "SELECT * Table WHERE iets = 68", Conn, ...

While RecSet.EOF
        Voor 15 velden:
            vValue = RecSet(veld i) ' Type Variant om NULLs goed aan te kunnen
            vValue wordt 0 als hij NULL of non-numeric is
            Vervang alle comma's uit vValue door punten
            Verwijder alle niet-getallen en niet-punten uit vValue
            RecSet(veld i) = vValue
        RecSet.Update
    End If
    RecSet.MoveNext
Wend

RecSet.Close
Al met al van 35-45 minuten naar zo'n 6 minuten gegaan qua executietijd.

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


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Als je op 'DB niveau filtert' kan je wellicht ook wel iets beters bedenken dan * selecteren? ;)

{signature}


Acties:
  • 0 Henk 'm!

  • tyrion70
  • Registratie: December 2006
  • Laatst online: 14-05-2021
Kom net deze topic voor het eerst tegen.. Het mooiste stukje code dat ik bij ons ooit ben aangetroffen (en nog steeds wel eens aangehaald wordt) is het volgende

P.S. taal is Progress 4GL
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
IF a=1 THEN DO:
  IF b=1 THEN DO:
    x=1.
  ELSE:
    x=2.
  END.
ELSE DO:
  IF b=1 THEN DO:
    x=1.
  ELSE:
    x=2.
  END.
END.
x=1.


Het originele stukje was (helaas) nog net ietsje langer (geloof 84 regels :() Voortaan lees ik code van beneden naar boven indien het door deze collega geschreven is :)

Doe maar gek! Anderen doen al gewoon genoeg :P


Acties:
  • 0 Henk 'm!

  • kasper_vk
  • Registratie: Augustus 2002
  • Laatst online: 08-04 20:48
Deze kwam ik om m'n werk (echt waar ;)) tegen, tussen een x-tal andere tenenkrommende pogingen om 'robuuste code' te schrijven:
C#:
1
2
rblEigenRisico.SelectedValue =
this.Verzekerde.EigenRisico.ToString() == string.Empty ? "0" : ... \\etc.

En dan wetende dat Verzekerde.EigenRisico al sinds dag 1 een int is...

Ik ben benieuwd hoe deze (oud-)collega het voor elkaar kreeg om een int te converteren naar een string en daar dan string.Empty uit te laten komen :?

The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny...'


Acties:
  • 0 Henk 'm!

  • Paul
  • Registratie: September 2000
  • Laatst online: 12-09 20:09
Ik zou zo niet weten wat de beste manier is om 3000 instellingen van je programma's op te slaan, ik weet wel dat wij een van de slechtste manieren gebruiken :'(

1 tabel, per programma 1 record (2 als er velden te kort kwamen, maar pas nadat ALLES gebruikt was, of het veldtype nu toepasselijk is of niet...).
hoe zo'n record eruit ziet? Nou...
  • 1x smallint -> programmanummer (naam: record)
  • 15x string van 20 lang (naam: veld1..veld15)
  • 3x string 30 lang (veld16..veld18)
  • 2x string 35 lang (veld... je snapt hem denk ik wel)
  • 10x float
  • 10x boolean
  • 1x string 254
  • 10x string 1
  • 20x string 254
En dan:
  • Integers? In de floatvelden.
  • 50 boolean waardes nodig? Met 0-en en 1-en in een stringveld gecodeerd, met hardcoded indexen
  • Welk veld hoord bij welke instelling/wat zou het moeten doen? Staat in een (half ingevuld) Word-documentje ergens op de fileserver
  • Default waardes? Deels bij het aanmaken van de tabel, deels bij het opvragen van de waarde (if null then...), deels bij het opvragen van desbetreffenden tabblad van het instellingen-programma...
  • Primary keys? Floats. De prutser die de eerste progsels gemaakt heeft had nog nooit van integervelden (of autoinc) gehoord...
  • Referential integrity? In een dBase IV .DBF-bestand?? 75% in de code dus (de overige 25% ontbreekt)
  • Autoinc? Handmatig... Index = nummer -> tabel.last -> nummer = nummer + 1. Race conditie dus... Gelukkig maar 1,3 concurrent gebruiker, die (meestal :X) niet tegelijkertijd dingen toevoegen. Veel meer lukt ook niet, dan stort de BDE in...
AAAARGH !!!!

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


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 12-09 23:07
apa schreef op vrijdag 05 januari 2007 @ 15:37:
In een applicatie waar we hier met een heel team (8 man) een jaar aan gewerkt hebben, moesten een aantal delen code tijdelijk inactief gezet worden (tot een latere release):
Visual Basic:
1
2
3
If True = False Then
   ...[some code]...
End if

Hoe het dan wel moet:
Visual Basic:
1
'...[some code]...
Ik vind dit eigenlijk ook nog zo raar niet .... Commenten van code vind ik zelf maar vies (ik probeer zelf van nooit code in te checken waar er nog andere code in comments staan; als ze niet meer nodig is verwijder ik ze wel).
Jouw methode zou ik ook niet toepassen (het commenten dus); ik zou gewoon een compiler directive gebruiken. :)
code:
1
2
3
#ifdef VERSIE_X
   code
#endif

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 16:23

Salandur

Software Engineer

volgens mij heeft VB geen compiler directives

Assumptions are the mother of all fuck ups | iRacing Profiel


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Salandur schreef op dinsdag 30 januari 2007 @ 17:08:
volgens mij heeft VB geen compiler directives
natuurlijk wel .... vanaf VB6 volgens mij...
http://msdn2.microsoft.com/en-US/library/x435tkbk.aspx

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 25-08 14:07
Jawel, kijk op de vorige pagina als ik me niet vergis;)

Acties:
  • 0 Henk 'm!

  • merauder
  • Registratie: November 2005
  • Laatst online: 02-09 20:08
Dit is nog een leuk voorbeeld van een RANZIGE constructie wat ik back in the days in QuickBasic heb gemaakt.

code:
1
2
3
4
5
6
for getal1 = 1 to 10 step 1
for getal2 = 1 to 10 step 1
getal3= getal1*getal2* 
print getal1 " X " getal2 " = " getal3
next getal2
next getal1


*zucht* nostalgie!

Acties:
  • 0 Henk 'm!

  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 01-09 22:18
Afgezien van dat dat een SYNTAX ERROR geeft doordat je er een * teveel hebt staan (achter getal 2) en geen + tussen de variabelen en strings hebt staan, is dit toch vrij normale code voor BASIC?

Het toont gewoon de tafels van 1 t/m 10.

Acties:
  • 0 Henk 'm!

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

kasper_vk schreef op dinsdag 23 januari 2007 @ 13:40:
Ik ben benieuwd hoe deze (oud-)collega het voor elkaar kreeg om een int te converteren naar een string en daar dan string.Empty uit te laten komen :?
Nullable int? :P

Nu met Land Rover Series 3 en Defender 90


Acties:
  • 0 Henk 'm!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 16:51
Laats kwam een collega van mij een ernstige constructie tegen, eerst een float opslaan in de database en daarna uitlezen en controleren of hij gelijk is aan 0... :/ Resultaat honderden openstaande posten van enkele honderden van een cent.

http://hawvie.deviantart.com/


Acties:
  • 0 Henk 'm!

  • merauder
  • Registratie: November 2005
  • Laatst online: 02-09 20:08
Mastermind schreef op woensdag 31 januari 2007 @ 12:46:
Afgezien van dat dat een SYNTAX ERROR geeft doordat je er een * teveel hebt staan (achter getal 2) en geen + tussen de variabelen en strings hebt staan, is dit toch vrij normale code voor BASIC?

Het toont gewoon de tafels van 1 t/m 10.
Tis ook effe een snelle schets ;) zal het editten ;) maar persoonlijk vind ik een For-lus binnen een For-lus niet zo heel erg netjes. + was zover ik nog weet in Quickbasic NIET nodig!

Acties:
  • 0 Henk 'm!

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

Ivo

merauder schreef op woensdag 31 januari 2007 @ 23:52:
[...]


Tis ook effe een snelle schets ;) zal het editten ;) maar persoonlijk vind ik een For-lus binnen een For-lus niet zo heel erg netjes. + was zover ik nog weet in Quickbasic NIET nodig!
Hoe zou je het dan doen? Ik heb nooit QuickBasic geprogrammeerd namelijk.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

merauder schreef op woensdag 31 januari 2007 @ 23:52:
[...]


Tis ook effe een snelle schets ;) zal het editten ;) maar persoonlijk vind ik een For-lus binnen een For-lus niet zo heel erg netjes. + was zover ik nog weet in Quickbasic NIET nodig!
Ik zie niet in waarom je geen geneste for-lus zou gebruiken voor een dergelijke toepassing?
Het enige wat ik niet "netjes" vind aan dat stukje code is de indenting en de naamgeving :)

Acties:
  • 0 Henk 'm!

  • Paul
  • Registratie: September 2000
  • Laatst online: 12-09 20:09
merauder schreef op woensdag 31 januari 2007 @ 23:52:
maar persoonlijk vind ik een For-lus binnen een For-lus niet zo heel erg netjes. + was zover ik nog weet in Quickbasic NIET nodig!
Hoe wil je dan een 2-dimensionale array initialiseren / doorlopen / weet ik het?

Constructies als array[i / size][i % size] ofzo? Doe mij dan maar een geneste for-loop :)

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


Acties:
  • 0 Henk 'm!

  • Technicality
  • Registratie: Juni 2004
  • Laatst online: 11-09 23:47

Technicality

Vliegt rechtsom...

HawVer schreef op woensdag 31 januari 2007 @ 22:58:
Laats kwam een collega van mij een ernstige constructie tegen, eerst een float opslaan in de database en daarna uitlezen en controleren of hij gelijk is aan 0... :/ Resultaat honderden openstaande posten van enkele honderden van een cent.
Hehe, office space anyone?

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12-09 15:22

.oisyn

Moderator Devschuur®

Demotivational Speaker

Yeah, well, didn't you get that memo? I'll go ahead and make sure you'll get another copy of that memo.

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!

  • merauder
  • Registratie: November 2005
  • Laatst online: 02-09 20:08
Paul Nieuwkamp schreef op donderdag 01 februari 2007 @ 00:05:
[...]
Hoe wil je dan een 2-dimensionale array initialiseren / doorlopen / weet ik het?

Constructies als array[i / size][i % size] ofzo? Doe mij dan maar een geneste for-loop :)
Grootste nadeel aan geneste loops vind ik puur en alleen het feit dat er moeilijk te overzien valt wat de code allemaal doet, welke code waarbij hoort.

Ik zou nu eerder kiezen voor een object wat 1 dimensie doorloopt in combinatie met een while loop wat een 2e dimensie doorloop. Kan je bijvoorbeeld met een klein beetje extra code een specifieke sectie uit een dimensie opvragen, bijvoorbeeld de tafel van 5. Het is gewoon een pak handiger om code herbruikbaar te maken dan bijvoorbeeld veel gecopy-paste.

@Erkens: Indenting is bij Quick/GWbasic een redelijk probleem. Vooral omdat je voorheen voor de interpreter de regels nummerde.

Java en C georienteerde talen hou je simpelweg een stuk nettere code aan over.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

merauder schreef op donderdag 01 februari 2007 @ 09:24:
Grootste nadeel aan geneste loops vind ik puur en alleen het feit dat er moeilijk te overzien valt wat de code allemaal doet, welke code waarbij hoort.
Dan moet je gewoon goed coden lijkt me, niks mis met goed geneste loops.
@Erkens: Indenting is bij Quick/GWbasic een redelijk probleem. Vooral omdat je voorheen voor de interpreter de regels nummerde.
Indenting was geen enkel probleem, zeker met Q(uick)BASIC niet aangezien je daar dus standaard geen regelnummers had. Overigens deed ik voor het overzicht er bij GWBasic altijd een "lege" regel tussen :)
Java en C georienteerde talen hou je simpelweg een stuk nettere code aan over.
onzin

Acties:
  • 0 Henk 'm!

  • HawVer
  • Registratie: Februari 2002
  • Laatst online: 16:51
Mjah, het is een kwestie van smaak, als je gewend bent te werken met Delphi zal je al die accolades van C# ook maar niks vinden. Maar ik ben wel van mening dat een ontwikkelaar zelf nette code schrijft. Zowel in delphi als c# als c++ etc. kan een prutser er een rommeltje van maken.

http://hawvie.deviantart.com/


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

HawVer schreef op donderdag 01 februari 2007 @ 09:55:
[...]

Mjah, het is een kwestie van smaak, als je gewend bent te werken met Delphi zal je al die accolades van C# ook maar niks vinden. Maar ik ben wel van mening dat een ontwikkelaar zelf nette code schrijft. Zowel in delphi als c# als c++ etc. kan een prutser er een rommeltje van maken.
Het gaat mij niet om het wel of niet gebruiken van accolades of wat dan ook maar gewoon om de generalisatie dat je alleen met Java en C talen netter zou kunnen coden dan met bijvoorbeeld basic, wat natuurlijk gewoon onzin is, want het wel of niet netjes kunnen coden ligt voor 100% aan de developer.

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Erkens schreef op donderdag 01 februari 2007 @ 09:59:
[...]

Het gaat mij niet om het wel of niet gebruiken van accolades of wat dan ook maar gewoon om de generalisatie dat je alleen met Java en C talen netter zou kunnen coden dan met bijvoorbeeld basic, wat natuurlijk gewoon onzin is, want het wel of niet netjes kunnen coden ligt voor 100% aan de developer.
Ben ik helemaal met je eens, maar toch vind ik zelf de accolades een stuk fijner en overzichtelijker als markers dan de begin/end van bijv. een Object Pascal.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Grijze Vos schreef op donderdag 01 februari 2007 @ 10:16:
Ben ik helemaal met je eens, maar toch vind ik zelf de accolades een stuk fijner en overzichtelijker als markers dan de begin/end van bijv. een Object Pascal.
dat is puur een kwestie van smaak, want opzich zou het begin/end duidelijker zijn omdat het meer opvalt, maar juist daardoor zien sommige het juist als "te druk" (dat zie je vooral mensen die iets minder ervaring met pascal hebben dan met andere talen)
Maar ook daar geld dat je het met een goede indenting goed leesbaar kan houden :)

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Erkens schreef op donderdag 01 februari 2007 @ 10:39:
[...]

dat is puur een kwestie van smaak, want opzich zou het begin/end duidelijker zijn omdat het meer opvalt, maar juist daardoor zien sommige het juist als "te druk" (dat zie je vooral mensen die iets minder ervaring met pascal hebben dan met andere talen)
Maar ook daar geld dat je het met een goede indenting goed leesbaar kan houden :)
Ik heb juist veel ervaring met Pascal (op de TU/e krijg je bijna exclusief Pascal, de eerste 2 jaar ofzo, als je programmeeropdrachten hebt.)

Ik vind het inderdaad veel te druk, maar inderdaad, goede indenting is het halve werk.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Paul
  • Registratie: September 2000
  • Laatst online: 12-09 20:09
merauder schreef op donderdag 01 februari 2007 @ 09:24:
Grootste nadeel aan geneste loops vind ik puur en alleen het feit dat er moeilijk te overzien valt wat de code allemaal doet, welke code waarbij hoort.
Ligt eraan wat je doet in je loop.
Delphi:
1
2
3
4
5
6
7
procedure TSomeObject.InitArray();
var Col, Row: Integer;
begin
  for Col := 9 downto 0 do
    for Row := 9 downto 0 do
      SomeArray[Col][Row] = (Col + 1) * (Row + 1);
end;
Ik zie echt niet in hoe je daarbij niet kunt overzien wat het doet?
Je kunt het herschrijven naar
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TSomeObject.InitArray();

  procedure InitArrayCell(const Col, Row: Integer);
  begin
    SomeArray[Col][Row] := (Col + 1) * (Row + 1);
  end;

  procedure InitArrayRow(const Col: Integer);
  var Row: Integer;
  begin
    for Row := 9 downto 0 do
      InitArrayCell(Col, Row);
  end;

var Col: Integer;
begin
  for Col := 9 downto 0 do
    InitArrayRow(Col);
end;

maar dat voegt totaal niets toe. Ja, als je per regel code betaald wordt.

Als je zoiets simpels als generiek en herbruikbaar wilt maken dan sla je imo veel te ver door. Voor jouw "met een klein beetje extra code een specifieke sectie uit een dimensie opvragen, bijvoorbeeld de tafel van 5" moet je ten eerste al 4x zoveel code schrijven om het uberhaupt mogelijk te maken, en dan nog zit je met het verschil tussen
Delphi:
1
2
3
4
5
6
7
var i: Integer;
for i := 1 to 10 do
  Write(SomeObject.SomeArray[5 - 1][i -1]; // arrays zijn 0-based.

// vs.

Write(SomeObject.getTafel(5));
Ik ben het met je eens dat, als je dan toch alles met objecten doet enzo, getTafel(const tafel: Integer) een stuk mooier is als zelf de interne data doorlopen, maar wat denk je dat getTafel nu helemaal doet? :P

We kregen les in Java. Opdracht: Teken een circel op het scherm, die random van kleur veranderd als je op een knopje drukt. Ik snapte het doel van de les wel (OO leren programmeren, die circel was bijzaak), maar als je dat met minder dan 5 klasses (je form, class Vorm, class Rondje extends Vorm en ik geloof dat actionlisteners ook aparte klasses waren ofzo) deed dan kreeeg je een onvoldoende bij wijze van spreken. Voor het tekenen van 1 $#* circel 8)7
Daar kom je later, na school, echt niet meer mee weg. Dan komt je baas vragen waarom je voor het tekenen van 1 circeltje een uur nodig hebt en 5 extra bestanden in moet checken in SVN.

Overigens heb je zowel op de eerste als op de 2e manier een loop in een loop, maar juist bij de 2e manier is dat heel slecht te zien. Bij die eerste (zonder extra procedures) let ik over een half ajar heel goed op als ik de assignment van de array aanpas, bij de 2e weet ik dan echt niet meer zo dat dat een inner loop is en ik die dus klein moet houden. Ik kan me zo voorstellen dat ik over een half jaar wat dure database calls in InitArrayCell zou kunnen zetten.

[ Voor 3% gewijzigd door Paul op 01-02-2007 19:41 ]

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


Acties:
  • 0 Henk 'm!

  • Paul C
  • Registratie: Juni 2002
  • Laatst online: 09:58
PHP:
1
2
3
4
5
6
7
8
9
10
11
$sql = 'SELECT MAX(y) FROM voer_moves WHERE `match` = ' . $match . ' AND `x` = ' . $col;
$resultmax = mysql_query($sql) or DIE(mysql_error());
if(mysql_affected_rows() >= 0) {
    $buff = mysql_fetch_row($resultmax);
    $y = $buff[0] + 1;
    echo 'y != 0';
}
else {
    echo 'y = 0';
    $y = 0;
}
int mysql_affected_rows ( [resource link_identifier] )

Get the number of affected rows by the last INSERT, UPDATE, REPLACE or DELETE query associated with link_identifier.
En ik maar zoeken. Damn wat was ik moe 8)7

Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Nu online
pcmadman schreef op zondag 04 februari 2007 @ 02:09:
En ik maar zoeken. Damn wat was ik moe 8)7
Ha, dat probleem komt me bekend voor.. Wat ik in m'n allereerste algemene query functie ook zo leip opgelost had:
PHP:
1
$affected_rows = stristr(substr($query, 0, 8), "SELECT") ? mysql_num_rows($resource) : mysql_affected_rows($resource);

Werkt nog best goed ook als je maar geen rare dingen wilt doen :+ Maar tegenwoordig gebruik ik toch maar een databaseclass met aparte functies voor verschillende operaties :+

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Tja, bij code zoals pcmadman laat zien kan (moet :P ) je gewoon checken of mysql_fetch_row geen false terug geeft en dat hele mysql_num_rows() links laten liggen.

{signature}


Acties:
  • 0 Henk 'm!

  • merauder
  • Registratie: November 2005
  • Laatst online: 02-09 20:08
Ach, netheid is in veel gevallen ook maar een detail ;)

Als er in het bedrijfsleven maar resultaten gehaald worden is het vaak goed genoeg, en onder druk van deadlines hebben veel mensen wel eens de neiging om ranzige constructies te bedenken. Maar ach, als het werkt.

Acties:
  • 0 Henk 'm!

Verwijderd

merauder schreef op zondag 04 februari 2007 @ 20:47:
Ach, netheid is in veel gevallen ook maar een detail ;)

Als er in het bedrijfsleven maar resultaten gehaald worden is het vaak goed genoeg, en onder druk van deadlines hebben veel mensen wel eens de neiging om ranzige constructies te bedenken. Maar ach, als het werkt.
Absoluut niet, een goed product krijgt vaak een vervolg. Als de code dan onleesbaar en onwerkbaar dan zal het vervolgproject compleet in de soep lopen en zal al je winst opgaan aan je slechte code uit de eerste versie....

Acties:
  • 0 Henk 'm!

Verwijderd

Paul Nieuwkamp schreef op donderdag 01 februari 2007 @ 19:38:
Daar kom je later, na school, echt niet meer mee weg. Dan komt je baas vragen waarom je voor het tekenen van 1 circeltje een uur nodig hebt en 5 extra bestanden in moet checken in SVN.
Dan stel ik altijd mijn baas de wedervraag: Waarom is er nooit tijd om het goed te doen, maar altijd genoeg tijd en geld om het achteraf te herstellen... (wat vaak ook 10x meer tijd en geld kost).

Acties:
  • 0 Henk 'm!

  • Paul
  • Registratie: September 2000
  • Laatst online: 12-09 20:09
En ook dan komt hij in je nek staan hijgen "Is het al af? Het is potjandorie maar 1 simpel circeltje!".

echter, als het stuk is heeft hij geen keuze, nieuwe features moeten gewoon 2 weken geleden al klaar zijn :(

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


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op zondag 04 februari 2007 @ 21:51:
Dan stel ik altijd mijn baas de wedervraag: Waarom is er nooit tijd om het goed te doen, maar altijd genoeg tijd en geld om het achteraf te herstellen... (wat vaak ook 10x meer tijd en geld kost).
Simpel: omdat je er dan meer aan verdient :)

Programmeurs hebben vaak de irritante neiging om te goed werk te leveren. De klant betaald voor een werkend product, niet een school voorbeeld 'hoe te programmeren'.

Acties:
  • 0 Henk 'm!

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

Gerco

Professional Newbie

:X Gelukkig denken architecten er niet zo over. "Goed genoeg" is idd wel een erg bekende term in de software industrie.

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


Acties:
  • 0 Henk 'm!

Verwijderd

Gerco schreef op zondag 04 februari 2007 @ 22:13:"Goed genoeg" is idd wel een erg bekende term in de software industrie.
Het is tevens een te weinig toegepaste term in de software industrie. Het gros van de IT projecten loopt uit, is het niet in de lengte dan is het wel in de breedte. Naast een tal van andere oorzaken heeft een overijverige architect daar toch wel een behoorlijk aandeel in.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12-09 15:22

.oisyn

Moderator Devschuur®

Demotivational Speaker

En laten we ook niet vergeten dat in het begin van een project simpelweg minder hard gewerkt wordt dan aan het eind van een project. "Genoeg tijd" is ook maar een relatief begrip.

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!

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

Gerco

Professional Newbie

"Goed genoeg" is zowel een te weinig als teveel toegepaste term. Het is me regelmatig gebeurd dat een project uitliep omdat mensen te ver vooruit dachten. Het is me echter ook gebeurd dat er geen tijd was om iets op de goede manier te doen en het dan maar "Goed genoeg" moest.

Een paar maanden later konden we overnieuw beginnen, "Goed genoeg" bleek niet bestand tegen ook maar de kleinste verandering van de eisen.

Laten we zeggen dat dat komt omdat in het begin van beide projecten de eisen niet goed op papier stonden. Van sommige van die projecten is dat (jaren later) nog steeds het geval :X

[ Voor 18% gewijzigd door Gerco op 04-02-2007 22:42 ]

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


Acties:
  • 0 Henk 'm!

Verwijderd

.oisyn schreef op zondag 04 februari 2007 @ 22:41:
En laten we ook niet vergeten dat in het begin van een project simpelweg minder hard gewerkt wordt dan aan het eind van een project. "Genoeg tijd" is ook maar een relatief begrip.
Ja inderdaad. Ook helemaal waar. Maar tevens merk ik dat aan het begin van een project programmeurs maar al te vaak denken te weten wat de klant in de toekomst wil. En daar helaas maar al te vaak rekening mee gaan houden.
Gerco schreef op zondag 04 februari 2007 @ 22:41:
Een paar maanden later konden we overnieuw beginnen, "Goed genoeg" bleek niet bestand tegen ook maar de kleinste verandering van de eisen.
Nee er zijn natuurlijk altijd uiterste, wederom die middenweg dan maar heh ;)
Gerco schreef op zondag 04 februari 2007 @ 22:41:
Laten we zeggen dat dat komt omdat in het begin van beide projecten de eisen niet goed op papier stonden. Van sommige van die projecten is dat (jaren later) nog steeds het geval :X
Is niet de hele Agile stroming ontstaan vanuit de gedachte dat je vooraf niet alles goed op papier kunt krijgen..? Ik vind het dus niet zo gek als je dat jaren later nog steeds niet lukt.

[ Voor 44% gewijzigd door Verwijderd op 04-02-2007 22:48 ]


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Tja, daar heb je ook het grote verschil tussen IT en andere engineering disciplines. Als een architect een brug moet ontwerpen is zo ongeveer de enige eis dat het ding punt A met punt B moet verbinden, en dat het veilig gebeurd. (Ja, dit is wat kort door de bocht. ;)) Bij computerprogramma's weet de klant vaak niet eens wat ie wil.

De grote grap is wel, dat als een architect zijn brug instort hij moeilijk werk gaat vinden in de toekomst, als een programma crasht, dan mag je een support contract gaan afsluiten. Best apart eigenlijk.

[ Voor 10% gewijzigd door Grijze Vos op 04-02-2007 22:50 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info

Pagina: 1 ... 4 ... 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. :)

Het is hier ook niet het "korte vraagjes" topic. Zie deze post