[alg] Slechtste programmeervoorbeelden deel 5 Vorige deel Overzicht

Pagina: 1 ... 6 ... 20 Laatste
Acties:

Acties:
  • 0 Henk 'm!

  • PdeBie
  • Registratie: Juni 2004
  • Nu online
Ik heb mijn collega overigens even gewezen op de DATEPART functie in SQL en de properties (year, month etc.) van het DateTime object in C#. Wellicht dat hij dan inziet dat een DateTime helemaal niet onhandig is :P

[ Voor 4% gewijzigd door PdeBie op 22-08-2014 15:35 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)

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

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

Door de fantastische interface van tweakblogs is dat ding toch zo terug te vinden? Oh wacht...

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!

  • PdeBie
  • Registratie: Juni 2004
  • Nu online
hahaha net even gelezen. Hilarisch zeg. En ook gewoon dwars tegen al het commentaar in gaan ook.
Vooral jij RobIII krijgt er flink van langs zie ik. Je mag dan wel moderator zijn, hier ben je gewoon commentator. _O- _O-
http://chaozz.tweakblogs....sql-and-php.html#r_135876

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 06:47
Die laatste comment ook ^^

Acties:
  • 0 Henk 'm!

  • Russel88
  • Registratie: Juli 2009
  • Laatst online: 13:06
Ja.
Ik vond het echt briljant. Helaas wel typerend voor de IT wereld. Mensen die een "briljant" idee hebben en er zo van overtuigd zijn dat ze niet inzien waarom 98% het op een andere manier doet.
Ik zit nu ook bij een klant waar zulke briljante ideeën in het architectuur zit. Er vanaf praten is moeilijk/frustrerend en wordt niet altijd gewaardeerd.

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 19-10 11:21
Russel88 schreef op vrijdag 22 augustus 2014 @ 16:28:
[...]


Ja.
Ik vond het echt briljant. Helaas wel typerend voor de IT wereld. Mensen die een "briljant" idee hebben en er zo van overtuigd zijn dat ze niet inzien waarom 98% het op een andere manier doet.
Ik zit nu ook bij een klant waar zulke briljante ideeën in het architectuur zit. Er vanaf praten is moeilijk/frustrerend en wordt niet altijd gewaardeerd.
Het lullige is dat er vaak erg veel tijd gaat zitten in datsoort "oplossingen" (en vooral de workarounds die weer nodig zijn om het werkbaar te maken). Als iemand je dan komt vertellen dat het allemaal kut en klote is en veel makkelijker kan, is het erg verleidelijk om direct met je hakken in het zand te gaan.

Soms is het gewoon legacy, tot en met PHP5.2 bijvoorbeeld was het in PHP niet mogelijk met datetime-objecten te werken. Maar vaker is het idd gewoon slecht onderzoek en/of slechte kennis van de programmeer omgeving.

Acties:
  • 0 Henk 'm!

  • PdeBie
  • Registratie: Juni 2004
  • Nu online
mcDavid schreef op vrijdag 22 augustus 2014 @ 16:37:
[...]
Soms is het gewoon legacy, tot en met PHP5.2 bijvoorbeeld was het in PHP niet mogelijk met datetime-objecten te werken. Maar vaker is het idd gewoon slecht onderzoek en/of slechte kennis van de programmeer omgeving.
Klopt.

Ik ben hier de enige (op papier officiële) ontwikkelaar. Mijn manager heeft hier vroeger alles ontwikkeld en nu doet een collega van mij dit ook zo nu en dan (de maker van de eerder genoemde VARCHAR datum).

Dit heeft echter als gevolg dat ik hier niemand heb om mee te sparren als het gaat om ontwikkeling en nieuwe technieken. Ik probeer zoveel mogelijk als ik kan (en als ik zin heb) bij te lezen, maar dat lukt niet altijd. Dus daarom dat ik hier op het programming forum regelmatig post. En het komt inderdaad wel eens voor dat ik iets gemaakt heb en dat ik later ineens een post op internet zie met een veel simpelere oplossing waar ik destijds nog niet vanaf wist.

--edit--

klein tabelletje gemaakt met 2 kollomen. 1 kolom met datum/tijd als varchar en een als datetime. Vervolgens de volgende queries gemaakt en naar mijn collega gestuurd. Kijken wat hij nu makkelijker vind.

SQL:
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
-- SELECTEER HET JAARTAL VAN DE DATUMS
    SELECT LEFT(Date1, 4) As [Jaar - varchar]
    FROM datumTestjes

    SELECT YEAR(Date2) As [Jaar - datetime]
    FROM datumTestjes 


-- DATUMS WAAR HET JAARTAL KLEINER IS DAN HET JAAR VAN VANDAAG
    SELECT Date1 AS [Jaar kleiner dan - varchar]
    FROM datumTestjes
    WHERE LEFT(Date1, 4) < YEAR(GETDATE())

    SELECT Date2 AS [Jaar kleiner dan - datetime]
    FROM datumTestjes
    WHERE YEAR(Date2) < YEAR(GETDATE())


-- DATUMS WAAR DE MAAND KLEINER IS DAN DE MAAND VAN VANDAAG
    SELECT Date1 AS [Maand kleiner dan - varchar]
    FROM datumTestjes
    WHERE SUBSTRING(Date1, 5, 2) < MONTH(GETDATE()) 
    -- positie 5? Sinds wanneer beginnen we bij 1 te tellen ipv 0? 
    -- En wat nou als maand ineens op een andere positie staat, doordat de klant het anders dan afgesproken aanlevert?

    SELECT Date2 AS [Maand kleiner dan - datetime]
    FROM datumTestjes
    WHERE MONTH(Date2) < MONTH(GETDATE())

[ Voor 36% gewijzigd door PdeBie op 22-08-2014 16:58 ]


Acties:
  • 0 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 16-10 07:51
How sad...

Afbeeldingslocatie: http://x3.cdn03.imgwykop.pl/c3201142/comment_hTOW66X5I8HA2iAOVlHCBOatH9OL4zyk.jpg

Acties:
  • 0 Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 10:30

Firesphere

Yoshis before Hoshis

Maar inline javascript == evil!

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


Acties:
  • 0 Henk 'm!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 18-06 09:30

Amanush

Saai persoon.

Wauw.. Wauw.. Oh, wauw!

Iemand heeft lopen slapen..

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • 0 Henk 'm!

  • Webgnome
  • Registratie: Maart 2001
  • Laatst online: 13:38
Amanush schreef op zondag 24 augustus 2014 @ 18:41:
[...]

Wauw.. Wauw.. Oh, wauw!

Iemand heeft lopen slapen..
Of had tijd teveel..

Strava | AP | IP | AW


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 19-10 11:21
Schoolopdracht: "Maak een website met javascript, minimaal x regels code"

[ Voor 22% gewijzigd door mcDavid op 25-08-2014 10:34 ]


Acties:
  • 0 Henk 'm!

  • Tim_bots
  • Registratie: April 2004
  • Laatst online: 15-10 07:59
Noem me gek, maar ik vraag me toch af hoe je dit dan zou moeten oplossen. Ik ken de volgende methode:
PHP:
1
2
3
4
5
6
7
<?php
php code
?>
HTML code
<?php
optioneel meer PHP
?>

Maar ik vraag mezelf af of er nog betere methoden zijn 't is al weer even geleden dat ik PHP heb geschreven

Alvast hartelijk bedankt voor al jullie hulp en reacties, Tim Bots


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 11:53
Het is geen PHP file! Dit wordt door de browser uitgevoerd als javascript, vandaar 'document.write'.

Ik heb wel eens een PHP file gezien met print-statements op dezelfde manier, ik denk dat je daar op doelt. Bijna net zo erg.

[ Voor 39% gewijzigd door MBV op 25-08-2014 11:07 ]


Acties:
  • 0 Henk 'm!

  • Tim_bots
  • Registratie: April 2004
  • Laatst online: 15-10 07:59
Whoops, foutje van mijn kant.
Dan is <script></script> een betere oplossing.

Maar ik bedoelde inderdaad de PHP versie.

[ Voor 22% gewijzigd door Tim_bots op 25-08-2014 11:45 ]

Alvast hartelijk bedankt voor al jullie hulp en reacties, Tim Bots


Acties:
  • 0 Henk 'm!

  • jbdeiman
  • Registratie: September 2008
  • Laatst online: 11:25
Als er nu nog iets aan variabele data in zat, was het nog enigszins te begrijpen, hier is een onbegrijpelijke keuze gemaakt.... Het grappige is ook dat de output qua opbouw ook niet "je van het" is, aangezien er dubbele " worden gebruikt in de HTML standaard zelf..

Ach en waarom zou je het ook zo bouwen dat het efficiënt is, niet alleen stuur je meer data naar de gebruiker toe vanaf de website, daarnaast moet de computer van de gebruiker ook nog harder aan het werk, omdat die alle JavaScript nog uit moet voeren.

Acties:
  • 0 Henk 'm!

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 13:57
Tim_bots schreef op maandag 25 augustus 2014 @ 11:45:
Whoops, foutje van mijn kant.
Dan is <script></script> een betere oplossing.

Maar ik bedoelde inderdaad de PHP versie.
In PHP kan je het netjes oplossen door een template engine (bijv. Twig of Plates) te gebruiken.

Acties:
  • 0 Henk 'm!

  • Tribits
  • Registratie: Augustus 2011
  • Laatst online: 11:06

Tribits

Onkruid vergaat niet

jbdeiman schreef op maandag 25 augustus 2014 @ 12:06:
[...]

Ach en waarom zou je het ook zo bouwen dat het efficiënt is, niet alleen stuur je meer data naar de gebruiker toe vanaf de website, daarnaast moet de computer van de gebruiker ook nog harder aan het werk, omdat die alle JavaScript nog uit moet voeren.
Gokje: HTML include hack voor systeem zonder server/server side scripting.

Master of questionable victories and sheer glorious defeats


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

Barryvdh schreef op maandag 25 augustus 2014 @ 13:08:
[...]

In PHP kan je het netjes oplossen door een template engine (bijv. Twig of Plates) te gebruiken.
Of gewoon de template engine genaamd PHP :Y)

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!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 19-10 11:21
Tribits schreef op maandag 25 augustus 2014 @ 14:14:
[...]


Gokje: HTML include hack voor systeem zonder server/server side scripting.
Neuh, dat doe je ook niet op zo'n manier. Dit moet gewoon een experimentje zijn van iemand die zijn eerste stapjes zet in webdevelopment en geen idee heeft waar hij mee bezig is. We hebben allemaal wel eens zoiets geks gedaan denk ik. Er worden alleen (gelukkig) niet altijd printscreens van op internet gepost.

Acties:
  • 0 Henk 'm!

  • Spinal
  • Registratie: Februari 2001
  • Laatst online: 12:01
Stond een tijdje geleden op Reddit met als titel "What I found while reading code of an outsourced project", dat zou een hoop verklaren :)

Full-stack webdeveloper in Groningen


Acties:
  • 0 Henk 'm!

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 13:57
.oisyn schreef op maandag 25 augustus 2014 @ 14:35:
[...]

Of gewoon de template engine genaamd PHP :Y)
Dat kan ook, maar vind ik persoonlijk minder netjes ;)
Oud artikeltje, maar daarom niet minder waar: http://fabien.potencier.o...templating-engines-in-php

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Barryvdh schreef op maandag 25 augustus 2014 @ 16:05:
[...]

Dat kan ook, maar vind ik persoonlijk minder netjes ;)
Oud artikeltje, maar daarom niet minder waar: http://fabien.potencier.o...templating-engines-in-php
"and no, using the more compact <?= shortcut is not an option" ja goed, als we om arbitaire redenen bepaalde language features uit gaan sluiten kun je zo'n artikel overal wel overschrijven. "php doesn't support exceptions - and yeah, using 'throw' is not an option" :/

Acties:
  • 0 Henk 'm!

  • jbdeiman
  • Registratie: September 2008
  • Laatst online: 11:25
PrisonerOfPain schreef op maandag 25 augustus 2014 @ 16:12:
[...]


"and no, using the more compact <?= shortcut is not an option" ja goed, als we om arbitaire redenen bepaalde language features uit gaan sluiten kun je zo'n artikel overal wel overschrijven. "php doesn't support exceptions - and yeah, using 'throw' is not an option" :/
Veel van dat soort "grappen" is prima te ondervangen in instellingen inderdaad. Dat verbaast me ook altijd het meest als ik e.e.a. lees over PHP en waarom dat niet goed zou zijn. Als je er netjes mee omgaat/ werkt is het een prima taal. Stel je e.e.a. goed in, dan kan je het heel streng maken en netjes werken prima afdwingen.

Maar met sommige mensen is dat ook een discussie zonder einde... Elke taal heeft zo zijn eigenaardigheden, maar om daarom nu een taal af te schieten...

Acties:
  • 0 Henk 'm!

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 13:57
PrisonerOfPain schreef op maandag 25 augustus 2014 @ 16:12:
[...]


"and no, using the more compact <?= shortcut is not an option" ja goed, als we om arbitaire redenen bepaalde language features uit gaan sluiten kun je zo'n artikel overal wel overschrijven. "php doesn't support exceptions - and yeah, using 'throw' is not an option" :/
Nouja, het artikel is wel uit 2009 he, <?= shorttags zijn pas sinds PHP5.4 standaard ingeschakeld in PHP, dus op oudere versies kan je er niet blind vanuit gaan dat het overal werkt.
Leesbaarheid/syntax is natuurlijk persoonlijke voorkeur, maar dingen zoals security (automatisch escapen etc) en templates extenden/includen etc gaat met Twig wel een stuk makkelijker (of met andere Template engines, bij Plates is een template engine in PHP, maar dus niet gewoon 'plat php')
(Toevallig vandaag nog een issue over binnen gehad dat template niet gerenderd werd door short tags :+)

[ Voor 9% gewijzigd door Barryvdh op 25-08-2014 16:24 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22-10 14:14

Janoz

Moderator Devschuur®

!litemod

Euhm, jbdeiman. Ik snap je reactie niet helemaal. Heb je het artikel en de reactie van PrisonerOfPain wel goed gelezen?

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!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Barryvdh schreef op maandag 25 augustus 2014 @ 16:21:
[...]

Nouja, het artikel is wel uit 2009 he, <?= shorttags zijn pas sinds PHP5.4 standaard ingeschakeld in PHP, dus op oudere versies kan je er niet blind vanuit gaan dat het overal werkt.
Je hebt de handleiding verkeerd gelezen. Voor 5.4 viel <?= onder short_open_tag, daarna niet meer. Echter stond short_open_tag vanaf 4.x of nog langer al default aan.

Maar goed, als iemand z'n installatie verneukt en dat lekker uit zet kan 'ie wat mij betreft gewoon verwachten dat niet alle software werkt. Je gaat toch ook niet code voor een "memory_limit" van 1, of "file_uploads" van 0 of een "post_max_size" van 0? Verder hebben 90% van de webdevs gewoon controle over de webserver waar hun meuk op draait...

[ Voor 6% gewijzigd door PrisonerOfPain op 25-08-2014 16:33 ]


Acties:
  • 0 Henk 'm!

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 13:57
PrisonerOfPain schreef op maandag 25 augustus 2014 @ 16:32:
[...]
Je hebt de handleiding verkeerd gelezen. Voor 5.4 viel <?= onder short_open_tag, daarna niet meer. Echter stond short_open_tag vanaf 4.x of nog langer al default aan.

Maar goed, als iemand z'n installatie verneukt en dat lekker uit zet kan 'ie wat mij betreft gewoon verwachten dat niet alle software werkt. Je gaat toch ook niet code voor een "memory_limit" van 1, of "file_uploads" van 0 of een "post_max_size" van 0? Verder hebben 90% van de webdevs gewoon controle over de webserver waar hun meuk op draait...
Nouja, het komt stiekem toch nog best wel eens voor dat hij uit staat in de praktijk. Ik bedoelde alleen maar dat je er (zeker 5 jaar geleden) niet zomaar standaard vanuit kon gaan dat dat overal werkt.

Maar dat was 1 zinnetje van het hele artikel, zeker niet het belangrijkste punt.

Zie daarnaast ook zijn follow-up post: http://fabien.potencier.o...-engines-in-php-follow-up
Many people seem to like the PHP short tags. First, about the math. If you compare <?= $var ?> with <?php echo $var ?>, the difference is 7 characters, not 2. But that's really not the main problem.

Apart from problems like XML support, the short_open_tag setting, the shared hosts configuration issue, and some more, it's also about coding standards:

PEAR:
"Always use <?php ?> to delimit PHP code, not the <? ?> shorthand. This is required for PEAR compliance and is also the most portable way to include PHP code on differing operating systems and setups."

Zend:
"Short tags are never allowed."

The Pear and Zend projects are serious, so there should have some reasons to disallow short tags, no?

But as Eli mentioned in his post, I would also like to see a PHP evolution to take this problem into account: "... there are a number of people (including myself [Eli]), who have been tossing around the idea of proposing a new option to the short_tags directive for PHP, allowing not just having them turned on or off. But allowing a 3rd option, that would enable <?= ?> while disabling <? ?>"
(En nogmaals, dat kwam dus uit 2009, pas in 5.4 (2012 dus) was die optie altijd beschikbaar)

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Barryvdh schreef op maandag 25 augustus 2014 @ 16:52:
Nouja, het komt stiekem toch nog best wel eens voor dat hij uit staat in de praktijk. Ik bedoelde alleen maar dat je er (zeker 5 jaar geleden) niet zomaar standaard vanuit kon gaan dat dat overal werkt.
Dat zal best, maar waarom zou ik rekening moeten houden met iemand die moedwillig z'n setup vernagelt? Het enige wat er op aan te merken valt is dat je <?= niet kunt overloaden zodat je zelf eventueel escaping zou kunnen doen oid.

short_open_tags is gewoon een PHP_INI_PERDIR (sinds 4.0.1 daarvoor een _ALL) dus je kunt 'm prima op project basis overloaden. Kortom, gigantische onzin allemaal.

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 19-10 11:21
Sowieso snap ik niet wat het nadeel van short open tags is, dat je daar een setting voor zou willen hebben. Daarentegen begrijp ik wel dat projecten geen short open tags in hun coding standaard toestaan, want dan wordt je forum gelijk overspoeld door mensen die je framework niet aan de praat krijgen bij hostingbedrijf X dat shot open tags uit heeft staan.

De closing tag ?> gebruik ik überhaupt nooit.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

mcDavid schreef op maandag 25 augustus 2014 @ 17:02:
De closing tag ?> gebruik ik überhaupt nooit.
We hadden het over PHP files als templates. Natuurlijk ga je dan de closing tag gebruiken :P

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!

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 13:57
mcDavid schreef op maandag 25 augustus 2014 @ 17:02:
Sowieso snap ik niet wat het nadeel van short open tags is, dat je daar een setting voor zou willen hebben. Daarentegen begrijp ik wel dat projecten geen short open tags in hun coding standaard toestaan, want dan wordt je forum gelijk overspoeld door mensen die je framework niet aan de praat krijgen bij hostingbedrijf X dat shot open tags uit heeft staan.

De closing tag ?> gebruik ik überhaupt nooit.
Nouja, als het dus conflict met andere code (bijv xml, als je dat met php genereert)
If you want to use PHP in combination with XML, you can disable this option in order to use <?xml ?> inline. Otherwise, you can print it with PHP, for example: <?php echo '<?xml version="1.0"?>'; ?>. Also, if disabled, you must use the long form of the PHP open tag (<?php ?>).
Maargoed, vanaf PHP5.4 boeit het voor <?= ?> dus sowieso niet meer allemaal, maar dat wil niet zeggen dat template engines dan ineens niet meer nuttig zijn. Het enige nut was niet besparing van een paar tekens.. Beetje makkelijk om het hele artikel af te schieten omdat je het met 1 opmerking niet eens bent.

Acties:
  • 0 Henk 'm!

  • jbdeiman
  • Registratie: September 2008
  • Laatst online: 11:25
Janoz schreef op maandag 25 augustus 2014 @ 16:29:
Euhm, jbdeiman. Ik snap je reactie niet helemaal. Heb je het artikel en de reactie van PrisonerOfPain wel goed gelezen?
Ik doel vooral op dit stukje uit de tekst die ik quote...:
ja goed, als we om arbitaire redenen bepaalde language features uit gaan sluiten kun je zo'n artikel overal wel overschrijven...

Dat klopt, en dat is ook wat ik merk als mensen over de taal PHP an sich praten. Misschien dat ik anders zou reageren als ik het artikel had gelezen, maar dat heb ik dus niet.. :-) Ik lees ook heel vaak reacties waarom (bijvoorbeeld PHP, maar geldt net zo voor andere talen) slecht zouden zijn.. Die gaan vaak in op features of zaken die standaard worden goedgekeurd, maar ook wel afgevangen kunnen worden.

Ach, ik zal het artikel later eens in alle rust doorlezen, en als ik dat nodig vindt mijn reactie herzien.. :+

Acties:
  • 0 Henk 'm!

  • Tribits
  • Registratie: Augustus 2011
  • Laatst online: 11:06

Tribits

Onkruid vergaat niet

mcDavid schreef op maandag 25 augustus 2014 @ 14:44:
[...]

Neuh, dat doe je ook niet op zo'n manier. Dit moet gewoon een experimentje zijn van iemand die zijn
Je zal mij niet horen zeggen dat dit de juiste manier is om dat te doen, maar als je kijkt naar de bestandsnaam word min of meer al duidelijk dat het een header template is. Dat is dan wel het antwoord op de 'waarom' vraag die iedereen stelt. Op Reddit werd door iemand overigens dezelfde opmerking gemaakt. Ik twijfel overigens of dit in alle browsers werkt, wel eens rare dingen zien gebeuren in IE met document.write statements.

Overigens krijg ik sterkt het idee (oa door de indents) dat de hele js gegenereerd is uit een html bestandje, misschien met een macro in de editor of zo. Was logischer geweest om dan met macro's gewoon de header in de html te plakken, hoewel je dan wel ieder html bestand opnieuw moet parsen als je header verandert.

Master of questionable victories and sheer glorious defeats


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 11:53
Ik snap het nut nog steeds niet van een template engine in een template engine schrijven. Vooral niet omdat er vervolgens nog mensen zijn die hun eigen template engine in Smarty gaan schrijven, to confuse the Russians :X

Als je een template engine wilt schrijven, doe dat dan in een snellere en meer gestructureerde taal als Java of C++.

Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 14:08

RayNbow

Kirika <3

MBV schreef op maandag 25 augustus 2014 @ 18:01:
Als je een template engine wilt schrijven, doe dat dan in een snellere en meer gestructureerde taal als Java of C++Haskell.
O-)

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • Tribits
  • Registratie: Augustus 2011
  • Laatst online: 11:06

Tribits

Onkruid vergaat niet

MBV schreef op maandag 25 augustus 2014 @ 18:01:
Als je een template engine wilt schrijven, doe dat dan in een snellere en meer gestructureerde taal als Java of C++.
Of in C en noem het "Personal Home Page/Forms Interpreter" of zo :P

Master of questionable victories and sheer glorious defeats


Acties:
  • 0 Henk 'm!

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 13:57
MBV schreef op maandag 25 augustus 2014 @ 18:01:
Ik snap het nut nog steeds niet van een template engine in een template engine schrijven. Vooral niet omdat er vervolgens nog mensen zijn die hun eigen template engine in Smarty gaan schrijven, to confuse the Russians :X

Als je een template engine wilt schrijven, doe dat dan in een snellere en meer gestructureerde taal als Java of C++.
Veel template engines compileren gewoon naar php, dus is de overhead minimaal.

Acties:
  • 0 Henk 'm!

  • naam
  • Registratie: Oktober 2007
  • Laatst online: 13-10 18:11
Vandaag in een overgenomen project een mooie manier van het tellen van rijen uit een SQL query gevonden:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function getCount()
{
  global $conn;
  $a = 0;

  $sql = "SELECT * FROM table";
  try
  {
    $rows = $conn->query($sql);
    foreach ($rows as $row)
    {
      $a++;
    }
  }
  catch (PDOException $e)
  {
    echo "Query failed: " . $e->getMessage();
  }

  return $a;
}

Acties:
  • 0 Henk 'm!

  • WernerL
  • Registratie: December 2006
  • Nu online
naam schreef op dinsdag 02 september 2014 @ 14:33:
Vandaag in een overgenomen project een mooie manier van het tellen van rijen uit een SQL query gevonden:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function getCount()
{
  global $conn;
  $a = 0;

  $sql = "SELECT * FROM table";
  try
  {
    $rows = $conn->query($sql);
    foreach ($rows as $row)
    {
      $a++;
    }
  }
  catch (PDOException $e)
  {
    echo "Query failed: " . $e->getMessage();
  }

  return $a;
}
Een paar maanden terug ook een soortgelijke code tegengekomen voor het opzoeken van een specifiek record 8)7

Blijkbaar door iemand geschreven die geen SQL kan ofzo. :P

Roses are red, violets are blue, unexpected '{' on line 32.


Acties:
  • 0 Henk 'm!

  • naam
  • Registratie: Oktober 2007
  • Laatst online: 13-10 18:11
@WernerL,
En vermoedelijk ook geen PHP, anders zou het een count($rows) geweest zijn lijkt mij..

Acties:
  • 0 Henk 'm!

  • Stroopwafels
  • Registratie: September 2009
  • Laatst online: 10:08
naam schreef op dinsdag 02 september 2014 @ 14:33:
Vandaag in een overgenomen project een mooie manier van het tellen van rijen uit een SQL query gevonden:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function getCount()
{
  global $conn;
  $a = 0;

  $sql = "SELECT * FROM table";
  try
  {
    $rows = $conn->query($sql);
    foreach ($rows as $row)
    {
      $a++;
    }
  }
  catch (PDOException $e)
  {
    echo "Query failed: " . $e->getMessage();
  }

  return $a;
}
Werkt vooral lekker als je honderdduizenden records hebt... :+

Acties:
  • 0 Henk 'm!

  • WernerL
  • Registratie: December 2006
  • Nu online
naam schreef op dinsdag 02 september 2014 @ 14:44:
@WernerL,
En vermoedelijk ook geen PHP, anders zou het een count($rows) geweest zijn lijkt mij..
Of $rows->rowCount(); :P

Roses are red, violets are blue, unexpected '{' on line 32.


Acties:
  • 0 Henk 'm!

  • naam
  • Registratie: Oktober 2007
  • Laatst online: 13-10 18:11
Nog een mooie, programmeur had gehoord dat hij pdo moest gebruiken:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$vraagNummer = $vragen[$b]["nummer"];
$t = date('Y-m-d H:i:s');
$level = $vragen[$b]["level"];
$subLevel = $vragen[$b]["subLevel"];
$cat = $vragen[$b]["catOrg"];
$gegevenAntwoord = $vragen[$b]["gegevenAntwoord"];
$score = $vragen[$b]["goedFout"];

$sql2 = "INSERT INTO answers VALUES ('','$user','$vraagNummer','$t','$gegevenAntwoord','$score', '$level', '$subLevel','$cat')";

try
{
  $conn->query($sql2);
}
catch (PDOException $e)
{
  "Query failed: " . $e->getMessage();
}


Volgens mij is dat nog steeds niet hoe je parameterized queries doet. |:(

[ Voor 12% gewijzigd door naam op 02-09-2014 16:48 ]


Acties:
  • 0 Henk 'm!

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
naam schreef op dinsdag 02 september 2014 @ 16:48:
Nog een mooie, programmeur had gehoord dat hij pdo moest gebruiken:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$vraagNummer = $vragen[$b]["nummer"];
$t = date('Y-m-d H:i:s');
$level = $vragen[$b]["level"];
$subLevel = $vragen[$b]["subLevel"];
$cat = $vragen[$b]["catOrg"];
$gegevenAntwoord = $vragen[$b]["gegevenAntwoord"];
$score = $vragen[$b]["goedFout"];

$sql2 = "INSERT INTO answers VALUES ('','$user','$vraagNummer','$t','$gegevenAntwoord','$score', '$level', '$subLevel','$cat')";

try
{
  $conn->query($sql2);
}
catch (PDOException $e)
{
  "Query failed: " . $e->getMessage();
}


Volgens mij is dat nog steeds niet hoe je parameterized queries doet. |:(
Beter iets dan niets :X
Maar goed ook beginners moeten het leren, iedereen heeft vast wel eens een keer een rampzalig stukje code geschreven waarvan je later dacht 'waar was ik in vredesnaam mee bezig'

Acties:
  • 0 Henk 'm!

  • naam
  • Registratie: Oktober 2007
  • Laatst online: 13-10 18:11
@BoringDay,
Klopt, maar dit is code die momenteel gewoon vrolijk in productie draait. De ontwikkelaar heeft nooit van beveiliging gehoord (en hij is docent op een ICT academie nota bene :X )

[ Voor 6% gewijzigd door naam op 02-09-2014 17:15 ]


Acties:
  • 0 Henk 'm!

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
naam schreef op dinsdag 02 september 2014 @ 17:14:
@BoringDay,
Klopt, maar dit is code die momenteel gewoon vrolijk in productie draait. De ontwikkelaar heeft nooit van beveiliging gehoord (en hij is docent op een ICT academie nota bene :X )
Dat had inderdaad anders gemoeten, dit is gewoon Q&D. Maar redelijk eenvoudig om uit de productie te slopen en vervangen voor een elegantere methode lijkt me? Daarom ben ik ook niet altijd een voorstander om alleen naar papiertjes en titels te kijken :X

Acties:
  • 0 Henk 'm!

  • naam
  • Registratie: Oktober 2007
  • Laatst online: 13-10 18:11
@BoringDay,
Is inderdaad makkelijk om eruit te slopen, ware het niet dat dit soort code door het hele project heen zit, zonder gebruik te maken van classes en/of functies.. :-(

Acties:
  • 0 Henk 'm!

Verwijderd

naam schreef op dinsdag 02 september 2014 @ 17:14:
(en hij is docent op een ICT academie nota bene :X )
Sorry, maar als dat echt zo is, is het laatste beetje vertrouwen wàt ik in het Nederlands hogere onderwijs had nu echt definitief weg. En iedereen maar blijven hameren dat HBO zo fantastisch is en een harde eis is voor menig werkgever (niet waar) dus je moet dat papiertje wel halen. Want ja, Bachelor of ICT bekt zo lekker he.

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 06:47
HBO ICT opleidingen in Nederland zijn over het algemeen ook best kut. Ze hebben elk hun eigen beperkte set die ze behandelen waardoor essentiële kennis niet wordt overgedragen en ik ken er weinig die echt ook maar enigszins fatsoenlijk security behandelen.
Overigens hebben de WO opleidingen weer een heel ander probleem, maar ok.
Volg nu in mijn master een vak van andere masters (onder de noemer computer science) en ook gewoon vandaag een 3 uur mogen luisteren naar een basale uitleg van big oh notatie en Turing machines. Vind ik persoonlijk niet master waardig, maar misschien verwacht ik dan ook teveel?

Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 14:08

RayNbow

Kirika <3

Caelorum schreef op dinsdag 02 september 2014 @ 20:15:
Volg nu in mijn master een vak van andere masters (onder de noemer computer science) en ook gewoon vandaag een 3 uur mogen luisteren naar een basale uitleg van big oh notatie en Turing machines. Vind ik persoonlijk niet master waardig, maar misschien verwacht ik dan ook teveel?
Berekenbaarheids- en complexiteitstheorie hoort volgens mij in de bachelor thuis?

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 06:47
Dat dus. Niet dat ik het erg vind want ik kom van het HBO af en doe nu een niet CS master. Heb nooit hardcore informatica gestudeerd dus dit is een mooi uitstapje naar een (sterk) gerelateerd veld.

Hoe dan ook... Vind het zelf erger dat dit soort code zijn we vind naar productie dan dat iemand het schrijft. Niet iedereen weet overal van of is ervaren genoeg om fatsoenlijke code te schrijven zonder begeleiding.

[ Voor 35% gewijzigd door Caelorum op 02-09-2014 20:50 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

Zoiets als het volgende kwam ik zojuist tegen in onze codebase:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
enum SomeStuff
{
    StuffFoo,
    StuffBar,
    StuffMeow,
    StuffHenk,
    StuffPiet,
    // nog 20 andere items

    NumStuffs
};

void GetStuffs(int * stuffs, SomeClass * instance)
{
    for (int i = 0; i < NumStuffs; i++)
    {
        int value;
        switch(i)
        {
        case SuffFoo:
            value = instance->GetFoo();
            break;

        case SuffBar:
            value = instance->GetBar();
            break;

        case SuffMeow:
            value = instance->GetMeow();
            break;

        // etc
        }

        if (Check(value))
            stuffs[i] = value;
    }
}



|:(

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!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 12:55

Haan

dotnetter

C#:
1
var client = new HttpClient { Timeout = TimeSpan.FromMilliseconds(timeOutSeconds * 1000) };

Wel netjes TimeSpan.FromXXX gebruiken, maar dan alsnog de mist in gaan :P

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

RayNbow schreef op dinsdag 02 september 2014 @ 20:35:
[...]

Berekenbaarheids- en complexiteitstheorie hoort volgens mij in de bachelor thuis?
Ligt aan hoe geavanceerd het is natuurlijk. Als je pas in je master aan complexiteit toekomt is dat wel treurig, maar d'r zijn genoeg opdrachten in te bedenken waarmee je menig bachelorstudent over de kling jaagt. :+

Heeft geen speciale krachten en is daar erg boos over.


  • Caelorum
  • Registratie: April 2005
  • Laatst online: 06:47
Dit is allemaal nogal offtopic nu denk ik, maar ik deel je mening maar half. Op de universiteit zou ik het in ieder geval wel verwachten ja, maar het past niet echt bij de hbo opleiding die ik heb gedaan. In ieder geval zijn er andere dingen belangrijker in die opleiding dan complexiteitstheorie enz.

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 17-10 09:52
Ik kom in onze codebase steeds vaker dit pareltje tegen:
C#:
1
Objects.Where(b => b.GetType().GetInterfaces().Contains(typeof(ISomeInterface))).FirstOrDefault()


Waarom niet zo?
C#:
1
Objects.FirstOrDefault(b => b is ISomeInterface)

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 12-10 21:15
Sjaaky schreef op woensdag 10 september 2014 @ 10:38:
Ik kom in onze codebase steeds vaker dit pareltje tegen:
C#:
1
Objects.Where(b => b.GetType().GetInterfaces().Contains(typeof(ISomeInterface))).FirstOrDefault()


Waarom niet zo?
C#:
1
Objects.FirstOrDefault(b => b is ISomeInterface)
Je zou het niet verwachten, maar hier is de standaard Linq operator OfType voor.
C#:
1
Objects.OfType<ISomeInterface>();
The OfType<TResult>(IEnumerable) method returns only those elements in source that can be cast to type TResult.

[ Voor 15% gewijzigd door riezebosch op 10-09-2014 13:47 ]

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


  • Cilph
  • Registratie: April 2010
  • Laatst online: 19-10 01:08
Bleh, Downcasting is sowieso (vaak) evil. Vaak sta ik het nog toe om Objects te casten naar IDisposable, maar daar trek ik vaak de grens.

[ Voor 53% gewijzigd door Cilph op 10-09-2014 13:48 ]


  • acemoo
  • Registratie: Maart 2006
  • Laatst online: 22-10 08:59
.oisyn schreef op woensdag 03 september 2014 @ 12:46:
Zoiets als het volgende kwam ik zojuist tegen in onze codebase:

|:(
Kan je dan niet net zo goed de methode op die instance zelf aan roepen?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

Het punt is dat er een loop wordt uitgevoerd, waarna vervolgens in de loop een switch wordt gedaan op de loopcounter zodat elke iteratie iets anders gedaan wordt.

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for (int i = 0; i < 3; i++)
{
    switch(i)
    {
    case 0:
        doeIets();
        break;

    case 1:
        doeIetsAnders();
        break;

    case 2:
        doeWeerIetsAnders();
        break;
    }
}


Oftewel:
C++:
1
2
3
doeIets();
doeIetsAnders();
doeWeerIetsAnders();

|:(

Enige common code kun je wel in een functie gieten. Met andere woorden, de code uit het voorbeeld had ook wel zo opgeschreven kunnen worden:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
void CheckedSet(int & stuff, int value)
{
    if (Check(value))
        stuff = value;
}

void GetStuffs(int * stuffs, SomeClass * instance)
{
    CheckedSet(stuffs[StuffFoo], instance->GetFoo());
    CheckedSet(stuffs[StuffBar], instance->GetBar());
    CheckedSet(stuffs[StuffMeow], instance->GetMeow());
    // etc.
}

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.


  • Laurens-R
  • Registratie: December 2002
  • Laatst online: 29-12-2024
@.oisyn: Misschien wilde de developer in kwestie voorkomen dat er iets weg-geoptimaliseerd werd door de compiler :+

[ Voor 4% gewijzigd door Laurens-R op 10-09-2014 14:42 ]


  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 17-10 09:52
riezebosch schreef op woensdag 10 september 2014 @ 13:45:
Je zou het niet verwachten, maar hier is de standaard Linq operator OfType voor.
Dat wist ik ... ooit. |:(

Bedankt!

  • Ultimation
  • Registratie: Februari 2010
  • Laatst online: 19-09 13:56

Ultimation

Het is als Appels en peren

Sjaaky schreef op woensdag 10 september 2014 @ 10:38:
Ik kom in onze codebase steeds vaker dit pareltje tegen:
C#:
1
Objects.Where(b => b.GetType().GetInterfaces().Contains(typeof(ISomeInterface))).FirstOrDefault()


Waarom niet zo?
C#:
1
Objects.FirstOrDefault(b => b is ISomeInterface)
Als je steeds iets vaker tegen komt in je codebase moet je er een functie voor schrijven.

Afbeeldingslocatie: http://hackerboss.com/pics/do-not-duplicate.jpg

MacBook Pro 2023 [14-inch, M2 Pro, 32GB RAM, 512GB]


  • Firesphere
  • Registratie: September 2010
  • Laatst online: 10:30

Firesphere

Yoshis before Hoshis

Ultimation schreef op woensdag 10 september 2014 @ 16:30:
[...]


Als je steeds iets vaker tegen komt in je codebase moet je er een functie voor schrijven.

[afbeelding]
Niet helemaal mee eens.

Ik ben momenteel bezig met een opdracht, waar ik heel veel code kan copy-pasten uit de bestaande code.

Dit doe ik ook, omdat de code waar ik uit copy-paste een geval "god-class" is, met alle functionaliteit op 1 grote hoop.

Dan maar dubbele code, waar 1 van de twee in ieder geval een aanzet is om de rest ook om te schrijven tegen de tijd dat ze de upgrade accepteren.

Daarnaast, is met de oude code gewoon niet te werken en is het dus veel sneller er uit te dupliceren wat ik nodig heb, en de rest achterwege te laten.

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Ultimation schreef op woensdag 10 september 2014 @ 16:30:
[...]


Als je steeds iets vaker tegen komt in je codebase moet je er een functie voor schrijven.

[afbeelding]
Hmmm, niet altijd.
The cost of code duplication, thus, is C*p, where C is the cost incurred, [...] and p is the probability that you'll need to change the code.
[...]
There's a cost associated with removing duplication - particularly if you make the wrong refactoring. Thus, depending on the values of C and p, you may be better off allowing a bit of duplication, instead of trying to eradicate it as soon as you see it.

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


  • Ultimation
  • Registratie: Februari 2010
  • Laatst online: 19-09 13:56

Ultimation

Het is als Appels en peren

Je moet er voor zorgen dat je het gelijk doet. Dan hoef je ook de duplicaten niet te verwijderen. :)

MacBook Pro 2023 [14-inch, M2 Pro, 32GB RAM, 512GB]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

Da's onzin. Ofwel je bent aan het over-engineeren omdat je alles wat je schrijft herbruikbaar maakt, ofwel je moet ergens iets weghalen zodra je een stukje opnieuw nodig hebt (en dan wordt de post van kenneth weer relevant).

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.


  • Ultimation
  • Registratie: Februari 2010
  • Laatst online: 19-09 13:56

Ultimation

Het is als Appels en peren

Als over-engineeren leidt tot beheersbaardere code dan is dat de investering waard, als je het mij vraagt.

MacBook Pro 2023 [14-inch, M2 Pro, 32GB RAM, 512GB]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

Maar dat doet het absoluut niet.

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.


  • Ultimation
  • Registratie: Februari 2010
  • Laatst online: 19-09 13:56

Ultimation

Het is als Appels en peren

Ik merk van wel. :)

[ Voor 73% gewijzigd door Ultimation op 10-09-2014 18:18 ]

MacBook Pro 2023 [14-inch, M2 Pro, 32GB RAM, 512GB]


  • jessy100
  • Registratie: November 2010
  • Laatst online: 21-10 14:23
Verwijderd schreef op dinsdag 02 september 2014 @ 20:08:
[...]


Sorry, maar als dat echt zo is, is het laatste beetje vertrouwen wàt ik in het Nederlands hogere onderwijs had nu echt definitief weg. En iedereen maar blijven hameren dat HBO zo fantastisch is en een harde eis is voor menig werkgever (niet waar) dus je moet dat papiertje wel halen. Want ja, Bachelor of ICT bekt zo lekker he.
ja dat is echt zo. Ict academie is overigens MBO afaik.

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
Firesphere schreef op woensdag 10 september 2014 @ 16:54:
[...]

Niet helemaal mee eens.

Ik ben momenteel bezig met een opdracht, waar ik heel veel code kan copy-pasten uit de bestaande code.

Dit doe ik ook, omdat de code waar ik uit copy-paste een geval "god-class" is, met alle functionaliteit op 1 grote hoop.

Dan maar dubbele code, waar 1 van de twee in ieder geval een aanzet is om de rest ook om te schrijven tegen de tijd dat ze de upgrade accepteren.

Daarnaast, is met de oude code gewoon niet te werken en is het dus veel sneller er uit te dupliceren wat ik nodig heb, en de rest achterwege te laten.
Dan ligt de fout al in het fundament, alles in 1 class stoppen gaat volgens mij tegen de regels van OOP in.
Je moet namelijk een hyrachie opbouwen en alleen in de class stoppen wat erin thuis hoort.
Mits het allemaal basis routines zijn maar dan zou ik nog altijd gebruik maken van subclasses voor een nette indeling.

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 10:30

Firesphere

Yoshis before Hoshis

BoringDay schreef op donderdag 11 september 2014 @ 10:15:
[...]


Dan ligt de fout al in het fundament, alles in 1 class stoppen gaat volgens mij tegen de regels van OOP in.
Je moet namelijk een hyrachie opbouwen en alleen in de class stoppen wat erin thuis hoort.
Mits het allemaal basis routines zijn maar dan zou ik nog altijd gebruik maken van subclasses voor een nette indeling.
Aangezien bijna 90% vaan de bestaande site wordt omgeschreven naar de nieuwe externe koppeling, is dat dus ook wat ik aan het doen ben.

Echter, omdat de oude er nog niet uit kan, levert dat erg veel dubbele code op helaas. Waar die van mij alleen zo'n 100x beter leesbaar is.

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22-10 14:14

Janoz

Moderator Devschuur®

!litemod

Maar als je aan het refactoren bent kun je de bestaande code toch ook vervangen door een aanroep naar de nieuwe code? Op die manier kleed je vanzelf de Godclass uit.

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


  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 17-10 09:52
Ultimation schreef op woensdag 10 september 2014 @ 16:30:
Als je steeds iets vaker tegen komt in je codebase moet je er een functie voor schrijven.
Daar ben ik over het algemeen een voorstander van. Maar sommige zaken zijn te klein en te basic om er een functie van te maken. Alleen al de vraag 'wat is de beste plek om de functie te implementeren' is lastig te beantwoorden.

Onderstaande het enige is dat overeenkomt tussen de verschillende plaatsen waar het voor komt.
C#:
1
2
3
4
public T GetFirstItemOfType<T,S>(IEnumerable<S> items)
{
   return items.OfType<T>().FirstOrDefault();
}

Zo'n method voegt niets toe. Het is iets dat iemand een keer introduceert, een paar maal gebruikt wordt, vergeten wordt en te weinig toegevoegde waarde heeft om op zoek te gaan naar een bestaande implementatie in de huidige codebase.

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Sjaaky schreef op donderdag 11 september 2014 @ 15:25:
[...]
Zo'n method voegt niets toe. Het is iets dat iemand een keer introduceert, een paar maal gebruikt wordt, vergeten wordt en te weinig toegevoegde waarde heeft om op zoek te gaan naar een bestaande implementatie in de huidige codebase.
Maak er dan een extension method van, dan verschijnt hij in ieder geval nog bij de IntelliSense wanneer iemand 'OfType' intypt. :P

We are shaping the future


  • Tarabass
  • Registratie: Februari 2008
  • Laatst online: 09-04 17:02

Tarabass

Webmaster

Janoz schreef op donderdag 11 september 2014 @ 10:45:
Maar als je aan het refactoren bent kun je de bestaande code toch ook vervangen door een aanroep naar de nieuwe code? Op die manier kleed je vanzelf de Godclass uit.
Precies mijn gedachte. Nee, code die onwerkbaar is kopiëren is geen goed idee..

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 10:30

Firesphere

Yoshis before Hoshis

Janoz schreef op donderdag 11 september 2014 @ 10:45:
Maar als je aan het refactoren bent kun je de bestaande code toch ook vervangen door een aanroep naar de nieuwe code? Op die manier kleed je vanzelf de Godclass uit.
Niet helemaal, helaas, omdat er een chronisch tijdgebrek is, moet ik een aantal zaken behouden.

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 29-05 12:10

jvaneijk

Dr.Oak

Code duplication is een hell zeker als je met meerdere personen aan een wat groter project werkt en je weet niet van elkaar dat je hetzelfde aan het doen bent. Als er dan bij punt A een bug optreedt zal het hoogstwaarschijnlijk bij Punt B ook optreden. En aangezien jij alleen afweet van Punt A zal de bug op die plek gefixed worden maar Punt B blijft stuk.

Ik zeg ten alle tijden geen code duplication. Voor de rest SOLID

iRacing Profiel


  • Ultimation
  • Registratie: Februari 2010
  • Laatst online: 19-09 13:56

Ultimation

Het is als Appels en peren

Ik zeg ten alle tijden: Test schrijven. :)

MacBook Pro 2023 [14-inch, M2 Pro, 32GB RAM, 512GB]


Acties:
  • 0 Henk 'm!

  • begintmeta
  • Registratie: November 2001
  • Niet online

begintmeta

Moderator General Chat
Ik werd door een topic aan deze uiterst leesbare en elegante loop van mij herinnerd...
S:
1
2
3
for (i in 2:length(dataFile)) {
   dataListed[i-1]<- paste(as.matrix(dataFile[dataFile[i]>0,c(1,i)][order(-dataFile[dataFile[i]>0,c(1,i)][,2]),][1]), collapse=", ")
}

[ Voor 4% gewijzigd door begintmeta op 22-09-2014 21:21 ]


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 11:29

Acties:
  • 0 Henk 'm!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 13:08
Hand in eigen boezem steken: ik weet niets van frameworks en zo, volgens mij is dit Smarty of zo. Ja, het zal vast beter kunnen (tips voor gebruik van 'modulus' meer dan welkom), maar het moet even een quick fix worden :X

code:
1
<li{if "{count}" == "3" OR "{count}" == "6" OR "{count}" == "9" OR "{count}" == "12" OR "{count}" == "15" OR "{count}" == "18" OR "{count}" == "21" OR "{count}" == "24" OR "{count}" == "27" OR "{count}" == "30" OR "{count}" == "33" OR "{count}" == "36" OR "{count}" == "40"} class="last_child"{/if}>

Acties:
  • 0 Henk 'm!

  • Rannasha
  • Registratie: Januari 2002
  • Laatst online: 22-10 13:06

Rannasha

Does not compute.

sjroorda schreef op woensdag 08 oktober 2014 @ 12:11:
Hand in eigen boezem steken: ik weet niets van frameworks en zo, volgens mij is dit Smarty of zo. Ja, het zal vast beter kunnen (tips voor gebruik van 'modulus' meer dan welkom), maar het moet even een quick fix worden :X

code:
1
<li{if "{count}" == "3" OR "{count}" == "6" OR "{count}" == "9" OR "{count}" == "12" OR "{count}" == "15" OR "{count}" == "18" OR "{count}" == "21" OR "{count}" == "24" OR "{count}" == "27" OR "{count}" == "30" OR "{count}" == "33" OR "{count}" == "36" OR "{count}" == "40"} class="last_child"{/if}>
Je bent strings aan het vergelijken, dus daar kun je de modulus-operator niet zomaar op toepassen. Dus eerst een integer ervan maken, dan testen of het modulus 3 gelijk is aan 0. Welke syntax je nodig hebt (en of de cast van string naar integer uberhaubt expliciet nodig is) hangt van taal en/of framework af.

Je bent je er hopelijk van bewust dat het laatste getal waar je op test (40) niet deelbaar is door 3?

|| Vierkant voor Wiskunde ||


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

Eentje van eigen hand:

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static const unsigned cWidth = 100, cHeight = 100;
unsigned arr[cWidth * cHeight];

void update()
{
    // move all rows up
    memmove(arr, arr + cWidth, cWidth * (cHeight - 1) * sizeof(unsigned));

    unsigned * pBottom = arr + (cHeight - 1) * cWidth;

    // draw red line on next-to-last row
    for (unsigned i = x1, i <= x2, i++)
        pBottom[i - cWidth] = 0xff0000ff;

    // ...
}


Werkte wel in 32-bits, maar niet in 64 bits 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!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 18-06 09:30

Amanush

Saai persoon.

Rannasha schreef op woensdag 08 oktober 2014 @ 12:16:
[...]


Je bent strings aan het vergelijken, dus daar kun je de modulus-operator niet zomaar op toepassen. Dus eerst een integer ervan maken, dan testen of het modulus 3 gelijk is aan 0. Welke syntax je nodig hebt (en of de cast van string naar integer uberhaubt expliciet nodig is) hangt van taal en/of framework af.

Je bent je er hopelijk van bewust dat het laatste getal waar je op test (40) niet deelbaar is door 3?
In principe zijn alle getallen deelbaar door 3?
40 / 3 = 13 + (1/3)

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • 0 Henk 'm!

  • Amanush
  • Registratie: Mei 2012
  • Laatst online: 18-06 09:30

Amanush

Saai persoon.

sjroorda schreef op woensdag 08 oktober 2014 @ 12:11:
Hand in eigen boezem steken: ik weet niets van frameworks en zo, volgens mij is dit Smarty of zo. Ja, het zal vast beter kunnen (tips voor gebruik van 'modulus' meer dan welkom), maar het moet even een quick fix worden :X

code:
1
<li{if "{count}" == "3" OR "{count}" == "6" OR "{count}" == "9" OR "{count}" == "12" OR "{count}" == "15" OR "{count}" == "18" OR "{count}" == "21" OR "{count}" == "24" OR "{count}" == "27" OR "{count}" == "30" OR "{count}" == "33" OR "{count}" == "36" OR "{count}" == "40"} class="last_child"{/if}>
code:
1
<li{if ( ( {count} %3 == 0 ) && ( {count} =< 39 ) ) } class="last_child"{/if}>

Ga tot de luiaard, gij mier! Zie haar wegen en wordt wijs.


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Amanush schreef op woensdag 08 oktober 2014 @ 12:51:
[...]

In principe zijn alle getallen deelbaar door 3?
40 / 3 = 13 + (1/3)
In principe wordt met deelbaar bedoeld dat de uitkomst een geheel getal en de rest 0 is.

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!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 22-10 20:51

Sebazzz

3dp

Amanush schreef op woensdag 08 oktober 2014 @ 12:51:
[...]

In principe zijn alle getallen deelbaar door 3?
40 / 3 = 13 + (1/3)
Een magnum is ook deelbaar door 2. Ik breek gewoon het bovenste stuk voor je af.

Met deelbaar wordt inderdaad gehele getallen bedoeld ;)

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


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

Oftewel: Wikipedia: Deelbaar

[ Voor 56% gewijzigd door .oisyn op 08-10-2014 15:10 ]

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!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 13:08
Amanush schreef op woensdag 08 oktober 2014 @ 12:56:
[...]


code:
1
<li{if ( ( {count} %3 == 0 ) && ( {count} =< 39 ) ) } class="last_child"{/if}>
Geweldig - als ik een topic had geopend "dit werkt niet, help!" zou het onverbiddelijk gesloten zijn, en nu krijg ik op een niet-gestelde vraag serieuze antwoorden _/-\o_

Bovendien is de overtreffende trap van 'slecht' dat, als ik meer dan 39 (40 was typefout, sorry) items heb ik deze lijst zal uitbreiden met "c == 42 OR c == 45 OR ...". Don't kill me for that >:)

Enfin, het werkt nog steeds niet - en dit is geen verzoek om verdere antwoorden: ik laat het lekker aan de mensen over die wél weten hoe dit framework werkt! Deze bijdrage was geheel in lijn van het topic.

Acties:
  • 0 Henk 'm!

  • jbdeiman
  • Registratie: September 2008
  • Laatst online: 11:25
Over-engineeren is te ver door engineren, als je goed engineert dan is de code nog goed begrijpelijk en goed onderhoudbaar.

Begrijpelijke code != goed onderhoudbare code
Goed onderhoudbare code (veel hergebruik) != Begrijpelijke code.

Je hebt altijd de combi van beide nodig om tot het meest praktische resultaat te komen. Vanaf daar kan je verder gaan her-engineeren, maar je komt al gauw op het punt dat je gaat over-engineren. De tijd die je besteed om e.e.a. te her-engineeren, staat niet in verhouding tot de winst die je nog boekt op onderhoudbaarheid en begrijpelijkheid van de code.

Overigens ben ik het er wel mee eens dat onbegrijpelijke code verbeterd moet worden, net als onbeheersbare code. Ik reageer in deze post nu vooral op de term "over-engineren", een stukje refacoren is logisch om het op langere termijn ook praktische code te houden.

[ Voor 15% gewijzigd door jbdeiman op 08-10-2014 15:30 . Reden: Aanvulling t.a.v. reactie op term "over-engineeren" ]


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 06:47
.oisyn schreef op woensdag 08 oktober 2014 @ 12:19:
Eentje van eigen hand:
[....]
Werkte wel in 32-bits, maar niet in 64 bits 8)7
Waar zit nu die fout precies? Kan em maar niet vinden :X Ik gok op regel 13, maar.... :?

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:32

.oisyn

Moderator Devschuur®

Demotivational Speaker

Had er misschien nog even bij moeten zetten dat x2 < cWidth, maar dat leek me wel enigszins implied.

Het komt er iig op neer dat i - cWidth een negatief getal oplevert... ware het niet dat die expressie unsigned is. Stel het is -1, dan staat er dus: pBottom[0xffffffff] = 0xff0000ff;. Werkt prima op 32-bits, dat pointer-adres wrapt gewoon en dus wijst de resulterende pointer naar pBottom - 1. Echter, op 64-bits is het natuurlijk gewoon letterlijk pBottom + 0xffffffff. Adresruimte genoeg, dus je zit ~4GB buiten de array te schrijven :P

[ Voor 6% gewijzigd door .oisyn op 08-10-2014 23:11 ]

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!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 06:47
Zo, die sluipt er wel lekker in zo ^^ Hoe vaak heb je er zelf overheen gekeken voordat je hand richting voorhoofd ging?

Acties:
  • 0 Henk 'm!

  • ObiTewodros
  • Registratie: April 2011
  • Laatst online: 05-04 22:22
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 try 
{
    if (!isCustomer) 
    {
        -- snip lots of code to process a new order --
        throw new RedirectException("/Orders/NewOrderShipping.aspx")
    }
    else if (isQuickOrder)
    {
        -- snip more order processing code --
    throw new RedirectException("/Orders/Confirm.aspx")
    }
    else
    {
        -- snip even more order processing code --
        throw new RedirectException("/Orders/SelectShipping.aspx")
    }
}
catch (RedirectException rEx)
{
    Response.Redirect(rEx.Message);
}


Wel origineel :')

Acties:
  • 0 Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 10:30

Firesphere

Yoshis before Hoshis

ObiTewodros schreef op donderdag 09 oktober 2014 @ 17:21:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 try 
{
    if (!isCustomer) 
    {
        -- snip lots of code to process a new order --
        throw new RedirectException("/Orders/NewOrderShipping.aspx")
    }
    else if (isQuickOrder)
    {
        -- snip more order processing code --
    throw new RedirectException("/Orders/Confirm.aspx")
    }
    else
    {
        -- snip even more order processing code --
        throw new RedirectException("/Orders/SelectShipping.aspx")
    }
}
catch (RedirectException rEx)
{
    Response.Redirect(rEx.Message);
}


Wel origineel :')
_O-

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!

Pagina: 1 ... 6 ... 20 Laatste

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. :)