[alg] Slechtste programmeervoorbeelden deel 4 Vorige deel Overzicht Laatste deel

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

Pagina: 1 ... 33 ... 103 Laatste
Acties:
  • 993.657 views

Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
_O-

What the fuck? :D

We are shaping the future


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 02-10 16:55
Michali schreef op maandag 23 augustus 2010 @ 09:25:
Mijn maandagochtend begint goed:

PHP:
1
2
3
4
5
6
7
8
9
10
11
// Den_Haag naar Den Haag omzetten
function ReplaceDenHaag($plaats)
{
    if ($plaats == "Den_Haag") {
        $newplaats = "Den Haag";
    } else {
        $newplaats = $plaats;
    }

    return $newplaats;
}
[plaag]Wat, dat je apart een functie schrijft om Den_Haag om te zetten naar Den Haag of de overbodige else?[/plaag]

Waarschijnlijk kun je een lijstje / array maken van input die je vervangen moet (en hun vervangers) en dan alle plaatsen in één keer replacen. Als dat van toepassing is natuurlijk.

Acties:
  • 0 Henk 'm!

  • Orion84
  • Registratie: April 2002
  • Laatst online: 04-10 11:20

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

Die else is niet overbodig, als je die functie per ongeluk aanroept met Rotterdam, dan geeft ie gewoon weer Rotterdam terug, in plaats van Den Haag, dat is in mijn ogen nog wel nuttig te noemen.

De enige WTF is inderdaad dat je een functie maakt voor zo'n specifiek geval, maar zonder de context is het ook lastig te zeggen hoe WTF dat is. Het zou vooral een WTF zijn als er ook een ReplaceDenBosch en een ReplaceDenHelder etc. zouden zijn in plaats van een meer generieke oplossing :P

[ Voor 10% gewijzigd door Orion84 op 23-08-2010 10:47 ]

The problem with common sense is that it's not all that common. | LinkedIn | Flickr


Acties:
  • 0 Henk 'm!

  • creator1988
  • Registratie: Januari 2007
  • Laatst online: 04-10 18:21
Orion84 schreef op maandag 23 augustus 2010 @ 10:46:
Die else is niet overbodig, als je die functie per ongeluk aanroept met Rotterdam, dan geeft ie gewoon weer Rotterdam terug, in plaats van Den Haag, dat is in mijn ogen nog wel nuttig te noemen.

De enige WTF is inderdaad dat je een functie maakt voor zo'n specifiek geval, maar zonder de context is het ook lastig te zeggen hoe WTF dat is. Het zou vooral een WTF zijn als er ook een ReplaceDenBosch en een ReplaceDenHelder etc. zouden zijn in plaats van een meer generieke oplossing :P
Wij hebben ook plaatsvarianten, en onze test hiervoor is 'asd', dat naar Amsterdam moet worden omgezet. Werkt niet, dus issue aangemaakt, opgelost etc. Krijg ik de melding dat 'den haag' niet meer werkt (moet 's Gravenhage worden). Staat echt op het allerlaagste lowlevel niveau, bij het parsen van de URL:

code:
1
if(url.Contains("asd")) Criteria.Add(Plaats, "Amsterdam");


argh!

Acties:
  • 0 Henk 'm!

  • TJHeuvel
  • Registratie: Mei 2008
  • Niet online
Die else kan overbodig zijn:

PHP:
1
2
3
4
5
function ReplaceDenHaag(&$plaats)
{
    if($plaats == "Den_Haag")
        $plaats = "Den Haag";
}


Uiteraard is die functie gewoon brak. Misschien om wat data van een oud systeem naar een nieuw systeem te importeren?

[ Voor 28% gewijzigd door TJHeuvel op 23-08-2010 11:21 ]

Freelance Unity3D developer


Acties:
  • 0 Henk 'm!

  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 27-09 00:06

ZaZ

Tweakers abonnee

CyCloneNL schreef op maandag 23 augustus 2010 @ 11:21:
Die else kan overbodig zijn:

PHP:
1
2
3
4
5
function ReplaceDenHaag(&$plaats)
{
    if($plaats == "Den_Haag")
        $plaats = "Den Haag";
}


Uiteraard is die functie gewoon brak. Misschien om wat data van een oud systeem naar een nieuw systeem te importeren?
great, dan heb je een functie die niets teruggeeft. of heeft php geen procedures?

Lekker op de bank


Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 03-10 22:38

CoolGamer

What is it? Dragons?

ZaZ schreef op maandag 23 augustus 2010 @ 11:27:
[...]

great, dan heb je een functie die niets teruggeeft.
$plaats wordt doorgegeven als reference. Zo wordt de variabele direct bewerkt en heb je geen return meer nodig.

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


Acties:
  • 0 Henk 'm!

  • TJHeuvel
  • Registratie: Mei 2008
  • Niet online
Zoals TheCoolGamer al zei, heb ik stiekem er een reference van gemaakt dmv het & symbool.

Freelance Unity3D developer


Acties:
  • 0 Henk 'm!

  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 27-09 00:06

ZaZ

Tweakers abonnee

Ja dat zie ik ook wel.
Maar een functie die niets teruggeeft is lelijk, want dan is het geen functie nietwaar?

edit:

Ah, zal wel weer zo'n bijzonder dingetje van php zijn.
Geen void, procedure, sub of whatever.

[ Voor 34% gewijzigd door ZaZ op 23-08-2010 11:46 ]

Lekker op de bank


Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 01-10 23:03
CyCloneNL schreef op maandag 23 augustus 2010 @ 11:21:
Die else kan overbodig zijn:

PHP:
1
2
3
4
5
function ReplaceDenHaag(&$plaats)
{
    if($plaats == "Den_Haag")
        $plaats = "Den Haag";
}


Uiteraard is die functie gewoon brak. Misschien om wat data van een oud systeem naar een nieuw systeem te importeren?
PHP:
1
2
3
function ReplaceDenHaag($plaats){
    return str_replace("Den_Haag", "Den Haag", $plaats);
}

Alhoewel het vast sneller kan, is dit imo netter :+
Al kun je dan imo beter op de locatie waar het nodig is direct die str_replace uitvoeren.

[ Voor 8% gewijzigd door Noxious op 23-08-2010 11:48 ]


Acties:
  • 0 Henk 'm!

  • kwaakvaak_v2
  • Registratie: Juni 2009
  • Laatst online: 02-06 12:29
ik zou eerder een mooie lookup tabel maken waar je alles door heen haalt

code:
1
2
3
$in = array("denhaag",denbosch","denhelder")
$out = array("'s-Gravenhage","'s-Hertogenbosch","Den Helder")
return str_ireplace($in,$out,$string);


Net zo makkelijk, en scheelt je een hoop functies voor elke plaats ;)

Oh en niet case sensitive uitaard, want stel dat iemand denHaag schrijft :+

Driving a cadillac in a fool's parade.


Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 01-10 23:03
Als je er meerdere hebt wel ja, maar misschien hebben ze alleen locaties in Amsterdam, Rotterdam en Den Haag oid :+ en komen andere plaatsen niet voor.

Dan kun je nog beter een str_replace("_", " ", $plaats) doen uiteraard.

Acties:
  • 0 Henk 'm!

  • TJHeuvel
  • Registratie: Mei 2008
  • Niet online
Noxious schreef op maandag 23 augustus 2010 @ 11:48:
PHP:
1
2
3
function ReplaceDenHaag($plaats){
    return str_replace("Den_Haag", "Den Haag", $plaats);
}

Alhoewel het vast sneller kan, is dit imo netter :+
Al kun je dan imo beter op de locatie waar het nodig is direct die str_replace uitvoeren.
Dat doet niet hetzelfde, de functie moet de string 'Den_Haag' omzetten naar 'Den Haag'.
Bij 'Den_Haag' gaat bij jou alles goed, maar bij 'Ik woon in Den_Haag' niet, want die zou hij niet moeten aanpassen :)

Freelance Unity3D developer


Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 01-10 23:03
CyCloneNL schreef op maandag 23 augustus 2010 @ 12:01:
[...]

Dat doet niet hetzelfde, de functie moet de string 'Den_Haag' omzetten naar 'Den Haag'.
Bij 'Den_Haag' gaat bij jou alles goed, maar bij 'Ik woon in Den_Haag' niet, want die zou hij niet moeten aanpassen :)
Da's helemaal waar. :P

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
CyCloneNL schreef op maandag 23 augustus 2010 @ 11:34:
Zoals TheCoolGamer al zei, heb ik stiekem er een reference van gemaakt dmv het & symbool.
Output parameters in PHP zijn serieus not done. Je kan returnen wat je wilt, zelfs verschillende types en of complexere structuren dus vermijd aub references hiervoor. Als je hele codestyle zo is, is dat wmb een grotere wtf dan de originele functie.

{signature}


Acties:
  • 0 Henk 'm!

  • TJHeuvel
  • Registratie: Mei 2008
  • Niet online
Ik ben niet zo van de references, maar waarom zou het anders zijn om een reference te maken of een waarde te returnen? Dit kan toch ook van alles zijn.

Freelance Unity3D developer


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
CyCloneNL schreef op maandag 23 augustus 2010 @ 12:09:
Ik ben niet zo van de references, maar waarom zou het anders zijn om een reference te maken of een waarde te returnen? Dit kan toch ook van alles zijn.
PHP:
1
2
3
4
5
6
7
8
<?php
function foo (&$bar)
{
    $bar = 'baz';
}

$bar = 'bat';
var_dump(foo($bar));    // null
oepsie ;)

Acties:
  • 0 Henk 'm!

  • Orion84
  • Registratie: April 2002
  • Laatst online: 04-10 11:20

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

kwaakvaak_v2 schreef op maandag 23 augustus 2010 @ 11:53:
ik zou eerder een mooie lookup tabel maken waar je alles door heen haalt

code:
1
2
3
$in = array("denhaag",denbosch","denhelder")
$out = array("'s-Gravenhage","'s-Hertogenbosch","Den Helder")
return str_ireplace($in,$out,$string);


Net zo makkelijk, en scheelt je een hoop functies voor elke plaats ;)

Oh en niet case sensitive uitaard, want stel dat iemand denHaag schrijft :+
maar dan toch hopelijk op een elegantere manier dan met twee losse arrays die je zo in je code definieert, want dat schreeuwt imho om het maken van foutjes in de volgorde etc. op het moment dat je later plaatsen gaat toevoegen/verwijderen etc.

The problem with common sense is that it's not all that common. | LinkedIn | Flickr


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Orion84 schreef op maandag 23 augustus 2010 @ 12:35:
[...]

maar dan toch hopelijk op een elegantere manier dan met twee losse arrays die je zo in je code definieert, want dat schreeuwt imho om het maken van foutjes in de volgorde etc. op het moment dat je later plaatsen gaat toevoegen/verwijderen etc.
Inderdaad, dan liever zo doen (als je het zo wilt doen natuurlijk :P ) is tenminste iets meer overzichtelijker :)

PHP:
1
2
3
4
5
6
$stuff = array(
    "denhaag"   =>"'s-Gravenhage",
    "denbosch"  =>"'s-Hertogenbosch",
    "denhelder" =>"Den Helder"
);
return str_ireplace(array_keys($stuff),array_values($stuff),$string);

Acties:
  • 0 Henk 'm!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 04-10 19:28
Noxious schreef op maandag 23 augustus 2010 @ 11:59:
Als je er meerdere hebt wel ja, maar misschien hebben ze alleen locaties in Amsterdam, Rotterdam en Den Haag oid :+ en komen andere plaatsen niet voor.

Dan kun je nog beter een str_replace("_", " ", $plaats) doen uiteraard.
en str_replace werkt ook op arrays normaal.; ;)

MT Venus E 5KW (V151) P1 HomeWizard | Hackerspace Brixel te Hasselt (BE) - http://www.brixel.be | 9800X3D, 96GB DDR5 6000MHZ, NVIDIA GEFORCE 4090, ASRock X670E Steel Legend, Seasonic GX1000


Acties:
  • 0 Henk 'm!

  • TJHeuvel
  • Registratie: Mei 2008
  • Niet online
mithras schreef op maandag 23 augustus 2010 @ 12:18:
[...]
PHP:
1
2
3
4
5
6
7
8
<?php
function foo (&$bar)
{
    $bar = 'baz';
}

$bar = 'bat';
var_dump(foo($bar));    // null
oepsie ;)
Dat is best logisch, var_dump dumpt wat foo returned.

Wat ik wil zeggen, is dat je in PHP nooit weet wat een functie met je variable doet, of returned. En dit dus niet specifiek iets met references is.

Freelance Unity3D developer


Acties:
  • 0 Henk 'm!

  • kwaakvaak_v2
  • Registratie: Juni 2009
  • Laatst online: 02-06 12:29
Erkens schreef op maandag 23 augustus 2010 @ 12:42:
[...]

Inderdaad, dan liever zo doen (als je het zo wilt doen natuurlijk :P ) is tenminste iets meer overzichtelijker :)

PHP:
1
2
3
4
5
6
$stuff = array(
    "denhaag"   =>"'s-Gravenhage",
    "denbosch"  =>"'s-Hertogenbosch",
    "denhelder" =>"Den Helder"
);
return str_ireplace(array_keys($stuff),array_values($stuff),$string);
Waarbij ik dan mag hopen dat dit stukje niet in je main loop zit en vaak wordt aangeroepen. Want array_keys, en array_values zijn relatief trage operaties in PHP. Beter is het dan om het direct goed op te slaan in je database.

Wat een speculaties weer he... Waarschijnlijk wordt deze code 1 keer per 100 jaar aangeroepen ofzo :D

Driving a cadillac in a fool's parade.


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 04-10 09:54

Sebazzz

3dp

kwaakvaak_v2 schreef op maandag 23 augustus 2010 @ 14:12:
[...]

Wat een speculaties weer he... Waarschijnlijk wordt deze code 1 keer per 100 jaar aangeroepen ofzo :D
Als programmeur hoor je imo perfectionistisch te zijn. ;)

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
kwaakvaak_v2 schreef op maandag 23 augustus 2010 @ 14:12:
Wat een speculaties weer he... Waarschijnlijk wordt deze code 1 keer per 100 jaar aangeroepen ofzo :D
Sterker nog, de code wordt helemaal nooit meer aangeroepen. :P Hij werd volgens mij gebruikt om een waarde om te zetten naar een waarde voor weergave. Ik denk dat alleen Den Haag met een underscore gescheiden werd en alle andere plaatsen maar uit 1 woord bestonden.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Sebazzz schreef op maandag 23 augustus 2010 @ 14:14:
[...]

Als programmeur hoor je imo perfectionistisch te zijn. ;)
Maar vooral pragmatisch ;)

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

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Woy schreef op maandag 23 augustus 2010 @ 14:31:
[...]

Maar vooral pragmatisch ;)
Alleen als dat tot een beter product leidt B)

:+

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Acties:
  • 0 Henk 'm!

  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 27-09 00:06

ZaZ

Tweakers abonnee

Er is zoveel verschrikkelijke code ontstaan door iets wat maar 'even' hoefde te werken, of alleen in 1 bepaald geval.
Wanneer je je laat verleiden tot code schrijven die lelijk en/of heel inefficient, kun je er donder op zeggen dat vroeg of laat een aantal van die stukken toch een eigen leven gaan leiden.

Voor je het weet ben je workarounds aan het maken.

Lekker op de bank


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Het is inderdaad een kunst om het midden te vinden tussen academisch correcte code en "het werkt, wat zeur je?"...

Perfectionistisch is wat mij betreft geen goede insteek als het gaat om betaald programmeren. Factoren als tijd en geld spelen nu eenmaal een rol.

The perfect is the enemy of the good.

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

kwaakvaak_v2 schreef op maandag 23 augustus 2010 @ 14:12:
Beter is het dan om het direct goed op te slaan in je database.
True, maar helaas moet je vaak de troep van andere opruimen of is een dergelijke aanpassing niet mogelijk binnen een bepaald budget/bepaalde tijd.
En traag? Ach, dan laten we toch gewoon snellere server kopen :9~

Acties:
  • 0 Henk 'm!

  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 27-09 00:06

ZaZ

Tweakers abonnee

Ja ok, dat is het andere uiterste.
Een ex collega had zoiets. Die kreeg een opdracht en soms was het gewoon iets wat je in een dag in elkaar draait.
Die ging dan eerst zitten tekenen en alles uitdenken en kwam tot 30 keer terug op zijn ontwerp omdat het nog meer robuust en strakker kon. Dan kwam ie meteen met nieuwe standaarden zodat alle tools nog beter op elkaar zouden aansluiten en die moesten dan ook weer veranderen etc.
Een echte overdesigner dus...

Maar iedereen die aan betaald programmeren doet heeft te maken gehad met tools die bijv eerst alleen maar effe een database moest importeren, dus dat het verschrikkelijke code is moet niet uitmaken.
Daarna moest er toch ook nog dit gebeuren en als ie dit en dat zou doen, zou het ook handig zijn.
Voor je het weet is het een draak van een tool.

En het is helemaal erg als in je core app dat soort dingen gebeuren.

Lekker op de bank


Acties:
  • 0 Henk 'm!

  • Guldan
  • Registratie: Juli 2002
  • Laatst online: 19:47

Guldan

Thee-Nerd

kenneth schreef op maandag 23 augustus 2010 @ 15:08:
Het is inderdaad een kunst om het midden te vinden tussen academisch correcte code en "het werkt, wat zeur je?"...

Perfectionistisch is wat mij betreft geen goede insteek als het gaat om betaald programmeren. Factoren als tijd en geld spelen nu eenmaal een rol.

The perfect is the enemy of the good.
Deze staat op een murphy poster die ik thuis heb. Is heel toepasselijk als ontwikkelaar:
There is never enough time to do it right. But there's always enough time to do it again

You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
^^ 9/10 keer schrijf ik code zo goed als het kan in de gestelde termijn + begroting. Meestal is het wel netjes, maar meestal zie ik ook bij een revisit dat het toch beter had gekund. Zo itereer je telkens verder tot perfecte code ;)

Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

mithras schreef op maandag 23 augustus 2010 @ 15:51:
^^ 9/10 keer schrijf ik code zo goed als het kan in de gestelde termijn + begroting. Meestal is het wel netjes, maar meestal zie ik ook bij een revisit dat het toch beter had gekund. Zo itereer je telkens verder tot perfecte code ;)
Ik las:
Zo irriteer je telkens verder tot perfecte code
Maar dat zal wel komen door de code die ik heb moeten onderhouden.

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
mithras schreef op maandag 23 augustus 2010 @ 15:51:
^^ 9/10 keer schrijf ik code zo goed als het kan in de gestelde termijn + begroting. Meestal is het wel netjes, maar meestal zie ik ook bij een revisit dat het toch beter had gekund. Zo itereer je telkens verder tot perfecte code ;)
Ja dat doe ik ook wel. Als ik code terugzie en ik snap het even niet helemaal goed meer, dan probeer ik wat ik dan leer er in te verwerken zodat het duidelijker wordt.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Gelukkig dat ik vaak nog even snel een regeltje commentaar bij zulke hack-code plaats (en al is het vaak alleen maar een ticket-nummer) anders ben je echt nog uren bezig om te bedenken waaorm je die code zo hebt geschreven :)

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
ZaZ schreef op maandag 23 augustus 2010 @ 15:21:
Ja ok, dat is het andere uiterste.
Een ex collega had zoiets. Die kreeg een opdracht en soms was het gewoon iets wat je in een dag in elkaar draait.
Die ging dan eerst zitten tekenen en alles uitdenken en kwam tot 30 keer terug op zijn ontwerp omdat het nog meer robuust en strakker kon. Dan kwam ie meteen met nieuwe standaarden zodat alle tools nog beter op elkaar zouden aansluiten en die moesten dan ook weer veranderen etc.
Een echte overdesigner dus...

Maar iedereen die aan betaald programmeren doet heeft te maken gehad met tools die bijv eerst alleen maar effe een database moest importeren, dus dat het verschrikkelijke code is moet niet uitmaken.
Daarna moest er toch ook nog dit gebeuren en als ie dit en dat zou doen, zou het ook handig zijn.
Voor je het weet is het een draak van een tool.

En het is helemaal erg als in je core app dat soort dingen gebeuren.
Ach, ik heb dat wel afgeleerd in een 'corporate environment'. Soms heeft een klant er meer aan dat iets binnen 2 weken werkt dan dat het over 10 jaar eventueel met één aanpassing heel makkelijk uitgebreid kan worden.

Het is stiekem ook beter om dat niet te doen, natuurlijk, anders heb je snel geen werk meer. :+

Acties:
  • 0 Henk 'm!

  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 20:51
En je kunt ook doorslaan en alles zo uitbreidbaar mogelijk maken.
Ook gehad met een applicatie, Er werd veel gebruik gemaakt van een Map met key/value velden.
De mogelijke keys werden in een aparte tabel bijgehouden, maar nergens stond gedocumenteerd welke keys bij elkaar hoorden. Dus bij nieuwe records, werden er vaak keys vergeten/verkeerd ingevuld of teveel ingevuld. En het ging nog met de hand ook (SQL) :(
Dus je moest echt tig keer testen, voordat je het goed werkend had. Met een simpel datamodel had je dat probleem niet.

Had dus soms zin om de bedenker ervan te slaan en niet alleen voor die applicatie. ;)

let the past be the past.


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Ja, ik heb ook wel eens iets gemaakt om menustructuren in een database te onderhouden waarna er nooit een item werd toegevoegd; maar ja, dat was niet mijn probleem. :)

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Davio schreef op maandag 23 augustus 2010 @ 17:54:
Het is stiekem ook beter om dat niet te doen, natuurlijk, anders heb je snel geen werk meer. :+
Je moet het juist laten lijken dat het veel werk is en lekker op GoT rondhangen natuurlijk. ;)

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 02-10 16:55
kenneth schreef op maandag 23 augustus 2010 @ 15:08:
Het is inderdaad een kunst om het midden te vinden tussen academisch correcte code en "het werkt, wat zeur je?"...

Perfectionistisch is wat mij betreft geen goede insteek als het gaat om betaald programmeren. Factoren als tijd en geld spelen nu eenmaal een rol.
Niet helemaal eens. Ik vindt dat je als programmeur minstens één keer een programma of onderdeel gemaakt moet hebben dat volgens de hedendaagse maatstaven 'perfect' zoveel mogelijk benadert - goede documentatie, tests, design patterns waar ze logisch zijn en iets toevoegen, en een heel rijtje andere termen die je uit de betere / standaardprogrammerwerken haalt.

Zo zul je die, misschien onderbewust, in toekomstige projecten ook toepassen waar mogelijk - en omdat je er bekend mee bent zal het op de korte duur nauwelijks extra tijd kosten (je poept zo een unit testje uit, ipv het geheel te compilen en handmatig erdoorheen te klikken (bijvoorbeeld)), en zich op de lange duur terugbetalen.

In theorie natuurlijk, ik heb het nooit goed toe kunnen passen ivm tijdgebrek en gebrek aan goeie projecten :+.

Eigenlijk is het stiekem best wel erg dat het enige project waar ik echt tevreden over ben mijn eerste stageopdracht van ~2.5 jaar geleden is. 20 weken alleen op een project zonder ook maar enige randvoorwaarden kunnen storten die zelfs het stagebedrijf zelf niet goed heeft kunnen definieren :+. Toch een 9 op gekregen toen.

[ Voor 13% gewijzigd door YopY op 23-08-2010 20:51 ]


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Eens :) Zoiets zat ik ook al te denken --een soort basisniveau-- maar wist het even niet onder woorden te brengen, dat is jou wel gelukt :)

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Orion84 schreef op maandag 23 augustus 2010 @ 10:46:
Die else is niet overbodig, als je die functie per ongeluk aanroept met Rotterdam, dan geeft ie gewoon weer Rotterdam terug, in plaats van Den Haag, dat is in mijn ogen nog wel nuttig te noemen.
PHP:
1
2
3
4
5
6
7
8
9
<?php
// Den_Haag naar Den Haag omzetten
function ReplaceDenHaag($plaats)
{
    if ($plaats == "Den_Haag")
        return "Den Haag";
    return $plaats;
}
?>

Los van het feit dat de functie nogal kansloos is; als je een if-zonder-else wilt gebruiken is dit de way to go IMHO.

[ Voor 34% gewijzigd door RobIII op 23-08-2010 21:00 ]

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!

  • Ulster Seedling
  • Registratie: December 2007
  • Laatst online: 03-10 10:43

Ulster Seedling

“Middelgrote appel”

RobIII schreef op maandag 23 augustus 2010 @ 20:59:
[...]


PHP:
1
2
3
4
5
6
7
8
9
<?php
// Den_Haag naar Den Haag omzetten
function ReplaceDenHaag($plaats)
{
    if ($plaats == "Den_Haag")
        return "Den Haag";
    return $plaats;
}
?>

Los van het feit dat de functie nogal kansloos is; als je een if-zonder-else wilt gebruiken is dit de way to go IMHO.
Of zo:
PHP:
1
2
3
4
5
6
7
<?php
// Den_Haag naar Den Haag omzetten
function ReplaceDenHaag($plaats)
{
    return ($plaats == "Den_Haag") ? "Den Haag" : $plaats;
}
?>

“(…) met een rode blos op een geelgroene ondergrond.” Volgens Wikipedia tenminste.


Acties:
  • 0 Henk 'm!

  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 27-09 00:06

ZaZ

Tweakers abonnee

Ja met een ternary operator is gewoon een if statement. Zo kunnen we er nog wel 10 verzinnen denk ik. We kunnen het ook omdraaien natuurlijk
PHP:
1
2
3
if ($plaats != "Den_Haag") 
        return $plaats;
    return "Den Haag";


En dan nog alle andere mogelijke combinaties :P

Lekker op de bank


Acties:
  • 0 Henk 'm!

  • Freeaqingme
  • Registratie: April 2006
  • Laatst online: 21:59
Ik snapte niet waarom als ik in method A iets weghaalde, function B niet meer werkte, code is van ongeveer een jaar geleden. Zojuist extraheer ik daar het volgende uit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
function B($options = array()) {
    $out = $this->A($options);
    $options = $out['options'];

    // rest van method hier
}

function A($options) {
    foreach($options as $key => $value) {
        // Hier 25 regels code

        $options[$key] = $value; // Deze lijn veranderde ik, en gek genoeg werkte function B niet meer

        // Hier nog eens 25 regels
    }

    return ('options' => $options, 'out' => $out);
}

[ Voor 1% gewijzigd door Freeaqingme op 24-08-2010 01:49 . Reden: Kleurtjes toegeovegd aan code ]

No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 04-10 17:00
freakingme schreef op dinsdag 24 augustus 2010 @ 01:47:
Ik snapte niet waarom als ik in method A iets weghaalde, function B niet meer werkte, code is van ongeveer een jaar geleden. Zojuist extraheer ik daar het volgende uit: [...]
^^ Met mijn relatief beperkte ervaring met php begrijp ik er niks van. Iemand zin om het uit te leggen? Lijkt me alsof iemand niet weet hoe die met verwijzingen kan werken, maar verder kom ik niet.

Acties:
  • 0 Henk 'm!

  • TJHeuvel
  • Registratie: Mei 2008
  • Niet online
Misschien omdat functie B afhankelijk is van functie A? Die $out zal wel geen options key gehad hebben.

Freelance Unity3D developer


Acties:
  • 0 Henk 'm!

  • !null
  • Registratie: Maart 2008
  • Laatst online: 02-10 16:08
Ik zie ook niet meteen wat er mis gaat, maar het moge duidelijk zijn dat er niet al te intelligente keuzes zijn gemaakt omtrent de naamgeving :P
Zo heb je snel bugs te pakken, of onbegrip van jezelf of anderen die aan deze code moeten werken.

Ampera-e (60kWh) -> (66kWh)


Acties:
  • 0 Henk 'm!

  • basvd
  • Registratie: December 2007
  • Laatst online: 00:16
PHP:
1
2
3
foreach($options as $key => $value) { 
   $options[$key] = $value; // Deze lijn veranderde ik, en gek genoeg werkte function B niet meer 
}

Dat is toch logisch, dan overschrijf je de initiële waardes van de array waar je doorheen loopt?!?

PHP:
1
return ('options' => $options, 'out' => $out);

Dit lijkt mij trouwens ook niet te werken... ;)

[ Voor 6% gewijzigd door basvd op 24-08-2010 09:07 ]


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 02-10 16:55
PHP:
1
2
3
4
5
6
7
/**
 * @param $plaats - Must be "Den_Haag". If nothing is passed. "Den_Haag" will be used.
 * @return "Den Haag". 
 */
function replaceDenHaag($plaats = "Den_Haag") {
   return "Den Haag";
}


Design-by-contract, :+. De aanroeper controleert zelf maar of 'ie Den_Haag of Pietje_Puk naar de functie stuurt.

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 03-10 10:15
SPee schreef op maandag 23 augustus 2010 @ 18:04:
En je kunt ook doorslaan en alles zo uitbreidbaar mogelijk maken.
[knip]
Om er dan achter te komen dat je je eigen RDBMS hebt geschreven ;) "Kijk, je hoeft geen letter meer in PHP te programmeren!" Dat is dan volledig vervangen door je eigen taal die verstopt zit in de database ofzo. Iets te vaak gezien. Maak het liever 100% niet-uitbreidbaar en niet-flexibel, met een goede architectuur, dan 100% uitbreidbaar.

Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
En dan krijg je dus deze gedrochten?

We are shaping the future


Acties:
  • 0 Henk 'm!

  • boe2
  • Registratie: November 2002
  • Niet online

boe2

'-')/

YopY schreef op dinsdag 24 augustus 2010 @ 09:42:
PHP:
1
2
3
4
5
6
7
/**
 * @param $plaats - Must be "Den_Haag". If nothing is passed. "Den_Haag" will be used.
 * @return "Den Haag". 
 */
function replaceDenHaag($plaats = "Den_Haag") {
   return "Den Haag";
}


Design-by-contract, :+. De aanroeper controleert zelf maar of 'ie Den_Haag of Pietje_Puk naar de functie stuurt.
We kunnen nog een stap verder optimaliseren in dat geval :+
PHP:
1
2
3
4
5
<?php 
function replaceDenHaag() { 
   return "Den Haag"; 
} 
?>

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind.' - Pratchett.


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 02-10 16:55
Boeboe schreef op dinsdag 24 augustus 2010 @ 10:32:
[...]


We kunnen nog een stap verder optimaliseren in dat geval :+
PHP:
1
2
3
4
5
<?php 
function replaceDenHaag() { 
   return "Den Haag"; 
} 
?>
Je moet er nog wel een verhaal bijdoen over self-documenting code hé? :+ En dan kan ik zeggen "Je functienaam is incorrect". Je zou het dan een naam "returnDenHaag()" of "giveMeTheStringThatSaysDenHaagWithASpaceInBetween()" moeten geven.

...waarom bestond deze functie ook maar weer? <+:)

Acties:
  • 0 Henk 'm!

  • !null
  • Registratie: Maart 2008
  • Laatst online: 02-10 16:08
YopY schreef op dinsdag 24 augustus 2010 @ 09:42:
PHP:
1
2
3
4
5
6
7
/**
 * @param $plaats - Must be "Den_Haag". If nothing is passed. "Den_Haag" will be used.
 * @return "Den Haag". 
 */
function replaceDenHaag($plaats = "Den_Haag") {
   return "Den Haag";
}


Design-by-contract, :+. De aanroeper controleert zelf maar of 'ie Den_Haag of Pietje_Puk naar de functie stuurt.
Dit vind ik toch wel een van de mooiere, echt geweldig. Waarschijnlijk had de functie ooit nog nut, maar is dat nut eruit gesloopt en de rest blijven staan :P

Ampera-e (60kWh) -> (66kWh)


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Alle Den Haaglol ten spijt kwam ik vanmorgen weer een pareltje tegen. Ik ben pertinent tegen geneste if's. Het lijkt wel of men hier alleen positieve waarden aan een if wil geven, en "exit is een soort goto dus kun je beter niet gebruiken". Ik heb dus if's van een keer of tien diep gezien...

Dat levert dus zulke code op:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
procedure BepaaldeProcedure;
begin
   if (someQuery.recordcount > 0) then
   begin
      if (testBestandsnaamExtensie) then
      begin
         try
          // doe wat leuks met een zootje variabelen
         except
            on E: exception do
            begin
               // Log error, geef melding
            end;
         end;

         try
          // Doe magic-achtige dingen
         except
         end;
      end
      else
      begin
         if (eenVoorwaarde) then
         begin
            // Voer wat magic uit;
         end
         else
         begin
            andereVoorwaarde := true;
            // Verander wat anders
         end;

         if (andereVoorwaarde) then
         begin

            if (specifiekeVoorwaarde) then
            begin
              // Doe wat extra voorbereidend werk
            end;

            if (weerAndereVoorwaarde) then
            begin
              // Doe de uiteindelijke magic
            end
            else
            begin
              // Doe nog wat leuks wat op magic lijkt
            end;
         end
         else
         begin
            // Toon error dat variabele niet Ok is
         end;
      end;
   end
   else
   begin
      // Toon melding dat er geen records zijn
   end;
end;


En daar heb ik meer dan 100 regels code weggeknipt. Totaal niet te volgen, hoewel dat ook aan gebrek aan functionaliteit van de IDE kan liggen.

Ik zou het zo doen, quick & dirty:
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
39
40
41
42
43
44
45
46
47
48
49
50
procedure BepaaldeProcedure;
begin
  if (someQuery.recordcount = 0) then
  begin
   // Toon melding dat er geen records zijn
   exit;
  end;

  if (testBestandsnaamExtensie) then
  begin
     try
      // doe wat leuks met een zootje variabelen
     except
        on E: exception do
        begin
           // Log error, geef melding
        end;
     end;

     try
        // Doe magic-achtige dingen
     except
     end;
     exit;
  end
  
  // Dit wordt alleen bij andere extensies gedaan
  if (eenVoorwaarde) then
  begin
    // Voer wat magic uit;
    // Toon error dat variabele niet Ok is
    exit;
  end;
  
  // Verander wat anders
  
  if (specifiekeVoorwaarde) then
  begin
  // Doe wat extra voorbereidend werk
  end;

  if (weerAndereVoorwaarde) then
  begin
    // Doe de uiteindelijke magic
  end
  else
  begin
    // Doe nog wat leuks wat op magic lijkt
  end;
end;


Iemand? :P

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 03-10 10:15
Mooi voorbeeld van het Inner Platform Effect.
Ik dacht meer aan Soft Coding :)

Ik kan alleen dat plaatje van de grafische rule-engine niet meer vinden :@

[ Voor 8% gewijzigd door MBV op 24-08-2010 12:51 ]


Acties:
  • 0 Henk 'm!

  • ajakkes
  • Registratie: Maart 2004
  • Laatst online: 16-05 22:32

ajakkes

👑

code:
1
$res = mysql_query("SELECT username FROM loginusers WHERE username='".$username."' AND username != '".$username."'");


Om te kijken of de gebruikersnaam al bestaat.

👑


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Zet er dan meteen neer "WHERE False = 'FileNotFound'" 8)7

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-10 16:38

.oisyn

Moderator Devschuur®

Demotivational Speaker

Da's een quantum mechanische database. Er wordt gezocht naar een rij die in de superpositie staat waarbij de kolom username zowel wel als niet overeenkomt met $username. Lijkt me geen slecht programmeervoorbeeld.

[ Voor 11% gewijzigd door .oisyn op 25-08-2010 16:48 ]

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!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
.oisyn schreef op woensdag 25 augustus 2010 @ 16:48:
Da's een quantum mechanische database. Er wordt gezocht naar een rij die in de superpositie staat waarbij de kolom username zowel wel als niet overeenkomt met $username. Lijkt me geen slecht programmeervoorbeeld.
Alleen loop je dan meteen tegen het probleem aan dat je de staat van de database veranderd door hem te observeren 8)7

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

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 04-10 09:54

Sebazzz

3dp

Woy schreef op woensdag 25 augustus 2010 @ 16:55:
[...]

Alleen loop je dan meteen tegen het probleem aan dat je de staat van de database veranderd door hem te observeren 8)7
Dus MySQL is een quantummechanische database? :+

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Lye
  • Registratie: Januari 2010
  • Laatst online: 03-10 20:30

Lye

Sebazzz schreef op woensdag 25 augustus 2010 @ 17:03:
[...]

Dus MySQL is een quantummechanische database? :+
Af en toe, als de stand van de zon, maan en venus zo staan dat de qm-bit van mysql op 2 staat :D

Acties:
  • 0 Henk 'm!

  • Vinnienerd
  • Registratie: Juli 2000
  • Laatst online: 23:58
Lye schreef op woensdag 25 augustus 2010 @ 20:16:
[...]


Af en toe, als de stand van de zon, maan en venus zo staan dat de qm-bit van mysql op 2 staat :D
Best handig, met quantum entanglement hoef je replication niet meer aan te zetten. Je hebt zelfs geen netwerkverbinding meer nodig :+

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-10 16:38

.oisyn

Moderator Devschuur®

Demotivational Speaker

Het jammere is alleen dat als je het ene entanglede deeltje uitleest dat het andere dan ook z'n superpositie verliest ;)

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.


  • ajakkes
  • Registratie: Maart 2004
  • Laatst online: 16-05 22:32

ajakkes

👑

Ik heb nu al een tijdje geprobeerd om de qm-bit zelf op twee te krijgen maar dat lukt niet. Kan iemand hier mee helpen of moet ik hier een nieuw topic voor openen.
Ik zal toch moeten testen of de functie wel werkt als de zon, de maan en venus in de goede stand staan.

👑


  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
ajakkes schreef op donderdag 26 augustus 2010 @ 07:30:
Ik heb nu al een tijdje geprobeerd om de qm-bit zelf op twee te krijgen maar dat lukt niet. Kan iemand hier mee helpen of moet ik hier een nieuw topic voor openen.
Ik zal toch moeten testen of de functie wel werkt als de zon, de maan en venus in de goede stand staan.
Het is makkelijker als je in de buurt van de LHC woont.

https://niels.nu


  • R3veNG
  • Registratie: Maart 2009
  • Laatst online: 03-05-2021

R3veNG

Undercover Belg

Hydra schreef op donderdag 26 augustus 2010 @ 14:20:
[...]


Het is makkelijker als je in de buurt van de LHC woont.
Vergeet dan meteen de vogel-laat-stokbrood-vallen routine niet te unittesten..

CoC: MISSeR | Steam: r3veng


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Laten we nu verder maar weer on-topic gaan ;)

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

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 22:55
Ik kwam net deze tegen (beetje aangepast). getNumberOfDays haalt het aantal dagen van die maand op.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  function bla(){
    LastMonthYear='201107';
    var month = parseInt(LastMonthYear.substr(4,2),10);
    var year = parseInt(LastMonthYear.substr(0,4),10);

    var noOfDays = getNumberOfDays(month, year);
    var lastDate = '' + LastMonthYear + setLengthTwo(noOfDays);
  }

  //converts days and months to two characters (e.g. 8 -> 08)
  function setLengthTwo(string)
  {
    var temp = ''+string;
    if (temp.length >= 2) {return temp;}
    else if (temp.length < 2) {temp = '0'+temp; return temp;}
  }


en nog eentje:

JavaScript:
1
amount = Math.round(amount+0.49);  //round up to integer


Werkt allemaal prima, daar niet van ;) . Behalve als amount 0.001 zou zijn, maar dat is gelukkig nooit het geval.

[ Voor 14% gewijzigd door BarôZZa op 31-08-2010 04:37 ]


Acties:
  • 0 Henk 'm!

  • TJHeuvel
  • Registratie: Mei 2008
  • Niet online
code:
1
var lastDate = '' + LastMonthYear + setLengthTwo(noOfDays);
Hehe, string casting :)

Freelance Unity3D developer


Acties:
  • 0 Henk 'm!

  • SysRq
  • Registratie: December 2001
  • Laatst online: 04-10 09:25
CodeCaster schreef op dinsdag 24 augustus 2010 @ 12:26:
Alle Den Haaglol ten spijt kwam ik vanmorgen weer een pareltje tegen. Ik ben pertinent tegen geneste if's. Het lijkt wel of men hier alleen positieve waarden aan een if wil geven, en "exit is een soort goto dus kun je beter niet gebruiken". Ik heb dus if's van een keer of tien diep gezien...

Dat levert dus zulke code op:
[...]
En daar heb ik meer dan 100 regels code weggeknipt. Totaal niet te volgen, hoewel dat ook aan gebrek aan functionaliteit van de IDE kan liggen.

Ik zou het zo doen, quick & dirty:
Delphi:
1
2
3
4
5
6
7
8
9
[...]

     try
        // Doe magic-achtige dingen
     except
     end;
     exit;
  end
[...]


Iemand? :P
Een try-except-end zonder code in de except?? Iew ..

Als je het al doet, dan met een heleboel commentaar waarom het _echt_ noodzakelijk is..

-


Acties:
  • 0 Henk 'm!

  • Laurens-R
  • Registratie: December 2002
  • Laatst online: 29-12-2024
Zoiets kan gewoon haast niet nodig zijn, omdat je dan feitelijk logic-by-exception (ik verzin hem terplekke; excuus als hier een officielere term voor bestaat) aan het implementeren bent. Exceptions zijn tenslotte exceptional. Exceptions zijn wat mij betreft een uiterst redmiddel.

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Ik heb het stuk code niet meer, geen idee ook meer waar het vandaan kwam (nogal veel code voorbij zien komen de afgelopen week), maar volgens mij was het een parse van een string naar een int, waarbij de int eerst op 0 was gezet. Dat kan natuurlijk ook in de except, maar ik vond het de moeite niet waard om te verplaatsen. :P

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • Killemov
  • Registratie: Januari 2000
  • Laatst online: 25-09 11:11

Killemov

Ik zoek nog een mooi icooi =)

CodeCaster schreef op dinsdag 24 augustus 2010 @ 12:26:
Ik ben pertinent tegen geneste if's. Het lijkt wel of men hier alleen positieve waarden aan een if wil geven, en "exit is een soort goto dus kun je beter niet gebruiken". Ik heb dus if's van een keer of tien diep gezien...
In Java-land lopen ook wel puristen rond die vinden dat je een return in een method alleen aan het eind moet zetten. Vervolgens is de opvatting als je meer dan 3 control-structures moet nesten dat je dan beter een stuk code moet refactoren. :r

De regel-van-de-duim voor mij is: "Minder code is beter." Dat geldt ook voor het "oppervlak" dat een stuk code inneemt.

Hey ... maar dan heb je ook wat!


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 04-10 18:08

Janoz

Moderator Devschuur®

!litemod

Mijn 'duimregel' is voornamelijk "minder code in een methode is beter".

Nikss maakt je code leesbaarder wanneer je een deel van je code extract naar een aparte private method, mits je een duidelijke naam voor die methode kiest. Mensen die vinden dat er een maximum lengte is voor methodenamen moeten daarentegen standrechtelijk worden geëxecuteerd.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 22:55
Yes, maar de grap zat hem vooral in het feit dat setLengthTwo(noOfDays) aangeroepen wordt. Ik ben nog geen maand van minder dan 10 dagen tegengekomen :>

Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 04-10 08:08

Pathogen

Shoop Da Whoop

BarôZZa schreef op dinsdag 31 augustus 2010 @ 13:23:
[...]

Yes, maar de grap zat hem vooral in het feit dat setLengthTwo(noOfDays) aangeroepen wordt. Ik ben nog geen maand van minder dan 10 dagen tegengekomen :>
Nee, maar wel de dagen 1 t/m 9. Nou is dat natuurlijk prima op te lossen met een display maskje ergens, maar goed.

Acties:
  • 0 Henk 'm!

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 22:55
Er wordt een functie aangeroepen die de lengte van de maand geeft, zoals ik al zei.
Dagen 1 tm 9 zijn irrelevant.

Acties:
  • 0 Henk 'm!

  • SysRq
  • Registratie: December 2001
  • Laatst online: 04-10 09:25
Laurens-R schreef op dinsdag 31 augustus 2010 @ 11:09:
Zoiets kan gewoon haast niet nodig zijn, omdat je dan feitelijk logic-by-exception (ik verzin hem terplekke; excuus als hier een officielere term voor bestaat) aan het implementeren bent. Exceptions zijn tenslotte exceptional. Exceptions zijn wat mij betreft een uiterst redmiddel.
Ik heb het een enkele keer wel eens gehad op het moment dat er een onjuiste exceptie gegeven werd in third-party code, waarvan wij de broncode niet hadden.
CodeCaster schreef op dinsdag 31 augustus 2010 @ 11:14:
Ik heb het stuk code niet meer, geen idee ook meer waar het vandaan kwam (nogal veel code voorbij zien komen de afgelopen week), maar volgens mij was het een parse van een string naar een int, waarbij de int eerst op 0 was gezet. Dat kan natuurlijk ook in de except, maar ik vond het de moeite niet waard om te verplaatsen. :P
Psst: StrToIntDef()

-


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 04-10 18:08

Janoz

Moderator Devschuur®

!litemod

BarôZZa schreef op dinsdag 31 augustus 2010 @ 13:35:
Er wordt een functie aangeroepen die de lengte van de maand geeft, zoals ik al zei.
Dagen 1 tm 9 zijn irrelevant.
mwah.. De grootste WTF in die code vind ik meer dat eerst de 0 er af gesloopt wordt door de parseInt om hem gelijk daarna weer toe te voegen, maar dat kan ook bij het aanpassen van het voorbeeld ontstaan zijn.
Laurens-R schreef op dinsdag 31 augustus 2010 @ 11:09:
Exceptions zijn wat mij betreft een uiterst redmiddel.
Er is een heel groot grijs gebied vanaf 'afwijken van de happyflow' tot aan 'computercrash'.

Exceptions zijn een ideale manier om aanroepende code op de hoogte te brengen van een probleem wat lokaal niet afgehandeld kan worden.

[ Voor 31% gewijzigd door Janoz op 31-08-2010 13:53 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 22:55
Janoz schreef op dinsdag 31 augustus 2010 @ 13:49:
[...]

mwah.. De grootste WTF in die code vind ik meer dat eerst de 0 er af gesloopt wordt door de parseInt om hem gelijk daarna weer toe te voegen, maar dat kan ook bij het aanpassen van het voorbeeld ontstaan zijn.
Er wordt een functie getNumberOfDays aangeroepen met die integers, daar is dat voor.

Voor de rest een hoop copy pasta. Is trouwens van een zeer groot bedrijf.

Acties:
  • 0 Henk 'm!

  • G70boX
  • Registratie: Juli 2004
  • Laatst online: 04-10 19:00
Nu het toch over datums gaat....

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
for($i = 1; $i <= 31; $i++)
{
    $month = date("m", strtotime($values['startDate']));
    $year = date("Y", strtotime($values['startDate']));
    $date = $year.$month.$i;

    if ( ($date >= $values['startDate']) && ($date <= $values['endDate']) )
    {
       $rd = substr($date,0,4)."-".substr($date,4,2)."-".substr($date,6,2)."T00:00:00";                       
       doeIets();
    }
}


Versimpeld voorbeeld van een systeem dat ik moet onderhouden en het staat vol met dit soort dingen 8)7.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 04-10 18:08

Janoz

Moderator Devschuur®

!litemod

Ah, ik kijk krom. Is het 1 of andere functie die de datum in juliaanse notatie omzet oid?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 02-10 16:55
G70boX schreef op dinsdag 31 augustus 2010 @ 15:44:
Nu het toch over datums gaat....

PHP:
1
// hax


Versimpeld voorbeeld van een systeem dat ik moet onderhouden en het staat vol met dit soort dingen 8)7.
Dat, en ook meer van dat soort dingen, lijkt me echt een gevalletje gebrek aan bekendheid (of beschikbaarheid) met datum-API's, standaard (binnen PHP of JS zelf) of als externe bibliotheek. NIH syndroom, maar ook wel The Developer's Dilemma (alhoewel het in dezen een beginnende variant daarvan lijkt te zijn).

(Samenvatting voor degenen die niet op TDWTF durven kijken: programmeurs hebben vaak een hekel aan saaie code en willen graag (te) complexe dingen maken (ofwel: de bestaansreden van TDWTF))

(Edit: URL fixxed, TDWTF moet geen uitroeptekens of komma's in zijn URLs gebruiken. Thanks nescafe!)

[ Voor 5% gewijzigd door YopY op 31-08-2010 16:51 ]


Acties:
  • 0 Henk 'm!

  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 20:36

Salandur

Software Engineer

G70boX schreef op dinsdag 31 augustus 2010 @ 15:44:
Nu het toch over datums gaat....

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
for($i = 1; $i <= 31; $i++)
{
    $month = date("m", strtotime($values['startDate']));
    $year = date("Y", strtotime($values['startDate']));
    $date = $year.$month.$i;

    if ( ($date >= $values['startDate']) && ($date <= $values['endDate']) )
    {
       $rd = substr($date,0,4)."-".substr($date,4,2)."-".substr($date,6,2)."T00:00:00";                       
       doeIets();
    }
}


Versimpeld voorbeeld van een systeem dat ik moet onderhouden en het staat vol met dit soort dingen 8)7.
Jaja, wat gebeurd er als de start & enddate in 2 verschillende maanden liggen...

Assumptions are the mother of all fuck ups | iRacing Profiel


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17

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


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 02-10 16:55
Laurens-R schreef op dinsdag 31 augustus 2010 @ 11:09:
Zoiets kan gewoon haast niet nodig zijn, omdat je dan feitelijk logic-by-exception (ik verzin hem terplekke; excuus als hier een officielere term voor bestaat) aan het implementeren bent. Exceptions zijn tenslotte exceptional. Exceptions zijn wat mij betreft een uiterst redmiddel.
Ja, alhoewel het, tenminste in Java en tenminste volgens bepaalde bronnen die er vandaag dingen over ge'blogd' hebben qua performance niet eens zoveel uit maakt.

Maar als het niet zoveel uit maakt moet je gewoon programmeren zodat het logisch is.

(hij geeft overigens ook wel een elegante oplossing voor het 'if null return X' ding - maak een nullobject die X teruggeeft. Als programmeur moet je er dan natuurlijk wel voor zorgen dat je nooit en te nimmer dingen op null initialiseert of null teruggeeft - een methode die ik tegenwoordig zoveel mogelijk probeer toe te passen, ook al programmeer ik niet zoveel)

Acties:
  • 0 Henk 'm!

Verwijderd

Ik wil zo weinig mogelijk van mezelf kunnen posten, maar dit is wel heel erg... :N Bij een hickup van de database server, werd (tot 5 min. geleden) de db username en password weergeven in de PDO Exception. 8)7

Heb er maar 1 woord voor:
Epic fail.. :X

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Is dat een fout van jezelf of van PDO? Waarom gebeurde dat dan en hoe heb je het opgelost?

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 02-10 16:55
Verwijderd schreef op vrijdag 03 september 2010 @ 03:11:
Ik wil zo weinig mogelijk van mezelf kunnen posten, maar dit is wel heel erg... :N Bij een hickup van de database server, werd (tot 5 min. geleden) de db username en password weergeven in de PDO Exception. 8)7

Heb er maar 1 woord voor:
Epic fail.. :X
Dat zijn typisch (wigwams) van die dingen die een developer doet tijdens development, en dan vooral als hij nog niet helemaal goed weet wat er gebeurt, maar die vergeten worden en gewoon zo gelaten worden.

Acties:
  • 0 Henk 'm!

Verwijderd

Michali schreef op vrijdag 03 september 2010 @ 09:25:
Is dat een fout van jezelf of van PDO? Waarom gebeurde dat dan en hoe heb je het opgelost?
Van mezelf, doordat hij geen verbinding kon maken met de database gooide hij een Exception die ik niet gevangen heb :9, en daar staat dan dus gebruikersnaam en wachtwoord als plaintext in. :+ Nu wordt het wel afgevangen en gelogd.. ;) En wachtwoord veranderd voor zekerheid. :D

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 04-10 18:08

Janoz

Moderator Devschuur®

!litemod

Nou, dan is de grootste WTF dus echt niet van jezelf. Degene die de credentials in de message zet is degene die gekielhaald moet worden.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Laurens-R
  • Registratie: December 2002
  • Laatst online: 29-12-2024
* zucht * ik wil niet vervelend zijn, maar soms vraag je je af wat voor hobbyisten er in het bedrijfsleven rondlopen als het aankomt op programmeren.

Ik kwam zojuist gewoon een functie tegen die een willekeurige folder van je harde schijf inleest. Ik kreeg alleen een jeukend gevoel toen ik las in de specificatie dat hij niet verder dan 3 niveau's diep in de onderliggende folderstructuur kon 'scannen'. Kijk ik in de code; kom ik het volgende tegen... (in psuedocode):


code:
1
2
3
4
5
6
7
8
9
10
11
12
folderCount = GetSubFolderCount()
if folderCount > 0 then
    foreach (subfolder in Folders)
        //scancode hier...
        folderCount = GetSubFolderCount()
        if folderCount > 0 then
            foreach (subfolder in Folders)
            //scancode hier...
                folderCount = GetSubFolderCount()
                if folderCount > 0 then
                    foreach (subfolder in Folders)
...etc


you get the picture....

... recursie is voor velen blijkbaar een moeilijk concept, maar ik denk niet dat je dan in een bedrijf software moet gaan ontwikkelen |:(

[ Voor 6% gewijzigd door Laurens-R op 03-09-2010 10:06 ]


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 21:35

Haan

dotnetter

Dat is wel echt om te janken ja :X

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

Verwijderd

@Laurens-R: Hoe heb je het opgelost, de loop nog 10x gekopieerd? 13 niveau's zal wel genoeg zijn, zo niet gewoon nog iets vaker kopiëren. :+

Acties:
  • 0 Henk 'm!

  • Laurens-R
  • Registratie: December 2002
  • Laatst online: 29-12-2024
Nadat ik met een aantal collega's heb staan huilen vanwege al het codeleed in de betreffende applicatie (dit was niet de enige WTF), heb ik de functie maar even herschreven ... in 8 regels code (was 72).

... ander leuk voorbeeldje in diezelfde app was de import functionaliteit van data in de SQL Server database. Dat ging niet echt op een manier van regel voor regel inlezen en een stored procedure gebruiken... zelfs een INSERT statement was al te veel gevraagd... Want wat doe je als je in 1 keer data wilt dumpen in een tabel... (houd je vast):

- start een batch script.
- remove all constraints van een tabel (anders gaat het import proces natuurlijk 'zeuren')
- plemp de data direct in die tabel via een command line tool
- alle constraints weer aanzetten
- hoop dat data voldoet aan de constraints.
- start de hoofdapplicatie
- start met bidden.

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Janoz schreef op vrijdag 03 september 2010 @ 09:38:
Nou, dan is de grootste WTF dus echt niet van jezelf. Degene die de credentials in de message zet is degene die gekielhaald moet worden.
Niet in de message, in de stack trace.
code:
1
2
3
4
5
exception 'PDOException' with message 'SQLSTATE[HY000] [2005] Unknown MySQL server host 'pietjepuk' (1)' in /var/www/test/Database.php:21
Stack trace:
#0 /var/www/test/Database.php(21): PDO->__construct('mysql:dbname=te...', 'user', 'password')
#1 /var/www/test/index.php(52): Database->Connect()
#2 {main}

Ik weet niet of ik dat een WTF moet vinden, lijkt me eerder by design. Je moet de stacktrace gewoon nooit buiten debug laten outputten.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 01-10 23:03
Verwijderd schreef op vrijdag 03 september 2010 @ 09:31:
[...]

Van mezelf, doordat hij geen verbinding kon maken met de database gooide hij een Exception die ik niet gevangen heb :9, en daar staat dan dus gebruikersnaam en wachtwoord als plaintext in. :+ Nu wordt het wel afgevangen en gelogd.. ;) En wachtwoord veranderd voor zekerheid. :D
Ach... Mijn werkgever vind security maar tijdverspilling en zowat alles hier heeft generieke passwords, geen passwords, guest accounts of default passwords... :P

Ja ook de databases van het kloksysteem, urenregistratie, hrm-pakket en moar :P

Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
CodeCaster schreef op vrijdag 03 september 2010 @ 10:40:
[...]

Niet in de message, in de stack trace.
code:
1
2
3
4
5
exception 'PDOException' with message 'SQLSTATE[HY000] [2005] Unknown MySQL server host 'pietjepuk' (1)' in /var/www/test/Database.php:21
Stack trace:
#0 /var/www/test/Database.php(21): PDO->__construct('mysql:dbname=te...', 'user', 'password')
#1 /var/www/test/index.php(52): Database->Connect()
#2 {main}

Ik weet niet of ik dat een WTF moet vinden, lijkt me eerder by design. Je moet de stacktrace gewoon nooit buiten debug laten outputten.
Je moet niet de waardes van de variabelen laten outputten omdat je nooit weet wie die dingen leest. C# toont je het type en de naam van de parameter, maar niet de waarde.

We are shaping the future

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