[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 ... 63 ... 103 Laatste
Acties:
  • 993.641 views

Acties:
  • 0 Henk 'm!

  • yade
  • Registratie: Mei 2002
  • Laatst online: 16-07 13:47
[b][message=36366744,noline]
C++:
1
2
3
4
5
6
7
8
const int CONSTANTE = 1; // overvloedig gebruik van hoofdletters

int variabele1 = 0;
int variabele2 = 0; // variabelen  op 0 zetten is niet goed voor de leesbaarheid

if (waar == true){
 // 1 lijntje met iets doen
} // { } niet nodig bij slechts 1 lijntje code na if
Ik vind dit eigenlijk best debiel, tenzij er op papier staat welke stijl je dient te gebruiken. Als dit nergens op papier staat, dan zou ik het zelfs aanvechten.

Acties:
  • 0 Henk 'm!

  • Marcj
  • Registratie: November 2000
  • Laatst online: 10:47
Caelorum schreef op vrijdag 08 juli 2011 @ 12:31:
[...]

Mja bij mij is dat min of meer hetzelfde. Soms zit ik een uur lang te coden en denk ik niet meer na. Als ik dan koffie heb gehaald en ik lees mijn eigen code dan spot ik de fouten sneller op deze manier :)
Ik vind met de not (!) zelfs beter leesbaar, vooral wanneer je een logische naam voor de variabele hebt:

Java:
1
2
3
if(!isValid) { // spreek uit: if not isValid
  // doe iets
}


of

Java:
1
2
3
if(isValid == false) { // spreek uit if isValid is false
  // doe iets
}


Of ben ik de enige die de code wil gaan uitspreken?

Acties:
  • 0 Henk 'm!

  • Armageddon_2k
  • Registratie: September 2002
  • Laatst online: 01-10 10:45

Armageddon_2k

Trotse eigenaar: Yamaha R6

Gewoon even een tik geven die docent.
Heb ik ook wel eens gedaan, we moesten in een stuk code aangeven welke regels er wel/niet goed waren.
Ik had eerst een 3 en dat is een 8 geworden. (Schaal 0-10).

Het ging om echt basis dingen, zoals ; vergeten en dat soort zaken, die moest je als "FOUT" markeren.
Maargoed ik had de hele code op die sheet bekeken, en unused variables ook aangekaart als "FOUT".
En meer van dat soort dingen. Tsja na overleg snapte hij dat ook wel.

Acties:
  • 0 Henk 'm!

  • Amras
  • Registratie: Januari 2003
  • Laatst online: 01-10 12:59
Ik schrijf wel == false, maar geen == true:

C#:
1
2
3
4
if (someBool)
    ...
if (someBool == false)
    ...


Dit doe ik omdat ik het persoonlijk prettiger vind lezen als someBool in het if-statement netjes uitlijnt met het begin van de regel eronder. Met een ! ervoor vind ik dat rommelig staan:

C#:
1
2
if (!somebool)
    someInt = 42;


Waarschijnlijk hebben veel mensen zoiets van ' 8)7 ' en 'waar maak je je druk om?', maar zo heeft iedereen zijn eigenaardigheden. ;)

Acties:
  • 0 Henk 'm!

  • PietrKempy
  • Registratie: Maart 2009
  • Laatst online: 08-06 10:55
Lector : "In het vervolg zal er rekening gehouden worden met dit soort dingen." Ik had in de theorie iets te veel foutjes gemaakt en aangezien die lector mij volgend jaar nog vaak les gaat geven heb ik maar niet te moeilijk gedaan (ben er na wel met een vriend mee geweest om het zelfde aan te kaarten en zijn punten zijn wel aangepast van een 9 naar een 10 wat wel iets belangrijker is dan van een 13 naar een 14 :p )

C++:
1
2
if (variabele == true)
if (!variabele) 

gebruik ik dan weer wel door mekaar. Dat is misschien toch iets wat rap kan aangepast worden en op het vlak van leesbaarheid en consequentie een stuk beter kan :p

en ja in België wordt alles op 20 gezet in het hoger

[ Voor 5% gewijzigd door PietrKempy op 08-07-2011 15:22 ]


Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Komt vaker voor hoor: Wikipedia: Content-addressable memory :)

[ Voor 3% gewijzigd door CyBeR op 08-07-2011 15:08 ]

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01-10 23:36

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ging het er niet meer om dat '-' lijkt op een smiley zonder emotie, hence "don't care"? :)

[ Voor 12% gewijzigd door .oisyn op 08-07-2011 15:24 ]

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!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 01-10 21:01

Matis

Rubber Rocket

Eentje van mijzelf :D
PHP:
1
2
$dbh = new PDO($connectString, DB_USER, DB_PASS);
$booking_count = $dbh->query('SELECT COUNT (*) FROM _Bookings', PDO::FETCH_ASSOC);

En ik maar afvragen waarom er niets bruikbaars in $booking_count stond :P

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Ik zie hem niet? :P

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


Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 30-09 23:08

CoolGamer

What is it? Dragons?

Ik denk dat hij $booking_count direct als integer wilde gebruiken, i.p.v. als array.

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


Acties:
  • 0 Henk 'm!

  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 09:38
Volgens mij heeft het te maken met de spatie na COUNT, wat gewoon een functie is en dus (zover ik weet) zelf parentheses moet hebben :)

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Ik weet niet hoe het in PDO gespecificeerd is maar ik neem aan dat een result zonder alias / naam niet in een associatieve fetch word teruggegeven.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 01-10 21:01

Matis

Rubber Rocket

Door FETCH_ASSOC te gebruiken geeft hij de key van de COUNT(*) operatie de naam van de kolom. Echter is er voor COUNT(*) geen colomnaam te vinden, dus krijg je een array met op index null een waarde (in mijn geval 40).
TheCoolGamer schreef op zaterdag 09 juli 2011 @ 15:35:
Ik denk dat hij $booking_count direct als integer wilde gebruiken, i.p.v. als array.
Nee dat had ik niet, want je krijgt anders een array terug met daarin de SQL-query.
PHP:
1
2
3
4
5
foreach ($booking_count as $booking)
{
    $booking_count = $booking[null];
    break;
}

Loste het op, maar dat vond ik zo ranzig, dat ik maar PDO::FETCH_NUM heb gebruikt en index 0 laat returnen :)
Avalaxy schreef op zaterdag 09 juli 2011 @ 15:46:
Volgens mij heeft het te maken met de spatie na COUNT, wat gewoon een functie is en dus (zover ik weet) zelf parentheses moet hebben :)
Ik babbel tegen een MSSQL-server aan en die heeft met deze syntax geen moeite. Ik moet wel toegeven dat die spatie daar onbedoeld staat en die heb ik bij deze weggehaald ;)
PrisonerOfPain schreef op zaterdag 09 juli 2011 @ 15:47:
Ik weet niet hoe het in PDO gespecificeerd is maar ik neem aan dat een result zonder alias / naam niet in een associatieve fetch word teruggegeven.
Close, but no cigar; Het resultaat staat dus netjes op index null :X

[ Voor 30% gewijzigd door Matis op 09-07-2011 15:52 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

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

MTWZZ

One life, live it!

Had er nog nooit van gehoord dus vandaar mijn wat verbaasde reactie

Nu met Land Rover Series 3 en Defender 90


Acties:
  • 0 Henk 'm!

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
Matis schreef op zaterdag 09 juli 2011 @ 15:21:
PHP:
1
2
$dbh = new PDO($connectString, DB_USER, DB_PASS);
$booking_count = $dbh->query('SELECT COUNT (*) FROM _Bookings', PDO::FETCH_ASSOC);
Als oplossing kan je een column alias gebruiken.
PHP:
1
$booking_count = $dbh->query('SELECT COUNT (*) AS "som" FROM _Bookings', PDO::FETCH_ASSOC);

Hoewel je reactie lijkt te suggereren dat je dit al geprobeerd hebt, maar dat het niet werkt?

[ Voor 15% gewijzigd door Infinitive op 11-07-2011 11:15 . Reden: reply iets kleiner gemaakt. ]

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Acties:
  • 0 Henk 'm!

  • ibmos2warp
  • Registratie: Januari 2007
  • Laatst online: 20-11-2023

ibmos2warp

Eval is Evil

In een framework wat ik ergens voor moet gebruiken
PHP:
1
2
3
4
5
6
$blaat = array();
$blaat['blup'] = 'tekst';
$blaat['blup2'] = 'tekst';
// Nog een aantal van zulk soort regels 
if(!empty($blaat)) {
// Werken

Beetje onzinnig he :9

Ik weet alles van niks
Vind Excel ongelovelijk irritant.


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01-10 23:36

.oisyn

Moderator Devschuur®

Demotivational Speaker

Matis schreef op zaterdag 09 juli 2011 @ 15:48:
Nee dat had ik niet, want je krijgt anders een array terug met daarin de SQL-query.
PHP:
1
2
3
4
5
foreach ($booking_count as $booking)
{
    $booking_count = $booking[null];
    break;
}
Waarom in hemelsnaam die foreach :?
Avalaxy schreef op zaterdag 09 juli 2011 @ 15:46:
Volgens mij heeft het te maken met de spatie na COUNT, wat gewoon een functie is en dus (zover ik weet) zelf parentheses moet hebben :)
Stomme MySQL quirk. Kun je uitzetten met sql_mode = "IGNORE_SPACE"

[ Voor 33% gewijzigd door .oisyn op 11-07-2011 11:47 ]

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!

  • sky-
  • Registratie: November 2005
  • Niet online

sky-

qn nna 👌

Lezen: Hij maakt gebruik van een MSSQL server, niet MySQL.

edit: my bad. :P

@ibmos2warp : Geen gebruik maken van empty(), gebruik isset(). :P

[ Voor 7% gewijzigd door sky- op 11-07-2011 13:22 ]

don't be afraid of machines, be afraid of the people who build and train them.


Acties:
  • 0 Henk 'm!

Verwijderd

sky- schreef op maandag 11 juli 2011 @ 11:56:
Lezen: Hij maakt gebruik van een MSSQL server, niet MySQL.
Lezen: Dat de vraagsteller (Matis) MSSQL gebruikt was irrelevant in die stelling van Avalaxy.

[edit]
Om op die stelling door te gaan, ik vind het raar dat die spatie eenzelfde werking zou kunnen* hebben als waar een komma voor bedoeld is.

* kunnen, dankzij sql_mode = "IGNORE_SPACE". Dit is waarschijnlijk te doen in de query, maar ook in de ini-configuratie?

[ Voor 45% gewijzigd door Verwijderd op 11-07-2011 12:04 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01-10 23:36

.oisyn

Moderator Devschuur®

Demotivational Speaker

sky- schreef op maandag 11 juli 2011 @ 11:56:
Lezen: Hij maakt gebruik van een MSSQL server, niet MySQL.
Ik reageerde louter op de reactie Avalaxy, de context van Matis is dus irrelevant. Mijn punt was dat de SQL standaard niet zegt dat er geen spatie tussen mag zitten - dit ligt puur aan MySQL. Maar de reactie van Avalaxy doet vermoeden dat het altijd zo is (ongeacht gebruikte RDBMS).
Verwijderd schreef op maandag 11 juli 2011 @ 12:02:
Om op die stelling door te gaan, ik vind het raar dat die spatie eenzelfde werking zou kunnen* hebben als waar een komma voor bedoeld is.
Dat zou ik ook raar vinden, maar hoe je die conclusie trekt is mij een beetje onduidelijk, het is namelijk helemaal niet zo.

MySQL doet het standaard niet zodat het kan distantieren tussen built-in functies en identifiers. Zo zou je je tabel of kolom best COUNT kunnen noemen, wat prima werkt omdat je er dan geen haakjes tussen zet. Op het moment dat je IGNORE_SPACE aanzet wordt COUNT een reserved word en kun je die dus niet meer zonder backquotes gebruiken als tabel- of kolomnaam.

Leesvoer.

[ Voor 26% gewijzigd door .oisyn op 11-07-2011 12:20 ]

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


Acties:
  • 0 Henk 'm!

Verwijderd

.oisyn schreef op maandag 11 juli 2011 @ 12:15:
Dat zou ik ook raar vinden, maar hoe je die conclusie trekt is mij een beetje onduidelijk, het is namelijk helemaal niet zo.
Onbegrip van IGNORE_SPACE blijkbaar :) Ow en daarbij, hoe ik erop kom, dat een spatie een komma-gedrag nabootst (in SQL) is me achteraf ook niet meer duidelijk :P
Op het moment dat je IGNORE_SPACE aanzet wordt COUNT een reserved word.
Klinkt best dom, al ben ik het omdat ik dacht de functionaliteit te kunnen begrijpen van IGNORE_SPACE, dankzij die bewoording.
Dus bedankt voor je leesvoer :)

[ Voor 10% gewijzigd door Verwijderd op 11-07-2011 13:13 ]


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 01-10 21:01

Matis

Rubber Rocket

.oisyn schreef op maandag 11 juli 2011 @ 11:43:
Waarom in hemelsnaam die foreach :?
Code is gekopieerd uit een ander project en als test werkt het prima. Overigens wordt er in het andere project wel degelijk meerdere regels teruggegeven en wordt er ook met de data gewerkt.
Dat het in dit stukje code wat overdreven is, ben ik met je eens, maar dat doet niets af aan de uitkomst.

[ Voor 34% gewijzigd door Matis op 11-07-2011 13:24 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01-10 23:36

.oisyn

Moderator Devschuur®

Demotivational Speaker

Matis schreef op maandag 11 juli 2011 @ 13:23:
Dat het in dit stukje code wat overdreven is, ben ik met je eens, maar dat doet niets af aan de uitkomst.
"wat overdreven" vind ik een understatement. Je misbruikt foreach om te testen of een array niet leeg is 8)7

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


Acties:
  • 0 Henk 'm!

Verwijderd

- Verdomme, topics zijn toch moeilijk. -

[ Voor 80% gewijzigd door Verwijderd op 11-07-2011 14:58 ]


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 01-10 21:01

Matis

Rubber Rocket

.oisyn schreef op maandag 11 juli 2011 @ 14:21:
"wat overdreven" vind ik een understatement. Je misbruikt foreach om te testen of een array niet leeg is 8)7
Nee, ik gebruik het om het eerste element er uit te halen :D

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 05-08 09:21

Not Pingu

Dumbass ex machina

Hoe maak je een lijstje met links in HTML :?
HTML:
1
2
3
4
<ul type="disc" class="ltekstbl" style="">
    <li type="square" style="text-indent:25px;"><font title="This is a list item" class="mtekstbl" style="cursor:pointer;" onmouseover="this.style.textDecoration='underline';" onmouseout="this.style.textDecoration='none';" onclick="document.Form.action='link/to/a/page.asp';document.Form.submit();">This is a list item</font></li>
    <!-- etc -->
</ul>

Certified smart block developer op de agile darkchain stack. PM voor info.


Acties:
  • 0 Henk 'm!

  • Amras
  • Registratie: Januari 2003
  • Laatst online: 01-10 12:59
Doe het dan met alleen divjes... :F

Acties:
  • 0 Henk 'm!

  • Morax
  • Registratie: Mei 2002
  • Laatst online: 11:40
Matis schreef op maandag 11 juli 2011 @ 18:40:
[...]

Nee, ik gebruik het om het eerste element er uit te halen :D
array_shift ?

What do you mean I have no life? I am a gamer, I got millions!


Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 01-10 23:03
Zie example 2: http://www.c-sharpcorner....dwritexmltutmellli21.aspx

Zou 'ie nog nooit van een switch hebben gehoort? :+

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01-10 23:36

.oisyn

Moderator Devschuur®

Demotivational Speaker

Matis schreef op maandag 11 juli 2011 @ 18:40:
[...]

Nee, ik gebruik het om het eerste element er uit te halen :D
Nee, dat doe je niet, je pakt altijd element null :). De code ín de foreach is ongerelateerd aan de foreach zelf. Dat je toevallig dezelfde array accessed doet er weinig toe. Je stelling had geklopt als je de assignment niet had laten plaatsvinden. Maar omdat je die wel doet, overschrijft het de iterator variabele van de foreach en daarmee is de forearch compleet nutteloos, anders dan controleren of de array wel inhoud heeft (zo niet, dan wordt de assignment ook niet uitgevoerd)

PHP:
1
2
3
4
5
foreach ($booking_count as $booking) 
{     // ^^^^^^^^^^^^^^ met de inhoud van deze variabele wordt nooit iets gedaan
    $booking_count = $booking[null]; // want hier wordt ie overschreven
    break; 
}


Doe dan:
PHP:
1
2
foreach ($booking_count as $booking)  
    break;

Of:
PHP:
1
2
if (!empty($booking)
    $booking_count = $booking[null];


:)

(Beide voorbeelden zijn natuurlijk niet equivalent, de eerste doet wat jij zegt dat het doet, de tweede doet daadwerkelijk wat jij doet)

[ Voor 51% gewijzigd door .oisyn op 12-07-2011 10:33 ]

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!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Not Pingu schreef op dinsdag 12 juli 2011 @ 09:43:
Hoe maak je een lijstje met links in HTML :?
HTML:
1
2
3
4
<ul type="disc" class="ltekstbl" style="">
    <li type="square" style="text-indent:25px;"><font title="This is a list item" class="mtekstbl" style="cursor:pointer;" onmouseover="this.style.textDecoration='underline';" onmouseout="this.style.textDecoration='none';" onclick="document.Form.action='link/to/a/page.asp';document.Form.submit();">This is a list item</font></li>
    <!-- etc -->
</ul>
:'( :X

Veel slechter gaat het niet worden; inline styles, onzinnige attr., inline javascript, font-tag, ... the horror.

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • BdR
  • Registratie: Juni 2001
  • Laatst online: 03-09 16:28

BdR

TV is gooder then books

Bij het opruimen van wat oude databases kom nu regelmatig tegen dat datumtijd gegevens in varchar(30) kolommen zijn opgeslagen (ipv datetime of date). Dezelfde gegevens van verschillende meetmomenten staan in verschillende tabellen (ook al zo'n mooie ontwerpfout trouwens) en de datatypes datetime en varchar zijn willekeurig door elkaar heen gebruikt.

Hierdoor is de helft goed (datetime) en de andere helft is in de loop der jaren in alle denkbare datum formaten verzameld, dus bijv. '2001-12-31', '12/31/2001', '31-12-2001', '31/12/2001', 'Dec 31 2001' etc.

Nogal een monnikenwerk om dat allemaal goed te converteren naar de nieuwe database. :{ *zucht*

mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider


Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
.oisyn schreef op dinsdag 12 juli 2011 @ 10:24:
PHP:
1
2
3
4
5
foreach ($booking_count as $booking) 
{     // ^^^^^^^^^^^^^^ met de inhoud van deze variabele wordt nooit iets gedaan
    $booking_count = $booking[null]; // want hier wordt ie overschreven
    break; 
}
Je interpreteert de foreach verkeerd om: er staat $booking_count as $booking, niet $booking_count in $booking!

Vóór de foreach heb je een array $booking_count = array(array('null' => 10))

In python ziet het algoritme er zo uit:
Python:
1
2
3
4
booking_count = [{'null': 10}, ]
for item in booking_count:"
  booking_count = item['null']
  break


waarom Matis dan niet gewoon
code:
1
booking_count = booking_count[0]['null']

doet is me wel een raadsel.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01-10 23:36

.oisyn

Moderator Devschuur®

Demotivational Speaker

ValHallASW schreef op dinsdag 12 juli 2011 @ 15:13:
[...]

Je interpreteert de foreach verkeerd om: er staat $booking_count as $booking, niet $booking_count in $booking!
d'Oh 8)7
Waarom krijg je überhaupt een array in een array terug :?
.edit: oh wacht het is natuurlijk een PDOStatement object met alle results.

Ok, duidelijk. Ik heb niets gezegd. Hey, kijk daar, een paard!

[ Voor 29% gewijzigd door .oisyn op 12-07-2011 15:56 ]

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!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 08:21
BdR schreef op dinsdag 12 juli 2011 @ 14:50:


Hierdoor is de helft goed (datetime) en de andere helft is in de loop der jaren in alle denkbare datum formaten verzameld, dus bijv. '2001-12-31', '12/31/2001', '31-12-2001', '31/12/2001', 'Dec 31 2001' etc.
kun je vast met een reg exp oplossen.
\d{4}/\d\{2}/\d{2}
\d{4}-\d\{2}-\d{2}
etc en dan uiteraard heb je $1 $2 $3, die je dan in het formaat wilt zetten die je wilt.
De enigste moeilijkere is "Dec 31 2001" maar ook op te lossen door \w\s\d{2}\s\d{4}

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!

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 05-08 09:21

Not Pingu

Dumbass ex machina

Een culture-aware date parser zou dat ook wel kunnen oplossen, als je hem alle culturen laat afgaan die je tegenkomt in de database.
Het grote probleem is hoe je betrouwbaar onderscheid maakt tussen formaat 2 en 4. Want er zal vast niet in alle gevallen op een van de eerste 2 posities een getal hoger dan 13 staan.

Certified smart block developer op de agile darkchain stack. PM voor info.


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 06:18
.oisyn schreef op dinsdag 12 juli 2011 @ 15:15:
[...]
Hey, kijk daar, een paard!
Are you sure?

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 01-10 21:01

Matis

Rubber Rocket

ValHallASW schreef op dinsdag 12 juli 2011 @ 15:13:
waarom Matis dan niet gewoon
code:
1
booking_count = booking_count[0]['null']

doet is me wel een raadsel.
Voor de duidelijkheid, de data zat met FETCH_ASSOC op index null, niet index 'null'. Zoals al gezegd, het was een koppiepasta van een project waarin eenzelfde opzet gebruikt werd.
Zonder verder teveel aan te passen heb ik alleen de query aangepast :)

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 09:35

Patriot

Fulltime #whatpulsert

Matis schreef op dinsdag 12 juli 2011 @ 16:19:
[...]

Voor de duidelijkheid, de data zat met FETCH_ASSOC op index null, niet index 'null'. Zoals al gezegd, het was een koppiepasta van een project waarin eenzelfde opzet gebruikt werd.
Zonder verder teveel aan te passen heb ik alleen de query aangepast :)
Toch blijft de foreach best wel een WTF, foreach gebruik je over het algemeen om over de gehele array te itereren. Dat er situaties zijn waar je tussentijds wilt stoppen kan ik me best voorstellen, maar dit is gewoon een nodeloos ingewikkelde manier om $booking_count->fetch() aan te roepen en het resultaat in $booking te stoppen :+

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 01-10 21:01

Matis

Rubber Rocket

Patriot schreef op woensdag 13 juli 2011 @ 02:41:
Toch blijft de foreach best wel een WTF, foreach gebruik je over het algemeen om over de gehele array te itereren. Dat er situaties zijn waar je tussentijds wilt stoppen kan ik me best voorstellen, maar dit is gewoon een nodeloos ingewikkelde manier om $booking_count->fetch() aan te roepen en het resultaat in $booking te stoppen :+
Dat ben ik met je eens, daarom heb ik het nu ook aangepast :) Maar in eerste instantie doelde ik daar eigenlijk niet op. Het ging me er meer om, dat bij een FETCH_ASSOC zonder associatie het resultaat in index null (en dus niet 'null') zit :+

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01-10 23:36

.oisyn

Moderator Devschuur®

Demotivational Speaker

Patriot schreef op woensdag 13 juli 2011 @ 02:41:
[...]


Toch blijft de foreach best wel een WTF, foreach gebruik je over het algemeen om over de gehele array te itereren. Dat er situaties zijn waar je tussentijds wilt stoppen kan ik me best voorstellen, maar dit is gewoon een nodeloos ingewikkelde manier om $booking_count->fetch() aan te roepen en het resultaat in $booking te stoppen :+
Nou ja, ik vind gewoon het eerste element pakken met een foreach en een break eigenlijk best clever :). array_shift() past de array aan dus dat wil je ook niet, en de enige andere mogelijkheid is volgens mij een reset() gevolgd door een current().

.edit: oh wacht, ik zie net dat reset() ook het eerste element teruggeeft :)
Nou, dan is foreach nog handig voor het verkrijgen van een reference naar het eerste element.

[ Voor 11% gewijzigd door .oisyn op 13-07-2011 10:43 ]

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!

  • jaapio88
  • Registratie: Januari 2011
  • Laatst online: 01-10 17:01
Noxious schreef op dinsdag 12 juli 2011 @ 10:19:
Zie example 2: http://www.c-sharpcorner....dwritexmltutmellli21.aspx

Zou 'ie nog nooit van een switch hebben gehoort? :+
Wat maakt een switch daar nu beter aan? Zegt overloading jou iets? ;)

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 06:18
jaapio88 schreef op woensdag 13 juli 2011 @ 15:12:
[...]


Wat maakt een switch daar nu beter aan? Zegt overloading jou iets? ;)
Een XmlNode kan maar één type hebben dacht ik zo? Een switch zou in dat geval iig al een behoorlijke verbetering zijn.

Overigens vond ik zelf deze wel leuk. Copy pasten is nooit een goed idee denk ik ^^
C#:
1
2
3
4
5
6
7
8
9
10
11
12
// if node type is an entity\
if (nType == XmlNodeType.Entity) 
{
       Console.WriteLine("Entity:" + textReader.Name.ToString());
       et = et + 1;
}
// if node type is a Process Instruction
if (nType == XmlNodeType.Entity)
{       
       Console.WriteLine("Entity:" + textReader.Name.ToString());       
       pi = pi + 1;
}


*edit*
@ onder: Een switch statement zou beter staan. Een XmlNodeType is een enum. Dat is ook wel logisch want je wilt niet dat iets en een Comment is en een Document.

[ Voor 10% gewijzigd door Caelorum op 13-07-2011 16:09 ]


Acties:
  • 0 Henk 'm!

  • Aloys
  • Registratie: Juni 2005
  • Niet online
Het lijkt mij dat dat type toch meerdere dingen tegelijk moet kunnen zijn, anders zou elke normale developer er tenminste "else if" van maken om onnodige controles over te slaan. Hoewel, dit topic gaat toch juist of die 'minder' normale developers? :+

edit: Ik doel niet op het kleine voorbeeldje hierboven maar op de codepasta op de webpagina.

[ Voor 16% gewijzigd door Aloys op 13-07-2011 17:03 ]


Acties:
  • 0 Henk 'm!

  • PietrKempy
  • Registratie: Maart 2009
  • Laatst online: 08-06 10:55
C#:
1
2
if (nType == XmlNodeType.Entity) 
{ 


en

C#:
1
2
if (nType == XmlNodeType.Entity)
{ 


lijkt mij toch 2 maal hetzelfde... dat bedoelde hij dus ook waarschijnlijk met dat het niet slim is om te copy pasten als je code schrijft. (wordt mij trouwens ook zo aangeleerd. het moment dat je op papier zet voeg dit hier nog eens in moet je nadenken of je het niet efficienter kan)

Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Lees het commentaar voor de if en kijk wat voor aktie wordt uitgevoerd na het if statement (indien waar). Programmeur is 'slechts' vergeten de enum waarde aan te passen. Heb ik ook weleens en daarom zijn de unittests uitgevonden zodat je je eigen code kunt testen..

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 06:18
Niemand_Anders schreef op woensdag 13 juli 2011 @ 17:37:
Lees het commentaar voor de if en kijk wat voor aktie wordt uitgevoerd na het if statement (indien waar). Programmeur is 'slechts' vergeten de enum waarde aan te passen. Heb ik ook weleens en daarom zijn de unittests uitgevonden zodat je je eigen code kunt testen..
En de writeline statement ook. Om nog maar niet te beginnen over het vergeten dat de switch statement bestaat :P

Anyways... tijd voor een nieuwe wtf :)

Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 09:47

Haan

dotnetter

Een paar weken geleden had ik hier al gerant over vreselijk slechte code van een externe 'programmeur', nou heb ik gisteren de hele dag bij de klant gezeten om met iemand met domeinkennis door de code te lopen om de bugs op te lossen. Daar bleek het allemaal nog erger te zijn dan ik dacht, op het genante af omdat de klant er naast zat.
Kom je bijvoorbeeld de variabele 'quoteAmountMin' tegen, dan denk je dat daar iets van een minimum offerte bedrag in zou staan. Maar nee, het bleek om huidig aantal eenheden te gaan :/ en het nieuwe aantal in variabele 'quoteAmountTop'. Bovendien ging het überhaupt niet om offertes, maar om facturen |:(
Als klap op de vuurpijl bleek ook nog eens dat stukken code die al 4-5 keer dubbel stonden, óók nog eens meerdere malen gebruikt werden in een andere solution 8)7

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

Verwijderd

.oisyn schreef op woensdag 13 juli 2011 @ 10:39:
[...]


Nou ja, ik vind gewoon het eerste element pakken met een foreach en een break eigenlijk best clever :). array_shift() past de array aan dus dat wil je ook niet, en de enige andere mogelijkheid is volgens mij een reset() gevolgd door een current().

.edit: oh wacht, ik zie net dat reset() ook het eerste element teruggeeft :)
Nou, dan is foreach nog handig voor het verkrijgen van een reference naar het eerste element.
PHP:
1
2
foreach($booking_count as &$booking) {
   $booking_count = $booking[null];

Die reference is niet handig meer, aangezien de array toch wordt overschreven door die waarde. :+
Ik neem dan aan dat PHP die array nergens anders meer bewaart.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01-10 23:36

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik had het niet over de code van Matis. Waar ik het over had was:
PHP:
1
2
foreach ($array as &$element)
    break;


$element is nou een reference naar het eerste element van $array.
Daar is niet echt een makkelijk alternatief voor, anders dan
PHP:
1
2
3
reset($array);
$kv = each($array);
$element = &$array[$kv[0]];


Het is ook wel lomp dat je anno 2011 nog steeds niet direct arrays kunt indexeren die gereturned worden uit een functie.

[ Voor 54% gewijzigd door .oisyn op 14-07-2011 10:56 ]

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!

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

drm

f0pc0dert

Het is ook wel lomp dat je anno 2011 nog steeds niet direct arrays kunt indexeren die gereturned worden uit een functie.
hear hear. 't Schijnt dat er in de parser code voor 5.4 wel het e.e.a. gefixt gaat zijn m.b.t. het generiek parsen van expressions. Ga ik binnenkort eens nader bestuderen, want dat is een van mijn jarenlange grootste frustraties in PHP.

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


Acties:
  • 0 Henk 'm!

Verwijderd

drm schreef op donderdag 14 juli 2011 @ 11:27:
[...]
hear hear. 't Schijnt dat er in de parser code voor 5.4 wel het e.e.a. gefixt gaat zijn m.b.t. het generiek parsen van expressions. Ga ik binnenkort eens nader bestuderen, want dat is een van mijn jarenlange grootste frustraties in PHP.
Inderdaad, ik heb lang geleden nog speciale functies aan moet maken die niets anders deden dan return $arr[$key] om zo alles nog in een expressie te krijgen. 8)7

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
drm schreef op donderdag 14 juli 2011 @ 11:27:
[...]
hear hear. 't Schijnt dat er in de parser code voor 5.4 wel het e.e.a. gefixt gaat zijn m.b.t. het generiek parsen van expressions. Ga ik binnenkort eens nader bestuderen, want dat is een van mijn jarenlange grootste frustraties in PHP.
Het zoekwoord is array dereferencing :)

PHP:
1
2
3
4
5
6
function foo ()
{
  return array('bar', 'baz');
}

echo foo()[1];

Acties:
  • 0 Henk 'm!

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

drm

f0pc0dert

Gister even de alpha2 van 5.4 geprobeerd. Array dereferencing: yay, maar helaas:
PHP:
1
2
<?php
new a()->foo;
nog steeds een parse error. Zo moeilijk kan dat toch niet zijn? Zelfs in Twig zit een generieke expressionparser. Die is dus al beter dan de parser van php zelf.... :/ toch maar 's meeloeren op de php-dev lists denk ik...

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


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01-10 23:36

.oisyn

Moderator Devschuur®

Demotivational Speaker

Probeer eens
PHP:
1
(new a())->foo;

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!

  • ReenL
  • Registratie: Augustus 2010
  • Laatst online: 14-09-2022
Dat je een array uit een functie direct aan wilt spreken snap ik, maar dat je één attribuut of functie uit je classe wilt halen direct naar het initialiseren :?

De enige zinnige toepassing die ik kan bedenken is als je gaat chainen ($this returnen), maar dan nog zou het overzichtelijker zijn eerst even je instance in een variable te proppen, maargoed dat is mijn mening. De vraag is dus in welke use case je dat zou willen (omdat ik nieuwsgierig ben)?

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01-10 23:36

.oisyn

Moderator Devschuur®

Demotivational Speaker

ReenL schreef op woensdag 20 juli 2011 @ 01:07:
maar dat je één attribuut of functie uit je classe wilt halen direct naar het initialiseren :?
Dat is het punt niet. 'new a()' is gewoon een expressie, net als '$foo' of 'bla()' of '$a + $b'. Als de linkerkant van de -> operator een expressie is die een object als resultaat heeft, dan zou je een member moeten kunnen ophalen. Dat werkt zo in vrijwel iederen programmeertaal, en dus ook voor een expressie als 'new a()'. Maar omdat de PHP expression parser zo brak in elkaar zit moeten ze dus elke soort expressie gaan zitten special-casen.

[ Voor 6% gewijzigd door .oisyn op 20-07-2011 10:09 ]

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!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
ReenL schreef op woensdag 20 juli 2011 @ 01:07:
Dat je een array uit een functie direct aan wilt spreken snap ik, maar dat je één attribuut of functie uit je classe wilt halen direct naar het initialiseren :?

De enige zinnige toepassing die ik kan bedenken is als je gaat chainen ($this returnen), maar dan nog zou het overzichtelijker zijn eerst even je instance in een variable te proppen, maargoed dat is mijn mening. De vraag is dus in welke use case je dat zou willen (omdat ik nieuwsgierig ben)?
Ik kan best wel situaties bedenken waarin je een complex algoritme in een eigen class verwerkt. Dan zou je zoiets als dit kunnen doen:

PHP:
1
$result = new AlgorithmPerformer($a, $b, $c)->perform();


Overigens zou ik dan meestal een static create functie maken voor instantieren, of zelfs een static perform die intern alles regelt, dus dan zou je dit probleem sowieso niet hebben:

PHP:
1
2
3
$result = AlgorithmPerformer::create($a, $b, $c)->perform();
// of
$result = AlgorithmPerformer::perform($a, $b, $c);

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01-10 23:36

.oisyn

Moderator Devschuur®

Demotivational Speaker

PHP:
1
$timeAsString = new DateTime()->format("Y-m-d H:i:s");

[ Voor 56% gewijzigd door .oisyn op 20-07-2011 12:23 ]

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!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Gewoon een ManagerBuilderFactory-pattern implementeren d.m.v. dependency injection, dan kán het gewoon niet mis gaan.

spoiler:
Hoezo overkill? :D

[ Voor 8% gewijzigd door Alex) op 20-07-2011 13:52 ]

We are shaping the future


Acties:
  • 0 Henk 'm!

  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 09:38
Overkill? Is het überhaupt mogelijk om inversion of control toe te passen en tóch een object aan te vragen bij een factory? :P

Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Tuurlijk wel, dan moet je gewoon even een ManagerBuilderFactoryFactory maken die dat voor je regelt.

We are shaping the future


Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 30-09 23:08

CoolGamer

What is it? Dragons?

Avalaxy schreef op woensdag 20 juli 2011 @ 13:56:
Overkill? Is het überhaupt mogelijk om inversion of control toe te passen en tóch een object aan te vragen bij een factory? :P
Tuurlijk. Een factory heeft als doel een geïnitialiseerd object terug te geven. De parameters die nodig zijn om zo'n object te maken zijn natuurlijk niet altijd references naar dependencies.

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


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Alex) schreef op woensdag 20 juli 2011 @ 14:01:
Tuurlijk wel, dan moet je gewoon even een ManagerBuilderFactoryFactory maken die dat voor je regelt.
Idd, gewoon een Abstract Factory pattern in de mix gooien. :P

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Icelus
  • Registratie: Januari 2004
  • Niet online
Heb een tijd naar deze code zitten kijken:
PHP:
1
2
3
4
5
$s = '2011-00-00';
$t = strtotime( $s );
$x = date('c',$t);

// $x = 2010-11-30 ??
Zou verwachten dat dit een fout zou opleveren.

Weggestopt in de handleiding bij de reacties vond ik toen:
PHP:
1
2
3
// You can use strtotime to get
// the date of the last day of the previous month:
date("Y-m-d", strtotime("2010-03-00")); // Returns 2010-02-28
M.a.w. 2011-00-00 wordt als 2011-01-01 geïnterpreteerd, vervolgens wordt er één maand en nog een dag afgetrokken met als resultaat 2010-11-30...

Developer Accused Of Unreadable Code Refuses To Comment


Acties:
  • 0 Henk 'm!

  • C0rnelis
  • Registratie: Juni 2010
  • Laatst online: 26-08 22:21
Icelus schreef op woensdag 20 juli 2011 @ 16:52:
Heb een tijd naar deze code zitten kijken:
PHP:
1
2
3
4
5
$s = '2011-00-00';
$t = strtotime( $s );
$x = date('c',$t);

// $x = 2010-11-30 ??
Zou verwachten dat dit een fout zou opleveren.

Weggestopt in de handleiding bij de reacties vond ik toen:
PHP:
1
2
3
// You can use strtotime to get
// the date of the last day of the previous month:
date("Y-m-d", strtotime("2010-03-00")); // Returns 2010-02-28
M.a.w. 2011-00-00 wordt als 2011-01-01 geïnterpreteerd, vervolgens wordt er één maand en nog een dag afgetrokken met als resultaat 2010-11-30...
Het staat ook gewoon in de officiele handleiding, als je weet waar je moet kijken in ieder geval ;)

http://nl3.php.net/mktime Bij Example #3 staat hier kort iets over vermeld.

PHP:
1
2
3
4
5
6
7
8
9
10
11
Example #3 Last day of next month
The last day of any given month can be expressed as the "0" day of the next month,
not the -1 day. Both of the following examples will produce the string "The last day 
in Feb 2000 is: 29".

<?php
$lastday = mktime(0, 0, 0, 3, 0, 2000);
echo strftime("Last day in Feb 2000 is: %d", $lastday);
$lastday = mktime(0, 0, 0, 4, -31, 2000);
echo strftime("Last day in Feb 2000 is: %d", $lastday);
?>

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 05:50
Icelus schreef op woensdag 20 juli 2011 @ 16:52:
Heb een tijd naar deze code zitten kijken:
PHP:
1
2
3
4
5
$s = '2011-00-00';
$t = strtotime( $s );
$x = date('c',$t);

// $x = 2010-11-30 ??
Zou verwachten dat dit een fout zou opleveren.
Indien je graag een datum wilt controleren in PHP kun je het beste de functie checkdate gebruiken. Zie ook: PHP: checkdate - Manual

Waarom doet mij dit denken aan: "It's not a bug, it's a feature". :P

[ Voor 6% gewijzigd door Manuel op 20-07-2011 17:15 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
PHP:
1
2
/**
 *Makes the following dialog not non-uninvisible  */
*bzzzt* *spark* *bzzzzzZZZZZZZZZZT* *POP*
Unhandled Exception: FuseBlownInHeadException occurred on line 2.

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!

  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 09:38
Manuel schreef op woensdag 20 juli 2011 @ 17:13:
[...]

Indien je graag een datum wilt controleren in PHP kun je het beste de functie checkdate gebruiken. Zie ook: PHP: checkdate - Manual

Waarom doet mij dit denken aan: "It's not a bug, it's a feature". :P
Amerikaanse datumnotatie :')

Acties:
  • 0 Henk 'm!

  • Icelus
  • Registratie: Januari 2004
  • Niet online
C0rnelis schreef op woensdag 20 juli 2011 @ 17:10:
[...]


Het staat ook gewoon in de officiele handleiding, als je weet waar je moet kijken in ieder geval ;)

http://nl3.php.net/mktime Bij Example #3 staat hier kort iets over vermeld.
Gebruik mktime zelden dus daar heb ik niet gekeken.
Strtotime is sowieso een aparte functie ;)
Avalaxy schreef op woensdag 20 juli 2011 @ 19:08:
[...]

Amerikaanse datumnotatie :')
Ja, dat is altijd fijn.
Helemaal leuk is een project waar data als strings zijn opgeslagen en iedere kolom in een ander formaat.

[ Voor 26% gewijzigd door Icelus op 21-07-2011 11:04 ]

Developer Accused Of Unreadable Code Refuses To Comment


Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 05:50
Icelus schreef op donderdag 21 juli 2011 @ 11:03:
Ja, dat is altijd fijn.
Helemaal leuk is een project waar data als strings zijn opgeslagen en iedere kolom in een ander formaat.
Simpel, zie ook: PHP: DateTime - Manual

Klein voorbeeld:
PHP:
1
2
3
4
$addedAt = new DateTime();
$expiresAt = new DateTime("7/21/2011");

var_dump($addedAt->createFromFormat("d/m/Y", "21/7/2011")->format("d-m-Y"), $expiresAt->format("d/m/Y"));


En anders kun je ook nog iets als dit doen om het te controleren:
PHP:
1
2
3
4
5
6
try {
    $expiresAt = new DateTime("7000/2100/2011");
} catch(Exception $e) {
    // Slechte foutafhandeling (als in niets)
    echo $e->getMessage();
}

Acties:
  • 0 Henk 'm!

  • YakuzA
  • Registratie: Maart 2001
  • Niet online

YakuzA

Wat denk je nou zelluf hey :X

Icelus schreef op woensdag 20 juli 2011 @ 16:52:
Heb een tijd naar deze code zitten kijken:
PHP:
1
2
3
4
5
$s = '2011-00-00';
$t = strtotime( $s );
$x = date('c',$t);

// $x = 2010-11-30 ??
Zou verwachten dat dit een fout zou opleveren.

Weggestopt in de handleiding bij de reacties vond ik toen:
PHP:
1
2
3
// You can use strtotime to get
// the date of the last day of the previous month:
date("Y-m-d", strtotime("2010-03-00")); // Returns 2010-02-28
M.a.w. 2011-00-00 wordt als 2011-01-01 geïnterpreteerd, vervolgens wordt er één maand en nog een dag afgetrokken met als resultaat 2010-11-30...
Foute uitleg, dan zou er 2010-12-31 uit moeten komen oid.

Waarschijnlijk wordt 2011-00-00 eerst automatisch geconverteerd/geinterpreteerd naar 2010-12-00, en dan 2010-11-30

Death smiles at us all, all a man can do is smile back.
PSN


Acties:
  • 0 Henk 'm!

  • ValHallASW
  • Registratie: Februari 2003
  • Niet online
YakuzA schreef op donderdag 21 juli 2011 @ 12:24:
[...]

Foute uitleg, dan zou er 2010-12-31 uit moeten komen oid.

Waarschijnlijk wordt 2011-00-00 eerst automatisch geconverteerd/geinterpreteerd naar 2010-12-00, en dan 2010-11-30
Nee, voor 2010-12-31 moet je 2011-01-00 opvragen: dan krijg je namelijk de laatste dag van de vorige maand.

2011-00-01 -> 2010-12-01
2011-01-00 -> 2010-12-31
2011-00-00 -> 2010-11-30

Klopt volgens mij gewoon hoor, hoewel een foutmelding bij 'tweemaal dubbel nul' niet onredelijk zou zijn.

Acties:
  • 0 Henk 'm!

  • YakuzA
  • Registratie: Maart 2001
  • Niet online

YakuzA

Wat denk je nou zelluf hey :X

ValHallASW schreef op donderdag 21 juli 2011 @ 13:01:
[...]

Nee, voor 2010-12-31 moet je 2011-01-00 opvragen: dan krijg je namelijk de laatste dag van de vorige maand.

2011-00-01 -> 2010-12-01
2011-01-00 -> 2010-12-31
2011-00-00 -> 2010-11-30

Klopt volgens mij gewoon hoor, hoewel een foutmelding bij 'tweemaal dubbel nul' niet onredelijk zou zijn.
'Foute uitleg' sloeg op
M.a.w. 2011-00-00 wordt als 2011-01-01 geïnterpreteerd
zo'n php functie laat mij dan weer afvragen wat '0000-00-00' voor output gaat geven :D

[ Voor 7% gewijzigd door YakuzA op 21-07-2011 13:08 ]

Death smiles at us all, all a man can do is smile back.
PSN


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
YakuzA schreef op donderdag 21 juli 2011 @ 13:06:
[...]
zo'n php functie laat mij dan weer afvragen wat '0000-00-00' voor output gaat geven :D
9999-11-30 zou logisch zijn in ieder geval ( Of als negatieve getallen ondersteund worden -0001-11-30 )

[ Voor 10% gewijzigd door Woy op 21-07-2011 13:33 ]

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

  • Patriot
  • Registratie: December 2004
  • Laatst online: 09:35

Patriot

Fulltime #whatpulsert

YakuzA schreef op donderdag 21 juli 2011 @ 13:06:
[...]

'Foute uitleg' sloeg op

[...]
Dat was geen foute uitleg, je kunt het alleen niet los zien van de twee opmerkingen die daarna komen: Dat er daarna 1 maand en daarna 1 dag vanaf gaat. Als je het los gaat lezen (of 'erger', quoten) dan klopt er inderdaad niets meer van, maar dat is bij wel meer dingen zo :+

Acties:
  • 0 Henk 'm!

  • Icelus
  • Registratie: Januari 2004
  • Niet online
YakuzA schreef op donderdag 21 juli 2011 @ 13:06:
zo'n php functie laat mij dan weer afvragen wat '0000-00-00' voor output gaat geven :D
Hangt van het systeem/OS af.
nyctimus at yahoo dot com 06-Jan-2011 01:54
strtotime() produces different output on 32 and 64 bit systems running PHP 5.3.3 (as mentioned previously). This affects the "zero date" ("0000-00-00 00:00:00") as well as dates outside the traditional 32 date range.

strtotime("0000-00-00 00:00:00") returns FALSE on a 32 bit system.
strtotime("0000-00-00 00:00:00") returns -62169955200 on a 64 bit system.

kendsnyder at gmail dot com 06-Nov-2009 05:54
Watch out when using strtotime() on a string that might begin with "0000-00-00" as MySQL stores "null" dates on a not-null date column. The value returned by strtotime("0000-00-00") varies by php version. Consider the following:

PHP:
1
2
3
4
5
6
date('Y-m-d',strtotime('0000-00-00 00:00:00'));
// returns "1969-12-31" on the following versions:
//   Win XP php 5.2.9-2
//   Win 7 php 5.3.0
//   RHEL 5 php 5.2.8
// but returns "-0001-11-30" on RHEL 5 php 5.2.10!

Developer Accused Of Unreadable Code Refuses To Comment


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
Net gevonden in een groot project.
C#:
1
2
3
4
5
6
7
8
9
10
public void Replace_SleutelWaardeInBestandsIdVervangen_BestandsIdBevatNieuweSleutel()
{
    string nieuweSleutel = "~45-2~";
    string expected = string.Format("test{0}.Sample.jpg", nieuweSleutel);
    string input = "test~48-5~.Sample.jpg";

    string actual = Regex.Replace(input, @"~\d+-\d+~", nieuweSleutel);

    Assert.AreEqual(expected, actual);
}

Somige mensen snappen niet dat unit tests gemaakt zijn om units te testen van de applicatie die je maakt
Deze unit test heeft niet zo veel code coverage.. :|

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 09:38
De naam van die method ook :D

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
BasieP schreef op donderdag 21 juli 2011 @ 17:06:
Net gevonden in een groot project.
C#:
1
2
3
4
5
6
7
8
9
10
public void Replace_SleutelWaardeInBestandsIdVervangen_BestandsIdBevatNieuweSleutel()
{
    string nieuweSleutel = "~45-2~";
    string expected = string.Format("test{0}.Sample.jpg", nieuweSleutel);
    string input = "test~48-5~.Sample.jpg";

    string actual = Regex.Replace(input, @"~\d+-\d+~", nieuweSleutel);

    Assert.AreEqual(expected, actual);
}

Somige mensen snappen niet dat unit tests gemaakt zijn om units te testen van de applicatie die je maakt
Deze unit test heeft niet zo veel code coverage.. :|
Kijk in je SCM history wie het gedaan heeft en mail 'm een link naar http://www.sliver.com/dotnet/SnippetCompiler/ of http://ideone.com

Acties:
  • 0 Henk 'm!

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-09 19:10

Macros

I'm watching...

Net geschreven. Ik denk dat het bijna onmogelijk is om te bepalen wat de play methode doet als je niet weet van de twee enums die gebruik maken van deze methode.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    public static <E extends Enum<E>> Winner play(E p1, E p2) {
        if (p1 == p2) {
            return Winner.TIE;
        }
        final int o1 = p1.ordinal();
        final int o2 = p2.ordinal();
        return ((o1 - o2) & 1) == 0 ^ o1 > o2 ? Winner.PLAYER2 : Winner.PLAYER1;
    }

    public enum Element3 {
        SCISSORS, PAPER, ROCK
    }

    public enum Element5 {
        SCISSORS, PAPER, ROCK, LIZARD, SPOCK
    }

"Beauty is the ultimate defence against complexity." David Gelernter


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Wat doet die 0 ^ daar? Die heeft geen effect.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 01-10 21:01

Matis

Rubber Rocket

Dóh

[ Voor 99% gewijzigd door Matis op 21-07-2011 18:26 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-09 19:10

Macros

I'm watching...

PrisonerOfPain schreef op donderdag 21 juli 2011 @ 18:24:
Wat doet die 0 ^ daar? Die heeft geen effect.
De ^ is de operator met hier de minste precedence. Het is een xor tussen "((o1 - o2) & 1) == 0" en "o1 > o2".

"Beauty is the ultimate defence against complexity." David Gelernter


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Macros schreef op donderdag 21 juli 2011 @ 18:28:
[...]

De ^ is de operator met hier de minste precedence. Het is een xor tussen "((o1 - o2) & 1) == 0" en "o1 > o2".
Ah, fair enough. In dat geval had ik gewoon een != operator gebruikt.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 01-10 21:01

Matis

Rubber Rocket

Macros schreef op donderdag 21 juli 2011 @ 18:28:
De ^ is de operator met hier de minste precedence. Het is een xor tussen "((o1 - o2) & 1) == 0" en "o1 > o2".
Vertrouw daar aub niet op de compiler en zet er gewoon haakjes omheen, zoals je in de uitleg doet :)

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Matis schreef op donderdag 21 juli 2011 @ 18:30:
[...]

Vertrouw daar aub niet op de compiler en zet er gewoon haakjes omheen, zoals je in de uitleg doet :)
Waarom niet, als er iets vast staat in de compiler / language spec is het operator precedence. Leesbaarheid daargelaten.

[ Voor 3% gewijzigd door PrisonerOfPain op 21-07-2011 18:31 ]


Acties:
  • 0 Henk 'm!

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-09 19:10

Macros

I'm watching...

Hey, het was niet voor niets hier gepost ;)

"Beauty is the ultimate defence against complexity." David Gelernter


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 01-10 21:01

Matis

Rubber Rocket

PrisonerOfPain schreef op donderdag 21 juli 2011 @ 18:31:
Waarom niet, als er iets vast staat in de compiler / language spec is het operator precedence. Leesbaarheid daargelaten.
Kleine moeite, groot gemak. Jij en ik gingen beide de boot in. Om over een eventuele stagiair nog maar niet te spreken ;)
Bij ons op het werk wordt je allereerst gewaarschuwd als je dit soort operaties niet aftimmert met haakjes. Doe je dat niet, dan timmert de code reviewer jou dicht :+

@hierboven. Het is niet zozeer een slecht programmeervoorbeeld, maar wel onleesbaar :P

[ Voor 7% gewijzigd door Matis op 21-07-2011 18:39 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 30-09 23:08

CoolGamer

What is it? Dragons?

Best verwarrend, die lage precedence van de bitwise OR/XOR/AND operatoren. Zelf zou ik ze boven de == operator verwachten.

Dingen als if (a & 0x04 == 0) werken niet goed zonder haakjes.

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


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 01-10 21:01

Matis

Rubber Rocket

TheCoolGamer schreef op donderdag 21 juli 2011 @ 20:42:
Best verwarrend, die lage precedence van de bitwise OR/XOR/AND operatoren. Zelf zou ik ze boven de == operator verwachten.

Dingen als if (a & 0x04 == 0) werken niet goed zonder haakjes.
Daarom schrijft Misra ook voor:
47 (adv): No dependence should be placed on C’s precedence rules
Gelukkig zorgt FlexeLint er bij ons voor dat de code niet eens wil compileren :)

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01-10 23:36

.oisyn

Moderator Devschuur®

Demotivational Speaker

Matis schreef op donderdag 21 juli 2011 @ 21:02:
[...]

Daarom schrijft Misra ook voor:
Je zegt "daarom", maar ik zie geen reden. En je mag dus ook niet vertrouwen op a*b+c? Daarnaast, als ik de andere regels zo lees, zoals het niet mogen gebruiken van continue en break... oh please.

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!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 01-10 21:01

Matis

Rubber Rocket

.oisyn schreef op donderdag 21 juli 2011 @ 21:19:
Je zegt "daarom", maar ik zie geen reden. En je mag dus ook niet vertrouwen op a*b+c? Daarnaast, als ik de andere regels zo lees, zoals het niet mogen gebruiken van continue en break... oh please.
Daarom heeft wel zeker een reden, immers het probleem/gevaar dat TheCoolGamer in "[alg] Slechtste programmeervoorbeelden d..." voorschrijft.
Daarnaast zijn er bij ons, sinds het invoeren van statische code analyse, reviews en globale buildservers, een stuk minder bugs geïntroduceerd. Sommige regels lijken heel erg verneukeratief, maar leveren uiteindelijk een heel mooi stukje uniformiteit op. Net als 1 exit-point per functie, eigenlijk ook bij elke {}; zoals while-lussen en switch-statements.
Ik zeg niet dat het de heilige graal is, maar bij ons heeft het zeker geholpen :)

[ Voor 12% gewijzigd door Matis op 21-07-2011 21:37 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:15
Tja, hoeveel slechter de programmeurs zijn, des te meer zin dat soort maatregelen hebben...

[ Voor 9% gewijzigd door Soultaker op 21-07-2011 21:46 ]


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
^^ Wou eigenlijk ook net zoiets zeggen. Het zijn hoogstens vuistregels, die je kan breken als je bewust bezig bent.

Voorbeeld:
70 (req): Functions shall not call themselves directly or indirectly
W T F. Recursie kan soms gewoon het beste algoritme zijn. :z

En 1 exit point per functie is ook niet per se feitelijk beter. Sterker nog, ik ben juist enorme fan van snel returnen in het geval van triviale resultaten of errors, zodat je de rest van de functie niet indent.

{signature}


Acties:
  • 0 Henk 'm!

  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 09:38
Nouja, recursie ís vaak ook gewoon simpelweg niet de beste methode, en de cases dat het niet iteratief opgelost kan worden zijn zeldzaam.

En dat bedoelen ze in die guidelines vast ook wel, ik denk niet dat je het als een harde regel moet zien.

Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 30-09 23:08

CoolGamer

What is it? Dragons?

De PDF is de 1998 versie. In 2004 is een nieuwe versie uitgekomen. Ze hebben zelf ook wel ingezien dat sommige van die regels niet werkten.

Nieuwe versie: http://www.ristancase.com...SRA-C%202004%20Rules.html

Daar is de regel veranderd in:
12.1 (adv-): Limited dependence should be placed on C's operator precedence rules in expressions.
Klinkt al een stuk logischer

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


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Avalaxy schreef op donderdag 21 juli 2011 @ 21:53:
Nouja, recursie ís vaak ook gewoon simpelweg niet de beste methode
Nee hehe, je hebt lui die denken dat alles een recursief probleem is. :P Net zo idioot als lui die denken dat alles iteratief moet. :Y)
en de cases dat het niet iteratief opgelost kan worden zijn zeldzaam.
Als het iteratief kan, is dat nog niet per se de meest leesbare / intuitieve / meest performante oplossing. Maar ja, dat is lastig want dan noem ik een paar criteria waar je over moet nadenken ipv blind regeltjes volgen.

{signature}


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Voutloos schreef op donderdag 21 juli 2011 @ 22:00:
Als het iteratief kan, is dat nog niet per se de meest leesbare / intuitieve / meest performante oplossing. Maar ja, dat is lastig want dan noem ik een paar criteria waar je over moet nadenken ipv blind regeltjes volgen.
Recursief en performant gaan meestal niet goed samen anders. Laat ik het zo zeggen; meestal is de iteratieve oplossing de snellere.

[ Voor 8% gewijzigd door PrisonerOfPain op 21-07-2011 22:04 ]


Acties:
  • 0 Henk 'm!

  • acemoo
  • Registratie: Maart 2006
  • Laatst online: 10:46
PrisonerOfPain schreef op donderdag 21 juli 2011 @ 22:02:
[...]


Recursief en performant gaan meestal niet goed samen anders.
Meestal niet, soms wel.
Pagina: 1 ... 63 ... 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. :)