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

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
mithras schreef op zondag 19 juni 2011 @ 13:58:
[...]
}:|

Nog een leuk slecht programmeervoorbeeld trouwens: er zit een goede flaw in onze eerste versie-webshop. Het proces is:
[..] > winkelmandje > betalen > terug naar site > facuur aanmaken + email sturen
Dat is met name leuk voor klanten die iDeal afbreken en nooit meer terugkomen op de site :X
Ik heb 'm zo:

[..] > winkelmandje > bevestig order + mail > betalen > terug naar site

En na het betalen komt er achteraf (offline / post-back) van de bank een melding en dan komt het stukje: factuur maken + mail.

Mensen die de betaling niet doen (of afbreken) hebben alsnog een mail met orderbevestiging gehad en kunnen daar zelf eventueel nog wat mee. Betalingen die na 5 dagen nog geen post-back hebben gehad komen als "expired" in het systeem en dan kan de secretaresse er achteraan (of je stuurt automatisch een mail voor een handmatige overschrijving / een nieuwe iDeal transactie).

Acties:
  • 0 Henk 'm!

  • dev10
  • Registratie: April 2005
  • Laatst online: 09:47
mithras schreef op zondag 19 juni 2011 @ 13:58:
[...]
}:|

Nog een leuk slecht programmeervoorbeeld trouwens: er zit een goede flaw in onze eerste versie-webshop. Het proces is:
[..] > winkelmandje > betalen > terug naar site > facuur aanmaken + email sturen
Dat is met name leuk voor klanten die iDeal afbreken en nooit meer terugkomen op de site :X
Of mensen die na de iDEAL betaling gedaan te hebben niet teruggaan naar de webshop. Gebeurt bij ons regelmatig.

Acties:
  • 0 Henk 'm!

  • ctrlaltdelbe
  • Registratie: Juli 2005
  • Laatst online: 01-10 22:24
mithras schreef op zondag 19 juni 2011 @ 13:16:
[...]
Gebruiken wij altijd in templates. In business logic is het dit:

PHP:
1
2
3
if (false === $model) {
  throw NotFoundException('Could not find blablabla');
}
Het is geen slecht programmeervoorbeeld, maar ik vind '==' operaties op booleans toch altijd maar een beetje meh. Zet dan gewoon
PHP:
1
2
3
if (!$model) {
//code 
}

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 05:50
Nikolas schreef op zondag 19 juni 2011 @ 23:58:
[...]

Het is geen slecht programmeervoorbeeld, maar ik vind '==' operaties op booleans toch altijd maar een beetje meh. Zet dan gewoon
PHP:
1
2
3
if (!$model) {
//code 
}
Daarom maakt hij ook gebruik van type-matching. Als $model expliciet op false staat dan geldt die if pas, anders niet.

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Nikolas schreef op zondag 19 juni 2011 @ 23:58:
[...]

Het is geen slecht programmeervoorbeeld, maar ik vind '==' operaties op booleans toch altijd maar een beetje meh. Zet dan gewoon
PHP:
1
2
3
if (!$model) {
//code 
}
Dat zou zoals mijn bovenbuurman ook al aangaf een valide argument zijn bij een strongly typed taal, maar niet bij php. Wat als je model "0" is, gewoon omdat het kan? Daarnaast voorkomt hij een "assignment by typo" door false vooraan te plaatsen. Vergelijk:
PHP:
1
2
3
4
if ($model = false)
{
  // foo
}

PHP:
1
2
3
4
if ($model == false)
{
  // foo
}

[ Voor 18% gewijzigd door CodeCaster op 20-06-2011 00:15 ]

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


Acties:
  • 0 Henk 'm!

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

Matis

Rubber Rocket

Yoda statement :) probeer ik er bij ons op de toko ook doorheen te drukken.

In php probeer ik overigens steeds vaker === te gebruiken om typedefinitie af te dwingen. Ook probeer ik vaak te casten, om het toch het gevoel van een strong typed taal te geven. Daarnaast kan een beetje intelligente IDE er ook beter mee omgaan :)

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


Acties:
  • 0 Henk 'm!

Verwijderd

Volgens mij herken je hieraan de mensen met meer ervaring.
En dus met minder vertrouwen in zichzelf en andere developers omdat er nu eenmaal foutjes worden gemaakt.

Bugs programmeren is zo makkelijk. Als je dat met een bepaalde stijl voor een deel kunt voorkomen dan levert het je veel tijd op. Bugs kosten tijd, geld en aanzien.

Acties:
  • 0 Henk 'm!

  • ID-College
  • Registratie: November 2003
  • Laatst online: 21:01
Ik merk het ook idd! ik gebruik veel var_dump en kijk dan al naar het type.. Als ik het niet zeker weet, dan cast ik de waarde naar b.v. een int om vervolgens === te gebruiken..
Met name $_GET waarden die een getal moeten zijn (zoals id's) cast ik altijd direct naar een int.. Als de waarde dan 0 is, dan was de $_GET iig geen int :)

Acties:
  • 0 Henk 'm!

Verwijderd

ID-College schreef op maandag 20 juni 2011 @ 01:07:
Ik merk het ook idd! ik gebruik veel var_dump en kijk dan al naar het type.. Als ik het niet zeker weet, dan cast ik de waarde naar b.v. een int om vervolgens === te gebruiken..
Met name $_GET waarden die een getal moeten zijn (zoals id's) cast ik altijd direct naar een int.. Als de waarde dan 0 is, dan was de $_GET iig geen int :)
of 0 ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Soms typ ik spontaan een functie op de volgende manier in PHP:

code:
1
public function foo(string $str) {...}


Om vervolgens een error te krijgen.. ohja doh

Acties:
  • 0 Henk 'm!

  • .Gertjan.
  • Registratie: September 2006
  • Laatst online: 17-02 21:20

.Gertjan.

Owl!

Matis schreef op maandag 20 juni 2011 @ 00:22:
Yoda statement :) probeer ik er bij ons op de toko ook doorheen te drukken.

In php probeer ik overigens steeds vaker === te gebruiken om typedefinitie af te dwingen. Ook probeer ik vaak te casten, om het toch het gevoel van een strong typed taal te geven. Daarnaast kan een beetje intelligente IDE er ook beter mee omgaan :)
Of je kiest gewoon een taal die echt strong typed is :P
[/knuppel in hoenderhok mode]

The #1 programmer excuse for legitimately slacking off: "My code's compiling"
Firesphere: Sommige mensen verdienen gewoon een High Five. In the Face. With a chair.


Acties:
  • 0 Henk 'm!

Verwijderd

FragFrog schreef op vrijdag 17 juni 2011 @ 16:36:
[...]

_/-\o_ hilarisch!

Zo heb ik ooit toen ik nog kleine FragFrog was 3000 comments overschreven met "Dit is een test" door een WHERE clause te vergeten :X Testomgeving, wat is dat? O-)
Ach dat is niets, vroeger, toen ik nog op mijn vorige werk werkte schreven wij soms sql's om updates uit te voeren op de database van de boekhouding (die draaiden afzonderlijk op de laptops van de boekhouders) om correcties uit te voeren. Ooit heeft er 1 iemand zo'n sql aangepast omdat hij dacht dat hij genoeg kon van sql want hij had een paar tutorials gelezen...

SQL:
1
2
delete from dbtransacties;
where boeking = 2;


pech voor hem dat we maar maandelijks backups hadden in ons hoofdkantoor :/

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

CodeCaster schreef op maandag 20 juni 2011 @ 00:13:
[...]

Dat zou zoals mijn bovenbuurman ook al aangaf een valide argument zijn bij een strongly typed taal, maar niet bij php. Wat als je model "0" is, gewoon omdat het kan? Daarnaast voorkomt hij een "assignment by typo" door false vooraan te plaatsen. Vergelijk:
PHP:
1
2
3
4
if ($model = false)
{
  // foo
}

PHP:
1
2
3
4
if ($model == false)
{
  // foo
}
Ik heb mijzelf aangeleerd van de constante voorop te zetten.

PHP:
1
2
3
4
if (false == $model)
{
  // foo
}

Dan kan je geen fouten maken, want false kan je niet toewijzen (hoop ik, het is en blijft PHP 8)7 :X )

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 08:21
Verwijderd schreef op maandag 20 juni 2011 @ 08:46:
[...]

SQL:
1
2
delete from dbtransacties;
where boeking = 2;


pech voor hem dat we maar maandelijks backups hadden in ons hoofdkantoor :/
auch... is dat niet een van de dingen die ingehamerd worden bij fatsoenlijke boeken/handleidingen?

Op meerdere regels en dan op het EINDE ; (bij oracle is dat toch zo)

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!

  • TweakBoy
  • Registratie: Augustus 2001
  • Laatst online: 14-09 22:16

TweakBoy

---

Icekiller2k6 schreef op maandag 20 juni 2011 @ 09:48:
[...]

auch... is dat niet een van de dingen die ingehamerd worden bij fatsoenlijke boeken/handleidingen?

Op meerdere regels en dan op het EINDE ; (bij oracle is dat toch zo)
Boekhouders zijn eigenwijs...

---


Acties:
  • 0 Henk 'm!

  • .Gertjan.
  • Registratie: September 2006
  • Laatst online: 17-02 21:20

.Gertjan.

Owl!

Snake schreef op maandag 20 juni 2011 @ 09:42:
[...]
Ik heb mijzelf aangeleerd van de constante voorop te zetten.

PHP:
1
2
3
4
if (false == $model)
{
  // foo
}

Dan kan je geen fouten maken, want false kan je niet toewijzen (hoop ik, het is en blijft PHP 8)7 :X )
Dit is een goed punt. Ooit eens als tip gekregen op mijn opleiding bij C++. .NET straft je af als je
C#:
1
if(myVar = 5) { }

doet, maar andere talen staan het toe waarbij het gedrag nogal eens kon afwijken per taal.

Ooit gehoord dat uit een toewijzing een "true" terug komt en in andere talen komt er een 5 terug (de toegewezen waarde) waarbij de if alleen checkt of het niet null/0 is (bijvoorbeeld Javascript).

Dit stukje
C#:
1
if(5 = myVar) { } 

wordt direct afgestraft door (voor zover ik weet) iedere compiler. Het gaat alleen niet altijd goed bij menselijke parsers (aka ontwikkelaars), die kunnen dat soort constructies niet altijd lekker verwerken.

The #1 programmer excuse for legitimately slacking off: "My code's compiling"
Firesphere: Sommige mensen verdienen gewoon een High Five. In the Face. With a chair.


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op maandag 20 juni 2011 @ 08:46:
[...]


Ach dat is niets, vroeger, toen ik nog op mijn vorige werk werkte schreven wij soms sql's om updates uit te voeren op de database van de boekhouding (die draaiden afzonderlijk op de laptops van de boekhouders) om correcties uit te voeren. Ooit heeft er 1 iemand zo'n sql aangepast omdat hij dacht dat hij genoeg kon van sql want hij had een paar tutorials gelezen...

SQL:
1
2
delete from dbtransacties;
where boeking = 2;


pech voor hem dat we maar maandelijks backups hadden in ons hoofdkantoor :/
OMG this is so wrong on so many levels.
Boekhouddatabase op de laptop? WTF?
Maandelijke backups? WTF?
Database updaten met handgeschreven SQL queries? WTF?

[ Voor 8% gewijzigd door .oisyn op 20-06-2011 11:44 ]

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!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

.Gertjan. schreef op maandag 20 juni 2011 @ 10:06:
Ooit gehoord dat uit een toewijzing een "true" terug komt
Heb ik ook ooit gehoord. Van mensen hier op GoT die de taal niet snapten. Is er werkelijk een taal waarin een assignment een expression is die áltijd true oplevert (even afgezien zelfgedefnieerde assigment operators uiteraard)? Volgens mij bestaat die niet.

Btw, in C# kan het ook gewoon. De compiler klaagt alleen omdat het type van de assignment expression het type van de te assignen variabele is, en bij a = 5 is dat dus meestal int. Maar een if verwacht een boolean. Als de expressie gewoon een boolean oplevert vindt de compiler het prima:
C#:
1
2
3
if (a = true)
{
}

Nou is het natuurlijk wel weer zo dat je dan gewoon if(a) of if(!a) tikt als je a==true of a==false bedoelt.

[ Voor 41% gewijzigd door .oisyn op 20-06-2011 11:49 ]

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 20 juni 2011 @ 11:43:
[...]


OMG this is so wrong on so many levels.
Boekhouddatabase op de laptop? WTF?
Maandelijke backups? WTF?
Database updaten met handgeschreven SQL queries? WTF?
ja, op elke site een server plaatsen was niet echt intressant... en aangezien die boekhouders nogal veel over en weer vlogen moesten ze altijd hun boekhouding bijhebben :)
hadden de gegevens maar maandelijks nodig in hoofdkantoor, en meerdere backups laten bijhouden werd door de boekhouders als onprettig bevonden. :+
grootste ergernis van iedereen... maar het werkte (op af en toe en foutje na dus :*) ) kregen er dus ook geen tijd voor om daar een applicatie voor te schrijven.

In elk bedrijf loopt niet alles perfect, maar zolang het blijft werken mag het meestal zo wel verder gaan... :) heb je las kleine bedrijven veel te snel groot worden :)

Acties:
  • 0 Henk 'm!

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 21:46
Verwijderd schreef op maandag 20 juni 2011 @ 01:21:
Soms typ ik spontaan een functie op de volgende manier in PHP:

code:
1
public function foo(string $str) {...}


Om vervolgens een error te krijgen.. ohja doh
In PHP 5.4 is type hinting wel mogelijk, enkel niet voor alles ofzo. Wel arrays, int's en objecten dacht ik.

Tweakers Time Machine Browser Extension | Chrome : Firefox


Acties:
  • 0 Henk 'm!

Verwijderd

ZpAz schreef op maandag 20 juni 2011 @ 12:00:
[...]


In PHP 5.4 is type hinting wel mogelijk, enkel niet voor alles ofzo. Wel arrays, int's en objecten dacht ik.
Klopt. Maar niet voor strings :+ Zou ook raar zijn omdat PHP een loosly typed language is. In principe is een Object ook een string als hij de functie __toString geimplementeerd heeft.

vanaf PHP 5.2+ toch?

[ Voor 4% gewijzigd door Verwijderd op 20-06-2011 12:10 ]


Acties:
  • 0 Henk 'm!

  • .Gertjan.
  • Registratie: September 2006
  • Laatst online: 17-02 21:20

.Gertjan.

Owl!

.oisyn schreef op maandag 20 juni 2011 @ 11:46:
[...]

Heb ik ook ooit gehoord. Van mensen hier op GoT die de taal niet snapten. Is er werkelijk een taal waarin een assignment een expression is die áltijd true oplevert (even afgezien zelfgedefnieerde assigment operators uiteraard)? Volgens mij bestaat die niet.
Denk ook niet dat ze bestaan, maar heb ooit iets opgevangen. Het zal inderdaad gaan om talen die waar de if kijkt of het geen null of 0 is, als je dan x = 5 neerzet komt er 5 uit en dat is dan in sommige talen ook een true. Of het ging over boolean assignments. Maar het statement: "als de assignment lukt komt er een true uit de if" heb ik toch met enige regelmaat aan moeten horen, maar waarschijnlijk is dat verwarring.

Overigens is er voor dat soort ifs wel iets te zeggen. Aan de ene kant zijn ze handig, in Axapta kun je zo zelfs een datarow in een if zetten waarbij het systeem kijkt of de row een ID heeft (en dus uit de DB komt). Aan de andere kant krijg je ook wel eens tricky en onleesbare code. Overigens is Axapta behoorlijk zuur als het om null's gaat, die kent hij namelijk niet, hij zal ook nooit een DBNull schrijven... Altijd leuk als je gaat interfacen... :-(
Btw, in C# kan het ook gewoon. De compiler klaagt alleen omdat het type van de assignment expression het type van de te assignen variabele is, en bij a = 5 is dat dus meestal int. Maar een if verwacht een boolean. Als de expressie gewoon een boolean oplevert vindt de compiler het prima:
C#:
1
2
3
if (a = true)
{
}

Nou is het natuurlijk wel weer zo dat je dan gewoon if(a) of if(!a) tikt als je a==true of a==false bedoelt.
:) True statement was ik helemaal vergeten. Meestal vergelijk je inderdaad niet met == true. Vroeger deed ik dat wel (VB 6), maar toen was ik nog een klein .gertjan.-etje :) Toen had ik nog geen flauw benul hoe die boolean expressions werkte :D

The #1 programmer excuse for legitimately slacking off: "My code's compiling"
Firesphere: Sommige mensen verdienen gewoon een High Five. In the Face. With a chair.


Acties:
  • 0 Henk 'm!

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 21:46
Verwijderd schreef op maandag 20 juni 2011 @ 12:09:
[...]

Klopt. Maar niet voor strings :+ Zou ook raar zijn omdat PHP een loosly typed language is. In principe is een Object ook een string als hij de functie __toString geimplementeerd heeft.

vanaf PHP 5.2+ toch?
5.0 en uitgebreid bij 5.1 blijkbaar zelfs al.

Tweakers Time Machine Browser Extension | Chrome : Firefox


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 16:55
.Gertjan. schreef op maandag 20 juni 2011 @ 07:48:
[...]

Of je kiest gewoon een taal die echt strong typed is :P
\[/knuppel in hoenderhok mode]
Of je kiest een strong typed taal met type inference :P. Best of both worlds: typesafety wordt bepaald en afgedwongen tijdens compile-time, maar je hoeft niet elke var van een type te voorzien (bespaart typ- en denkwerk).

Scala:
1
2
  val x = 1 + 33 + 7 // joh, x is een int, duh.
  x.format(12) // compiler: Jonguh, wat doe je nou da ken toch nie?


En verder: talen motten gewoon assignments in if-statements niet toestaan, bam.

[ Voor 11% gewijzigd door YopY op 20-06-2011 14:15 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Kan met c# ook gewoon hoor :P

C#:
1
     var personenDieSanderHeten = from p in personen where p.Naam == "Sander" select p;


Variabel is een...... IEnummerable van Personen :p

Daarna:
C#:
1
   var sander = personenDieSanderHeten.First();


variabel "sander" is een.... Persoon.

en daarna:
C#:
1
sander = "Sander";

Mag dan niet van de compiler.

[ Voor 37% gewijzigd door Verwijderd op 20-06-2011 14:20 ]


Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 21:41

RayNbow

Kirika <3

Alleen jammer dat Scala en C# aan local type inference doen... :+

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

Verwijderd

Achja, je kan altijd nog een Object teruggeven en die casten :p

Acties:
  • 0 Henk 'm!

  • .Gertjan.
  • Registratie: September 2006
  • Laatst online: 17-02 21:20

.Gertjan.

Owl!

Verwijderd schreef op maandag 20 juni 2011 @ 14:34:
Achja, je kan altijd nog een Object teruggeven en die casten :p
-O- Leuk ja, en dan klapt ergens diep in de krochten van je library de boel om omdat het object wat je meegegeven hebt toch niet helemaal voldoet aan de verwachtingen -O-

Echte bazen doen het gewoon met reflection. Data die je wilt weten als string constanten in je library opnemen en gewoon door je objects heen rennen tot je de betreffende value hebt gevonden. Is ook goed voor je performance d:)b

:P

The #1 programmer excuse for legitimately slacking off: "My code's compiling"
Firesphere: Sommige mensen verdienen gewoon een High Five. In the Face. With a chair.


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 01-10 21:27
ontzettend leuk voor statische analyse, minder leuk als normale code dat gebruikt ;)

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
HuHu schreef op zondag 19 juni 2011 @ 23:41:
[...]

Ik heb 'm zo:

[..] > winkelmandje > bevestig order + mail > betalen > terug naar site

En na het betalen komt er achteraf (offline / post-back) van de bank een melding en dan komt het stukje: factuur maken + mail.

Mensen die de betaling niet doen (of afbreken) hebben alsnog een mail met orderbevestiging gehad en kunnen daar zelf eventueel nog wat mee. Betalingen die na 5 dagen nog geen post-back hebben gehad komen als "expired" in het systeem en dan kan de secretaresse er achteraan (of je stuurt automatisch een mail voor een handmatige overschrijving / een nieuwe iDeal transactie).
Daarom was mijn post ook in het [alg] Slechtste programmeervoorbeelden deel 4 geplaatst :+
Matis schreef op maandag 20 juni 2011 @ 00:22:
Yoda statement :) probeer ik er bij ons op de toko ook doorheen te drukken.
Yoda *;
ZpAz schreef op maandag 20 juni 2011 @ 12:00:
[...]

In PHP 5.4 is type hinting wel mogelijk, enkel niet voor alles ofzo. Wel arrays, int's en objecten dacht ik.
Zoals later aangegeven is het 5.0+ voor type hinting (5.1 voor arrays) ;) Dit geldt alleen voor non-scalar variabelen. In php 5.3.99 was dit wel opgenomen (scalar type hinting) maar later weer verwijderd door de verwachte BC breaks.
Verwijderd schreef op maandag 20 juni 2011 @ 12:09:
[...]

Klopt. Maar niet voor strings :+ Zou ook raar zijn omdat PHP een loosly typed language is. In principe is een Object ook een string als hij de functie __toString geimplementeerd heeft.
Een object is geen string als Object::__toString() bestaat. Dat zou wat worden met een loose typed taal waar je scalars altijd kan casten....

Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 23:11
Verwijderd schreef op maandag 20 juni 2011 @ 01:21:
Soms typ ik spontaan een functie op de volgende manier in PHP:

code:
1
public function foo(string $str) {...}


Om vervolgens een error te krijgen.. ohja doh
Het kan in principe wel; je zal dan zelf een string class moeten definieren en die gebruiken om je variabele te instantieren. Zoiets (quick'n'dirty):
PHP:
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
<?php
class String 
{
  private $text = '';
  
  public function __construct ($text) 
  {
    $this -> text = $text;
  }  
  
  public function __toString () 
  {
    return $this -> text;
  }
}

class Foo 
{
  public function bar (String $text) 
  {
    echo $text;
  }
}

$foo  =  new Foo();
$text =  new String("hello");
$foo  -> bar($text);     // Echo's "hello"
$foo  -> bar("hello");   // Catchable fatal error.

Heeft uiteraard in PHP geen enkel nut maar het illustreert wel mooi hoe je in elk geval type-safety kan afdwingen voor objecten. Het illustreert ook een kleine WTF: je kan in PHP classes definieren met dezelfde naam als interne types zodat je errors als deze krijgt:
Argument 1 passed to Foo::bar() must be an instance of string, string given
8)7

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 01-10 21:27
Heel leuk ook in PHP:
PHP:
1
2
3
4
5
6
7
8
9
10
11
define(blaat, 'blabla');

function blaat() {
  echo blaat;
}

class blaat {
  mekker() { echo blaat;}
}
$blaat = new blaat();
$blaat->mekker();

Dit is nog straight-forward, maar je kan echt de meest wazige code schrijven zonder 1 enkele warning :X

[ Voor 3% gewijzigd door MBV op 20-06-2011 18:26 ]


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je vergeet nog een namespace 'blaat' :)

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!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Bij gebrek aan een Ceil-functie in een bepaalde taal (Progress OpenEdge), vandaag maar mijn eigen geschreven (en Floor, die was makkelijker).

Het is een slecht programmeervoorbeeld omdat elke zichzelf respecterende taal wel zo'n functie heeft. En omdat het een vrij vieze functie geworden is die niet altijd werkt.

Dat komt door de inherente quirks van floats, zo wordt 2.00000000001 ge-ceild naar '2'.

Ik maak er wel een uitdaging van: Bouw je eigen Ceil-functie, je hebt de volgende functies tot je beschikking:
- ROUND(expr, precision): Rondt expr af tot het in precision aangegeven aantal decimalen achter de komma, result is decimal
- TRUNCATE(expr, decimal_places): Kapt expr af tot het opgegeven aantal decimalen achter de komma, result is decimal
- MIN(a, b [,c...]) en MAX(a, b [,c...]): Spreekt voor zich, result is decimal als één van de argumenten decimal is
- De welbekende INTEGER(expr)-functie rondt in Progess af naar de nearest INT (dus INT(2.4) wordt 2, INT(2.6) wordt 3), in plaats van dat hij afkapt (wat de meeste talen doen)
- DECIMAL(expr): Spreekt voor zich

Succes!

PS: Hebben andere talen ook last van dit ceil-probleem met decimals en afronding?

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
code:
1
2
FLOOR(a) = TRUNCATE(a, 0)
CEIL(a) = TRUNCATE(a + 1, 0)


Dat is toch niet zo moeilijk?

[ Voor 20% gewijzigd door HuHu op 20-06-2011 18:45 ]


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Topicstarter
MBV schreef op maandag 20 juni 2011 @ 18:26:
Heel leuk ook in PHP:
PHP:
1
2
3
4
5
6
7
8
9
10
11
define(blaat, 'blabla');

function blaat() {
  echo blaat;
}

class blaat {
  mekker() { echo blaat;}
}
$blaat = new blaat();
$blaat->mekker();

Dit is nog straight-forward, maar je kan echt de meest wazige code schrijven zonder 1 enkele warning :X
Op regel 1 krijg je toch op zijn minst een notice. :+

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


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
edit:
nvm

[ Voor 98% gewijzigd door mithras op 20-06-2011 19:33 ]


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
HuHu schreef op maandag 20 juni 2011 @ 18:45:
code:
1
2
FLOOR(a) = TRUNCATE(a, 0)
CEIL(a) = TRUNCATE(a + 1, 0)


Dat is toch niet zo moeilijk?
Werkt niet voor a = 12.00000000000 en dergelijke.

Daar moet 12 uitkomen, komt bij jou 13 uit.

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Davio schreef op maandag 20 juni 2011 @ 18:55:
[...]

Werkt niet voor a = 12.00000000000 en dergelijke.

Daar moet 12 uitkomen, komt bij jou 13 uit.
code:
1
2
3
4
5
CEIL(a) :
IF TRUNCATE(a) == a:
  RETURN a
ELSE:
  RETURN TRUNCATE(a + 1, 0)

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
@Huhu,

Op zoiets kwam ik ook uit, maar dan met INT, omdat er uit Ceil altijd een int moet komen.

Dus:
code:
1
2
3
4
CEIL(a):
 INT tmp = INTEGER(a) // 2.4 wordt dus 2, 2.6 wordt 3 etc
 IF DEC(tmp) < a THEN RETURN tmp + 1. // Alleen als er naar beneden is afgerond er nog 1 bij optellen
 RETURN tmp. // Voor de == case en als er naar boven is afgerond (tmp > a), hebben we al het goede antwoord


Ik heb het zo gedaan, omdat ik dan al een INT als returnwaarde heb.

Acties:
  • 0 Henk 'm!

  • WernerL
  • Registratie: December 2006
  • Laatst online: 22:06
Vandaag op school voor het project aan het programmeren geweest.
Kom ik zojuist deze functie tegen van een klasgenoot van mij:

code:
1
2
3
4
5
6
7
private function bool_check(col:int):Boolean
        {
            if (col == 1)
                return true;
            else
                return false;
        }


wtf.. :')

[ Voor 3% gewijzigd door WernerL op 20-06-2011 19:41 ]

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


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Verwijderd schreef op maandag 20 juni 2011 @ 14:17:
Kan met c# ook gewoon hoor :P

C#:
1
     var personenDieSanderHeten = from p in personen where p.Naam == "Sander" select p;


Variabel is een...... IEnummerable van Personen :p

Daarna:
C#:
1
   var sander = personenDieSanderHeten.First();


variabel "sander" is een.... Persoon.

en daarna:
C#:
1
sander = "Sander";

Mag dan niet van de compiler.
Kan wel, met implicit.

We are shaping the future


Acties:
  • 0 Henk 'm!

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 21:46
WernerL schreef op maandag 20 juni 2011 @ 19:40:
Vandaag op school voor het project aan het programmeren geweest.
Kom ik zojuist deze functie tegen van een klasgenoot van mij:

code:
1
2
3
4
5
6
7
private function bool_check(col:int):Boolean
        {
            if (col == 1)
                return true;
            else
                return false;
        }


wtf.. :')
lawl :X

Tweakers Time Machine Browser Extension | Chrome : Firefox


Acties:
  • 0 Henk 'm!

Verwijderd

lol.. de "private" maakt het nog grappiger..

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 23:37

Onbekend

...

Op zich is dat best netjes dat je elke functie zijn eigen handeling laat doen. :)
Nu vraag ik mij wel af hoe hij aan die 1 komt waarmee de functie true teruggeeft ......

[ Voor 11% gewijzigd door Onbekend op 20-06-2011 21:25 ]

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • - peter -
  • Registratie: September 2002
  • Laatst online: 27-09 09:37
Ja, ziet er goed uit eigenlijk. Lekker OO.

Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

HuHu schreef op maandag 20 juni 2011 @ 19:00:
[...]

code:
1
2
3
4
5
CEIL(a) :
IF TRUNCATE(a) == a:
  RETURN a
ELSE:
  RETURN TRUNCATE(a + 1, 0)
En nu nog negatieve getallen :)

code:
1
2
floor(x) := x > 0 ? integer(x) : -integer(-x);
ceil(x) := x > 0 ? -integer(-x) : integer(x);

[ Voor 5% gewijzigd door .oisyn op 20-06-2011 22:13 ]

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!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
.oisyn schreef op maandag 20 juni 2011 @ 22:11:
[...]

En nu nog negatieve getallen :)

code:
1
2
floor(x) := x > 0 ? integer(x) : -integer(-x);
ceil(x) := x > 0 ? -integer(-x) : integer(x);
Ja, maar jouw ceil kapt alles gewoon af (of rondt naar beneden en naar boven af), dat is met ceil niet de bedoeling.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Davio schreef op dinsdag 21 juni 2011 @ 09:17:
[...]

Ja, maar jouw ceil kapt alles gewoon af (of rondt naar beneden en naar boven af), dat is met ceil niet de bedoeling.
Het doet volgens mij precies wat CEIL moet doen. Het rond af naar het eerste gehele getal groter of gelijk aan de input

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

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Woy schreef op dinsdag 21 juni 2011 @ 10:15:
[...]

Het doet volgens mij precies wat CEIL moet doen. Het rond af naar het eerste gehele getal groter of gelijk aan de input
Edit: Als ik als voorbeeld 2,4 neem, dan komt er uit -int(-2,4) de waarde 2, terwijl dit 3 moet zijn...

[ Voor 38% gewijzigd door Davio op 21-06-2011 11:05 ]


Acties:
  • 0 Henk 'm!

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

WernerL schreef op maandag 20 juni 2011 @ 19:40:
Vandaag op school voor het project aan het programmeren geweest.
Kom ik zojuist deze functie tegen van een klasgenoot van mij:

code:
1
2
3
4
5
6
7
private function bool_check(col:int):Boolean
        {
            if (col == 1)
                return true;
            else
                return false;
        }


wtf.. :')
Als ik dit soort dingen zie
code:
1
if (dingetje == true)

maak ik er ook altijd van
code:
1
if ((dingetje == true) == (dingetje == dingetje))

maar als om al die booleans bool_checks zouden staan is dat eigenlijk wel een stuk mooier ja.

[ Voor 7% gewijzigd door bwerg op 21-06-2011 11:03 ]

Heeft geen speciale krachten en is daar erg boos over.


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
WernerL schreef op maandag 20 juni 2011 @ 19:40:
Vandaag op school voor het project aan het programmeren geweest.
Kom ik zojuist deze functie tegen van een klasgenoot van mij:

wtf.. :')
Dat is lang geleden :w eprog ftw :)

Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

bwerg schreef op dinsdag 21 juni 2011 @ 11:01:
[...]

Als ik dit soort dingen zie
code:
1
if (dingetje == true)

maak ik er ook altijd van
code:
1
if ((dingetje == true) == (dingetje == dingetje))

maar als om al die booleans bool_checks zouden staan is dat eigenlijk wel een stuk mooier ja.
...ehhm.....huh?
Ligt het aan mij als ik niks van je post begrijp? :P

Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Davio schreef op dinsdag 21 juni 2011 @ 09:17:
[...]

Ja, maar jouw ceil kapt alles gewoon af (of rondt naar beneden en naar boven af), dat is met ceil niet de bedoeling.
Oh ja, duh. Ik dacht slim te zijn door 'm negatief te maken zodat hij "naar boven" gaat 8)7. Maar truncate(x) is natuurlijk altijd gelijk aan -truncate(-x)

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


Acties:
  • 0 Henk 'm!

  • Wijnbo
  • Registratie: December 2002
  • Laatst online: 22-09 14:46

Wijnbo

Electronica werkt op rook.

EddoH schreef op dinsdag 21 juni 2011 @ 11:20:
[...]


...ehhm.....huh?
Ligt het aan mij dat ik niks van je post begrijp? :P
Hij bedoelt denk ik dat hij er nog een extra nutteloze conditie aan toevoegt, zodat diegene die het gemaakt heeft ook zoiets heeft van "wtf" in de hoop dat hij het aanpast naar

code:
1
if (dingetje)

[ Voor 4% gewijzigd door Wijnbo op 21-06-2011 11:23 ]


Acties:
  • 0 Henk 'm!

  • Icekiller2k6
  • Registratie: Februari 2005
  • Laatst online: 08:21
code:
1
if ((dingetje == true) == (dingetje == dingetje))

Als je dat niet begrijpt vul dan ff in wanneer de statement geldig zou zijn namelijk deze:
code:
1
if ((true == true) == (true== true))

waarbij dan
code:
1
(true==true)

true terug geeft dus je hebt dan opnieuw true == true ^^

[ Voor 23% gewijzigd door Icekiller2k6 op 21-06-2011 11:27 ]

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!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

De code snap ik uiteraard wel. De bedoeling ontging me even :)

Acties:
  • 0 Henk 'm!

Verwijderd

Zelf kwam ik weer achter een stukje script (van mezelf) die ik eigenlijk best wel vaak toepas...

PHP:
1
2
3
4
5
6
7
if( $waarde == $waarde2 ) {
   // doe niets ;)
} else {
   /*
    * en hier staan dan andere code om mee verder te gaan
    */
}


Hoewel het niet fout is, is het vaak niet mogelijk om het anders op te lossen of ik ben er gewoon nog niet achter hoe.

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Nu online
Ehm ... Booleanse logica is toch simpel

code:
1
2
3
if( waarde != waarde2 )
{
}


:?

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

code:
1
2
3
4
5
6
7
<?php

if( $waarde < waarde2 || $waarde > waarde2)
{
}

?>



:+

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 23:37

Onbekend

...

Ik hoop dat een hedendaagse compiler intern de code van EddoH vervangt door die van whoami. :)

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Onbekend schreef op dinsdag 21 juni 2011 @ 12:20:
Ik hoop dat een hedendaagse compiler intern de code van EddoH vervangt door die van whoami. :)
Een compiler misschien, maar een php interpreter zeker niet. ;)

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


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Onbekend schreef op dinsdag 21 juni 2011 @ 12:20:
Ik hoop dat een hedendaagse compiler intern de code van EddoH vervangt door die van whoami. :)
Ik hoop dat een hedendaagse programmeur wat minder vertrouwen krijgt in z'n compiler O-)

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
Verwijderd schreef op dinsdag 21 juni 2011 @ 12:11:
Zelf kwam ik weer achter een stukje script (van mezelf) die ik eigenlijk best wel vaak toepas...

PHP:
1
2
3
4
5
6
7
if( $waarde == $waarde2 ) {
   // doe niets ;)
} else {
   /*
    * en hier staan dan andere code om mee verder te gaan
    */
}


Hoewel het niet fout is, is het vaak niet mogelijk om het anders op te lossen of ik ben er gewoon nog niet achter hoe.
Dit meen je toch niet serieus?!

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 23:37

Onbekend

...

PrisonerOfPain schreef op dinsdag 21 juni 2011 @ 12:30:
[...]
Ik hoop dat een hedendaagse programmeur wat minder vertrouwen krijgt in z'n compiler O-)
:)
Die compiler zorgt wel voor een werkend programma.
Maar als gebruiker wil je graag een vlot werkend programma. En als dit soort punten door de hele code heen zitten, kost het gewoon 3x zoveel rekenkracht....

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • Wijnbo
  • Registratie: December 2002
  • Laatst online: 22-09 14:46

Wijnbo

Electronica werkt op rook.

Voor geneste single-line if statements zou de doodstraf opnieuw ingevoerd moeten worden.

C#:
1
var a = b > c ? b : ( b > c + 1 ? 5 : c + 5)


Liever alle alternatieven door elkaar dan bovenstaande.

C#:
1
2
var temp = b > c + 1 ? 5 : c + 5
var a = b > c ? b : temp


Of voor mijn part
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var a;
if(b > c)
{
    a = b;
}
else
{
    if(b > c + 1)
    {
        a = 5;
    }
    else
    {
        a = c + 5;
    }
}



Vooral i.c.m. wazige variabele namen.

developer.GetOverzicht() : Nullpointer exception.

[ Voor 9% gewijzigd door Wijnbo op 21-06-2011 13:17 ]


Acties:
  • 0 Henk 'm!

  • WVL_KsZeN
  • Registratie: Oktober 2002
  • Laatst online: 01-10 22:48
Ik kom net deze functies tegen in een macro die al jaren gebruikt wordt (geschreven door een collega die hier niet meer werkt).

code:
1
2
3
4
5
6
7
/*****************************************************************************/
/* Macro operation definitions                                               */
/*****************************************************************************/

 #define set_bit(ccol_var, ibit)    ccol_var  |= ibit
 #define reset_bit(ccol_var, ibit)    ccol_var  &= -(ibit)
 #define test_bit(ccol_var, ibit)    (ccol_var  & ibit)


En ik maar niet snappen waarom mijn programma niet werkte zoals het moest...

koekje voor de eerste die het ziet :^)

[ Voor 3% gewijzigd door WVL_KsZeN op 21-06-2011 13:42 ]

/me heeft eindelijk ook een icoontje.. woef.. boeien..


Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 23:11
roy-t schreef op dinsdag 21 juni 2011 @ 12:33:
[...]


Dit meen je toch niet serieus?!
Inderdaad, variabelen genaamd 'waarde' en 'waarde2'.?! :'(

Ach, je moet ergens beginnen; is er tenminste weer wat te lezen in dit topic ;)

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Wijnbo schreef op dinsdag 21 juni 2011 @ 13:15:


developer.GetOverzicht() : Nullpointer exception.
Hoezo, ben je geen developer? :P

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


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 01-10 21:27
whoami schreef op dinsdag 21 juni 2011 @ 12:12:
Ehm ... Booleanse logica is toch simpel

code:
1
2
3
if( waarde != waarde2 )
{
}


:?
Zou ik niet zeker van zijn bij PHP, eerlijk gezegd :X

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Onbekend schreef op dinsdag 21 juni 2011 @ 12:58:
[...]

:)
Die compiler zorgt wel voor een werkend programma.
Maar als gebruiker wil je graag een vlot werkend programma. En als dit soort punten door de hele code heen zitten, kost het gewoon 3x zoveel rekenkracht....
Dan moet je ze niet intypen. Een compiler heeft maar een beperkte hoeveelheid optimalisaties die 'ie kan uitvoeren, de meeste zijn niet héél spectaculair en er word maar een beperkt aantal passes over je code gedaan. Daarbij wil het niet zeggen dat als je compiler het een keer automatisch goed optimaliseerd dat 'ie het de volgende keer ook doet, zeker niet als de omliggende code verandert. (Meestal is compiler output deterministisch als de input identiek is, maar zelfs dat is niet altijd het geval).

Kortom, als je wilt dat je programma snel is zul je toch echt zelf het meeste werk moeten verzetten.

Acties:
  • 0 Henk 'm!

Verwijderd

WVL_KsZeN schreef op dinsdag 21 juni 2011 @ 13:18:
Ik kom net deze functies tegen in een macro die al jaren gebruikt wordt (geschreven door een collega die hier niet meer werkt).

code:
1
2
3
4
5
6
7
/*****************************************************************************/
/* Macro operation definitions                                               */
/*****************************************************************************/

 #define set_bit(ccol_var, ibit)    ccol_var  |= ibit
 #define reset_bit(ccol_var, ibit)    ccol_var  &= -(ibit)
 #define test_bit(ccol_var, ibit)    (ccol_var  & ibit)


En ik maar niet snappen waarom mijn programma niet werkte zoals het moest...

koekje voor de eerste die het ziet :^)
Dit is verkeerd!

C:
1
#define reset_bit(ccol_var, ibit) ccol_var &= -(ibit)


Het moet denk ik dit zijn:

C:
1
#define reset_bit(ccol_var, ibit) ccol_var &= ~(ibit)


Krijg ik nu een koekje?

Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik zou er ook (1 << ibit) van maken. En daarnaast je macro's even afschermen met wat haakjes of een do ... while(0)

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!

  • xtra
  • Registratie: November 2001
  • Laatst online: 21-09 13:44
Verwijderd schreef op dinsdag 21 juni 2011 @ 12:11:
Zelf kwam ik weer achter een stukje script (van mezelf) die ik eigenlijk best wel vaak toepas...

PHP:
1
2
3
4
5
6
7
if( $waarde == $waarde2 ) {
   // doe niets ;)
} else {
   /*
    * en hier staan dan andere code om mee verder te gaan
    */
}


Hoewel het niet fout is, is het vaak niet mogelijk om het anders op te lossen of ik ben er gewoon nog niet achter hoe.
PHP:
1
if( !( $waarde == $waarde2) ) {

als snelle oplossing. Vooral handig als er iets vaker || en && tussen de () staat.

Acties:
  • 0 Henk 'm!

  • TJHeuvel
  • Registratie: Mei 2008
  • Niet online
PHP:
1
if($waarde != $waarde2)

8)7

Freelance Unity3D developer


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

!(a == b) => a != b
!(a > b) => a <= b
!(a && b) => !a || !b
!(a || b) => !a && !b

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!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Hehe, DeMorgan's Law, jaar 2 van de uni, ik herinner het me nog. :)

Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik zal het vast ook wel gehad hebben maar dat kan ik me niet meer herinneren. Hier ben ik gewoon zelf achtergekomen ;)

Het is ook heel logisch (duh, het ís logica :P). Als iets alleen waar is zodra zowel a als b waar zijn, dan is het natuurlijk niet meer waar zodra een van de twee (of allebei) niet waar is. Ergo, !(a && b) => !a || !b

Als iets waar is als a waar is of b waar is (of allebei), dan is het natuurlijk niet waar als geen van beide waar is. Oftewel, !(a || b) => !a && !b

[ Voor 61% gewijzigd door .oisyn op 21-06-2011 14: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!

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 18-01-2023
Ik wil niet weten hoeveel mensen dit soort simpele logica niet meer volgen.
Ik had laatst trouwens ook een mooie uitspraak over mijn lievelings trui (valt net niet uit elkaar van slijtage), hij is ouder dan ik was toen ik hem kreeg. Snappen veel mensen ook niet :)

486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 30-09 16:40

Janoz

Moderator Devschuur®

!litemod

Ach, de über nerd logica response op een vraag als "Wil je koffie of thee?" blijft natuurlijk:

Ja

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!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Janoz schreef op dinsdag 21 juni 2011 @ 15:24:
Ach, de über nerd logica response op een vraag als "Wil je koffie of thee?" blijft natuurlijk:

Ja
Nog zo'n slechte koffiegrap: "Wat wil je erin?" "Koffie."

Ik vind de Professor Layton serie voor de DS wel leuk, zitten ook veel van die logica puzzeltjes in in de trant van "Vorig jaar scheelden mijn zus en ik 2 jaar, nu is ze 2x zo oud.....".

Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

"hoe oud ben ik?" edit: "hoe oud is m'n zus?" ..dus...
A: 4

Jeej ik win

[ Voor 35% gewijzigd door EddoH op 21-06-2011 15:55 ]


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Vorig jaar scheelden mijn zus en ik 2 jaar, nu is ze 2x zo oud...
Die "vorig jaar" is ook zo lekker irrelevant :)
EddoH schreef op dinsdag 21 juni 2011 @ 15:36:
"hoe oud ben ik?"
A: 4

Jeej ik win
Euh nee, je bent 2.

[ Voor 42% gewijzigd door .oisyn op 21-06-2011 15:50 ]

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!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

.oisyn schreef op dinsdag 21 juni 2011 @ 15:48:
[...]

Die "vorig jaar" is ook zo lekker irrelevant :)


[...]

Euh nee, je bent 2.
Wel als je die vorig jaar als irrelevant beschouwt ja..... :?

FAIL
Ik bedoelde dus, "hoe oud is m'n zus" in m'n antwoord :D

[ Voor 12% gewijzigd door EddoH op 21-06-2011 15:53 ]


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Leuk als mensen antwoord proberen te geven op willekeurige getypete retorische voorbeeldvragen. :)

Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

EddoH schreef op dinsdag 21 juni 2011 @ 15:52:
[...]


Wel als je die vorig jaar als irrelevant beschouwt ja..... :?
Want jij vindt dat als je vorig jaar 2 jaar scheelde dat dat nu niet meer zo is? ;)

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!

  • kaesve
  • Registratie: Maart 2009
  • Laatst online: 16-05 03:04
waar het volgens mij om gaat is dat zuslief in 1 jaar tijd twee keer ouder is geworden. zus was vorig jaar dus 1 en nu 2. jij scheelt 2 jaar, dus je bent ofwel 0 ofwel 4 :)

Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Davio schreef op dinsdag 21 juni 2011 @ 15:54:
Leuk als mensen antwoord proberen te geven op willekeurige getypete retorische voorbeeldvragen. :)
Inderdaad, welkom op GoT 8)7

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!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

.oisyn schreef op dinsdag 21 juni 2011 @ 15:57:
[...]

Want jij vindt dat als je vorig jaar 2 jaar scheelde dat dat nu niet meer zo is? ;)
Anders had ik 0 kunnen zijn en mijn zus 2 8)
mits 2x0= 2 is.


...Haha, ik stop ermee

[ Voor 8% gewijzigd door EddoH op 21-06-2011 16:01 ]


Acties:
  • 0 Henk 'm!

  • Nappa
  • Registratie: Februari 2001
  • Laatst online: 27-06 00:10

Nappa

The Barbaric Saiya-jin!

Verwijderd schreef op dinsdag 21 juni 2011 @ 12:11:
Zelf kwam ik weer achter een stukje script (van mezelf) die ik eigenlijk best wel vaak toepas...

PHP:
1
2
3
4
5
6
7
if( $waarde == $waarde2 ) {
   // doe niets ;)
} else {
   /*
    * en hier staan dan andere code om mee verder te gaan
    */
}


Hoewel het niet fout is, is het vaak niet mogelijk om het anders op te lossen of ik ben er gewoon nog niet achter hoe.
Ik gebruik die constructie wel eens om een bepaalde conditie toe te lichten in commentaar als de reden niet heel duidelijk blijkt uit de code zelf, ik vind het wel handig :Y)
C#:
1
2
3
4
5
6
7
8
9
            if( conditie )
            {
                // In sommige gevallen bla... bijv. wanneer bla.
                // In dat geval willen we niet dat ... omdat...
            }
            else
            {
                // Code
            }

Alles wat ik zeg kan en zal tegen u gebruikt worden
Scream! Suffer! Panic! | Dark-future Dawnbringer | Unofficial Mordor community


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

kaesve schreef op dinsdag 21 juni 2011 @ 15:58:
waar het volgens mij om gaat is dat zuslief in 1 jaar tijd twee keer ouder is geworden. zus was vorig jaar dus 1 en nu 2. jij scheelt 2 jaar, dus je bent ofwel 0 ofwel 4 :)
Ah ja zo kun je het ook nog interpreteren. Ik interpreteerde het als "nu is ze 2x zo oud als jij" :)

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!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

Begint een beetje op 2e coffee corner te lijken nu :)

On topic: kom net dit tegen, inclusief het commentaar...

C++:
1
if((signed int)len < (signed int)sizeof(int)) //..wtf

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
(Misschien handig om het type van len duidelijk te maken).

Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

hmm, mja, zou kunnen, vind ik alleen neit de mooise oplossing.. sowieso 'len' als signed.....
Ben wel benieuwd wie de "wtf" erbij heeft gezet :D

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Nu online
Als len signed is, moet je juist het resultaat van sizeof() casten, anders mis je negatieve waarden van len, omdat bij gelijke grootte signed types naar unsigned geconverteerd worden in plaats van andersom (en sizeof(int) obviously klein genoeg is dat de conversie veilig is).

De cast van len zou ik dan wél achterwege laten. En signed int schrijven in plaats van int; tja, ik zou het overbodig vinden, maar het is op zich ook correct en het maakt het wel heel expliciet dat het om signedness te doen is.

[ Voor 29% gewijzigd door Soultaker op 21-06-2011 16:26 ]


Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

Het is op zich wel te snappen aangezien het achterliggende framework alle sizes en lengths als signed ehandeld (wat ik de eigenlijke wtf vind).
Ik vind het alleen lelijke code. De combi met het commentaar maakt het alleen nog maar slechter :P

Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik ben zelf niet zo'n fan van unsigned, het mixen van signed en unsigned variabelen zorgt vaker dan eens voor problemen.

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


Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb m'n koekje nog niet gehad :(

Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

.oisyn schreef op dinsdag 21 juni 2011 @ 16:35:
Ik ben zelf niet zo'n fan van unsigned, het mixen van signed en unsigned variabelen zorgen vaker dan eens voor problemen.
Omdat bestaande code vaak ook signed gebruikt doe ik dat ook, om problemen te voorkomen. Maar ik vind len's en sizes als size een beetje tegen mn gevoel indruisen. Sowieso gooi je de helft van je range weg, en kun je mooi constructies zoals bovenstaand verwachten als je wel een keer unsigned nterug krijgt / nodig hebt.

Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

Vragen betekent niet krijgen ;)
Pagina: 1 ... 60 ... 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. :)