[alg] Slechtste programmeervoorbeelden deel 5 Vorige deel Overzicht

Pagina: 1 ... 5 ... 20 Laatste
Acties:

Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 11:37

F.West98

Alweer 16 jaar hier

R4gnax schreef op dinsdag 04 maart 2014 @ 20:51:
[...]


Ik blijf het een briljantbrillant stukje code vinden.

Ik zweer dat als ik ooit interviews af moet gaan nemen voor een C# developer, deze in m'n repertoire gaat zitten met de vraag "Kun je me eens vertellen wat jou bevalt of niet bevalt aan deze methode en wat je er al dan niet aan zou verbeteren?"

Uiteraard voor de compleetheid even een correcte implementatie, zodat iedereen die niet direct bekend is met C# en hoe het dan wel zou moeten even mee kan lachen om het origineel. (Het is trouwens niet een helemaal triviaal probleem, mocht je dat denken. Schrikkeljaren maken het een beetje irritant.)

[...]
Kan je niet gewoon wat doen TimeSpan?
(even geen manier om iets te testen, maar een random hersenspinsel)

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • 0 Henk 'm!

  • FireWood
  • Registratie: Augustus 2003
  • Laatst online: 12:16
Basti504 schreef op woensdag 19 maart 2014 @ 20:55:
[...]


Het is altijd mooi om te zien hoe erg de industriële automatisering achterloopt op moderne computer programmatie. In het werk wat ik doe (PLC/robot programmeren) bestaan dev/test/accept al nagenoeg niet. Na testen in een simulator en gezamenlijk reviewen van de code houdt het al vaak op. Daarna is het vaak 'plop, code in de machine' en live testen met gereduceerde snelheden en/of test producten.

Terwijl softwarefouten in deze systemen wel degelijk gevolgen hebben in de fysieke wereld door bijvoorbeeld materiele schade of nog erger menselijke ongevallen.

[afbeelding]
Dan gaat het zelfs nog vrij netjes. Meeste PLC-programma's worden bij ons echt niet gesimuleerd. Gewoon erin schieten en langzaam alle onderdelen van de machine opstarten. On-line verbeteringen doorvoeren en met een beetje mazzel heb je het programma in een dag volledig draaiend en is de basis compleet afgetest.

Er ontstaan weleens vage dingen, als je een verbreek/maak contact verkeerd om hebt geprogrammeerd. Moet je soms heel snel een noodstop kunnen indrukken 8).

Maar eerlijk is eerlijk PLC-programma's hebben geen miljoenen regels code. Verder bestaat de code vaak 90% uit "boolean" operaties en wordt het daarom niet echt ingewikkeld.

Noobs don't use "F1", Pro's do, but they can't find the information they needed


Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 13:01
Bij de NOS zijn ze de round functie vergeten :/

Top stijgers
CDA (7,799999999999997%)

Acties:
  • 0 Henk 'm!

  • Basti504
  • Registratie: Februari 2005
  • Laatst online: 14-09 16:33

Basti504

Niet de enige, wel de echte.

FireWood schreef op woensdag 19 maart 2014 @ 21:20:
[...]


Dan gaat het zelfs nog vrij netjes. Meeste PLC-programma's worden bij ons echt niet gesimuleerd. Gewoon erin schieten en langzaam alle onderdelen van de machine opstarten. On-line verbeteringen doorvoeren en met een beetje mazzel heb je het programma in een dag volledig draaiend en is de basis compleet afgetest.

Er ontstaan weleens vage dingen, als je een verbreek/maak contact verkeerd om hebt geprogrammeerd. Moet je soms heel snel een noodstop kunnen indrukken 8).

Maar eerlijk is eerlijk PLC-programma's hebben geen miljoenen regels code. Verder bestaat de code vaak 90% uit "boolean" operaties en wordt het daarom niet echt ingewikkeld.
Inderdaad zijn de meeste PLC programma's redelijk simpel qua opzet, althans dat zou het moeten zijn...
Dat is het mooie van die wereld, alles zou in principe zo simpel mogelijk moeten zijn qua code terwijl de PC software vaak bulkt van complexietijd en abstracties enz. enz.

Overigens moet ik wel zeggen dat de meeste PLC programma's eenvoudig beginnen en gaandeweg er steeds meer eisen bijkomen groeit de code en voordat je het weet kun je ook mechanische tekortkomingen in software gaan oplossen :+

...


Acties:
  • 0 Henk 'm!

  • R.G
  • Registratie: Januari 2009
  • Laatst online: 02:10

R.G

:) coole thread,

Hoe kan ik zo'n stukje code in zo code blokje zetten?

ik weet niet of het een slecht voorbeeld is:
maar helaas deed ik laatst.

for(int i=5; i<5; i++)
{
}

:P er was nog veel meer code en alles ging async en dan wordt het nog wel eens lastig om dit terug te vinden dit zat ergens diep nested :P

was al aantal uur bezig ermee :P vandaar, maar is geen excuus?

Fijne nacht programmers ;)

Acties:
  • 0 Henk 'm!

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

Code in blokjes kan met
code:
1
2
3
4
5
[code=C++]
    int aap = 42;
    float noot = 3.14;
    bool mies = true;
[/code]


Tip, trouwens, gebruik een debugger. Genoeg problemen die moeilijk te debuggen zijn maar dit is er niet één van. :P

Wat mij betreft ook leuk:
C++:
1
2
3
4
5
6
7
8
9
10
11
for (int i = 0; i < N; i++);
{
    // Veel
    // moeilijke
    // code
    // waar
    // je
    // lang
    // in
    // zoekt
}

En dan kom je erachter dat de bug helemaal niet in je moeilijke code zit. Editor, geef mij een warning!

Maar die leer je snel genoeg. Hee, mijn for-loopje wordt steeds exact één keer uitgevoerd... Oh, derp! :+

[ Voor 8% gewijzigd door bwerg op 01-04-2014 02:07 ]

Heeft geen speciale krachten en is daar erg boos over.


Acties:
  • 0 Henk 'm!

  • diabolofan
  • Registratie: Mei 2009
  • Laatst online: 11-09 11:09
De logica van de compilers om dat gewoon als valide door te laten gaan is me ook altijd onduidelijk ja..

Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Een beetje compiler zegt:
Warning: Possible mistaken empty statement

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!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 12:53
Maar het is ook gewoon valide. Wees blij dat er al een warning gegeven wordt.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

jip_86 schreef op woensdag 19 maart 2014 @ 22:30:
Bij de NOS zijn ze de round functie vergeten :/

Top stijgers
CDA (7,799999999999997%)
Een round functie gaat je daar niet helpen.

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!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
.oisyn schreef op dinsdag 01 april 2014 @ 09:35:
[...]

Een round functie gaat je daar niet helpen.
Wel de round() functie in PHP *O* :D !

Acties:
  • 0 Henk 'm!

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
.oisyn schreef op dinsdag 01 april 2014 @ 09:35:
[...]

Een round functie gaat je daar niet helpen.
Inderdaad, substr kun je daar beter voor toepassen.

Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

4Real schreef op dinsdag 01 april 2014 @ 10:23:
[...]
Inderdaad, substr kun je daar beter voor toepassen.
Ehh..substr for het formatten van een nummer?
Not sure if serious....

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

HuHu schreef op dinsdag 01 april 2014 @ 10:21:
[...]

Wel de round() functie in PHP *O* :D !
No, it doesn't.

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!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Tsja.0. nu ik het terug lees staat er niet exact wat jip_86 in gedachten had dat die round() functie zou moeten doen. Ik gokte erop dat hij/zij wilde dat het op 7,8 zou moeten uitkomen, wat round(7.799999999999997, 2); in PHP doet.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

No, it doesn't :)

De kern van het probleem is dat 7.8 niet in een float past. Dat wordt ~7.7999999999999998223643160599749535322189, en daar gaat round() niets aan veranderen.

Waar het hier misgaat is dat er teveel digits worden gebruikt in de uitvoer. Jij denkt dat round() werkt omdat PHP standaard niet zoveel digits uitvoert, maar feitelijk heb je round() niet nodig, doe maar eens echo 7.799999999999997. Of printf("%.16f", round(7.799999999999997, 2)) om te zien dat round() eigenlijk weinig doet in dit geval.

Ergo, (s)printf of number_format heb je nodig. Het probleem zit in de presentatie, niet in de representatie.

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


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Of niet gebruik maken van een float representatie maar een decimale representatie ( Al zal dat in PHP vast niet bestaan ;) ). Al is het ook daar nog wenselijk om dat te formateren, want het is natuurlijk prima mogelijk dat er daadwerkelijk meer decimals in het percentage zitten.

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

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ook een decimale representatie gaat je hier niet helpen, we hebben het over percentages van stemmen. Wat als een partij nou exact 1000 van de in totaal 3000 stemmen heeft gehaald?

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


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
.oisyn schreef op dinsdag 01 april 2014 @ 11:32:
Ook een decimale representatie gaat je hier niet helpen, we hebben het over percentages van stemmen. Wat als een partij nou exact 1000 van de in totaal 3000 stemmen heeft gehaald?
Daarom staat er ook
Woy schreef op dinsdag 01 april 2014 @ 11:26:
Al is het ook daar nog wenselijk om dat te formateren, want het is natuurlijk prima mogelijk dat er daadwerkelijk meer decimals in het percentage zitten.
Echter zal je met een decimale representatie wel met een Round af kunnen, maar dat neemt niet weg dat formatering op het moment van output gewoon de betere oplossing is.

[ Voor 13% gewijzigd door Woy op 01-04-2014 11:36 ]

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

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
EddoH schreef op dinsdag 01 april 2014 @ 10:46:
[...]


Ehh..substr for het formatten van een nummer?
Not sure if serious....
or 1 april? ;)

Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

Misschien een topic "Slechtste 1 april-grap voorbeelden" openen. :+

Acties:
  • 0 Henk 'm!

  • m1dnigh7
  • Registratie: Januari 2006
  • Laatst online: 04-05 15:38
kenneth schreef op dinsdag 01 april 2014 @ 09:10:
Een beetje compiler zegt:
[...]
Als ik me niet vergis zal dit bij veel compilers gewoon ook weggehaald worden mits de nodige optimisaties aanstaan. Bij de C compiler zou dit in elk geval het geval moeten zijn. Die haalt bijvoorbeeld ook loops weg waar redundante statements ingebeuren die nergens voor nodig zijn.

Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

m1dnigh7 schreef op dinsdag 01 april 2014 @ 15:36:
[...]


Als ik me niet vergis zal dit bij veel compilers gewoon ook weggehaald worden mits de nodige optimisaties aanstaan. Bij de C compiler zou dit in elk geval het geval moeten zijn. Die haalt bijvoorbeeld ook loops weg waar redundante statements ingebeuren die nergens voor nodig zijn.
Dan heb je toch nog steeds het probleem dat je code niet werkt zoals verwacht? het gaat erom dat de compiler een warning zou moeten genereren omdat de code zoals die geschreven is nergens op slaat, en waarschijnlijk niet is wat er bedoeld wordt.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13-09 09:39

Janoz

Moderator Devschuur®

!litemod

m1dnigh7 schreef op dinsdag 01 april 2014 @ 15:36:
[...]


Als ik me niet vergis zal dit bij veel compilers gewoon ook weggehaald worden mits de nodige optimisaties aanstaan. Bij de C compiler zou dit in elk geval het geval moeten zijn. Die haalt bijvoorbeeld ook loops weg waar redundante statements ingebeuren die nergens voor nodig zijn.
Ik hoop dat je je vergist. Warning of error is gewenst en doorlaten is nog net acceptabel, maar een compiler die zelf maar gaat beslissen dat de programflow functioneel anders moet gaan lopen dan dat ik in mijn sourcecode gedefinieerd heb mag acuut standrechtelijk gemoved worden naar /dev/null

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!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Over wat voor functionaliteit heb je het dan? Een register verhogen tot hij een bepaalde waarde heeft? Een lus zonder observeerbare side-effects zal in een optimaliserende compileerstap er weldegelijk uitgehaald worden.

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

Janoz schreef op dinsdag 01 april 2014 @ 16:17:
[...]

Ik hoop dat je je vergist. Warning of error is gewenst en doorlaten is nog net acceptabel, maar een compiler die zelf maar gaat beslissen dat de programflow functioneel anders moet gaan lopen dan dat ik in mijn sourcecode gedefinieerd heb mag acuut standrechtelijk gemoved worden naar /dev/null
Dat gebeurt in de praktijk wel eens, afhankelijk van je definitie van functioneel. Bijvoorbeeld het 'cachen'(sort of) van data waardoor je bij embedded toepassingen nogal eens het keyword 'volatile' gebruikt omdat je niet wilt dat een register toegang weg-geoptimaliseerd wordt.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13-09 09:39

Janoz

Moderator Devschuur®

!litemod

De opmerking van m1dnigh7 over wat weggehaald zou worden is nogal ambigu. De hele forlus weghalen (of loops unrolen of stukken inlinen of zelfs het reorderen van sommige instructies) veranderd functioneel niks. Ik had de opmerking echter geïnterpreteerd als 'het weghalen van de puntkomma omdat dat vast wel bedoeld zou zijn'.

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!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 14-09 21:14
m1dnigh7 schreef op dinsdag 01 april 2014 @ 15:36:
[...]


Als ik me niet vergis zal dit bij veel compilers gewoon ook weggehaald worden mits de nodige optimisaties aanstaan. Bij de C compiler zou dit in elk geval het geval moeten zijn. Die haalt bijvoorbeeld ook loops weg waar redundante statements ingebeuren die nergens voor nodig zijn.
C:
1
2
3
4
5
6
for (int i = 0; i < 10 && doWhatever(); i = myWTFStatement(i));

{
    unique_ptr<string> p(new string("lalalala"));
    cout << p;
}

>:)
Ik heb een keer iets triviaals met door een lijst heen lopen gezien, in de categorie: zoek het laatste element van een single linked list m.b.v. iterators. Daarvoor was geen body nodig, dus alleen de for-lus was genoeg. En extra scoping m.b.v. accolades zie ik wel vaker, zoals in te grote switch/case statements.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

For lus zonder body gebruik ik ook weleens, maar je kan niet ontkennen dat die code ontzettend onduidelijk is opgeschreven. In zo'n geval zou ik ervoor kiezen om de increment van de for in de body te zetten.

C++:
1
2
3
4
5
6
7
for (int i = 0; i < 10 && doWhatever(); )
    i = myWTFStatement(i);

{ 
    unique_ptr<string> p(new string("lalalala")); 
    cout << 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!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 14-09 21:14
Het was even een simpel voorbeeld waarin een lege forloop niet weggehaald mag worden, en de smiley leek me duidelijk genoeg. Als ik dit ooit incheck, of iemand tegenkom die zoiets incheckt, is standrechtelijke executie op z'n plaats.

Acties:
  • 0 Henk 'm!

  • Gleighton
  • Registratie: November 2008
  • Niet online
Daar houden we je aan :+

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 14-09 21:14
Eindhoven he? Dan blijf ik daar even uit de buurt :P

Acties:
  • 0 Henk 'm!

  • HeSitated
  • Registratie: April 2009
  • Laatst online: 03-12-2024
Voor het weekend:

C#:
1
string.Format(@"\{0}_{1}_{2}\", DateTime.Now.Day.ToString("00"), DateTime.Now.Month.ToString("00"), DateTime.Now.Year);

:X

Overigens werkt:
C#:
1
DateTime.Now.ToString(@"\dd_MM_yyyy\")
niet.... 8)7

Resultaat is dan: FormatException: Input string was not in a correct format.

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Het moet namelijk dit zijn:

C#:
1
DateTime.Now.ToString(@"\\dd_MM_yyyy\\")


Hint: \ is een escape character voor de modifiers, een enkele \ op het einde heeft niks om te escapen.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

.edit: hier stond onzin ;)

[ Voor 77% gewijzigd door .oisyn op 25-04-2014 16:31 ]

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


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Je wilt gewoon te veel, denk ik. :)

Dit snapt hij wel:

C#:
1
DateTime.Now.ToString(@"dd_MM_yyyy")
25_04_2014
Dit ook:
C#:
1
String.Format(@"\{0:dd_MM_yyyy}\", DateTime.Now);
\25_04_2014\

[ Voor 9% gewijzigd door Alex) op 25-04-2014 16:33 ]

We are shaping the future


Acties:
  • 0 Henk 'm!

  • Vuikie
  • Registratie: December 2003
  • Laatst online: 08:13
Mag ik dit aandragen als slechte code?

code:
1
2
3
4
5
6
7
8
9
Client[99];
MaxClients := 99;

For X := 0 to MaxClients do
  handel aangemelde Client[X] af;
  If laatste Client then
    exit;
 end_if
end_for


Bovenstaande vond ik in een ouder project.

Gelukkig had de klant geen 99 clients...

Had heel bijzonder kunnen worden als de 99ste client zich aan had gemeld :P

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 12:53
Het zal wel laat zijn, maar ik zie het probleem zo eventjes niet...

Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 11:37

F.West98

Alweer 16 jaar hier

99 items en 100 iterations ;)

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 12:53
Ah, tja.. ben niet bekend met die taal (welke is het eigenlijk?). Ik las het als "van 0 tot MaxClients", maar het is dus "van 0 tot en met MaxClients". Tja... ^^

[ Voor 8% gewijzigd door Caelorum op 25-04-2014 22:57 ]


Acties:
  • 0 Henk 'm!

  • Acid_Burn
  • Registratie: Augustus 2001
  • Laatst online: 12-09 09:04

Acid_Burn

uhuh

In VB zijn dat dus wel 100 elementen.

Glass Eye Photography | Zelfbouw wireless fightstick | Mijn puzzel site


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Caelorum schreef op vrijdag 25 april 2014 @ 22:57:
Ah, tja.. ben niet bekend met die taal (welke is het eigenlijk?).
Pseudocode, denk ik ;)

We are shaping the future


Acties:
  • 0 Henk 'm!

  • Vuikie
  • Registratie: December 2003
  • Laatst online: 08:13
nee, het is structured text(Met een beetje pseudo code ;) ). Maar idd de array is van 0 t/m 98 en de for loop doet van 0 t/m 99.

Acties:
  • 0 Henk 'm!

  • martin_v_z
  • Registratie: Januari 2012
  • Laatst online: 14-09 21:57
Maar gezien er een "if laatste client" tussen staat zal het dus waarschijnlijk geen crash opleveren.
Netjes is het natuurlijk niet, waarom is de array sowieso gelimiteerd op 99?

Acties:
  • 0 Henk 'm!

Verwijderd

martin_v_z schreef op zaterdag 26 april 2014 @ 12:22:
Maar gezien er een "if laatste client" tussen staat zal het dus waarschijnlijk geen crash opleveren.
Netjes is het natuurlijk niet, waarom is de array sowieso gelimiteerd op 99?
Arrays zijn toch altijd gelimiteerd op 99?

me.sarcasm.turnOff();

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 14-09 21:14
Dat soort talen mogen wat mij betreft universeel tot 'the real WTF' worden benoemd. Ze zijn vaak nog steeds niet leesbaar voor de domeinexperts, hebben onverwachtse effecten bij edge- en corner-cases en voor de programmeurs was een 'gewone' taal beter leesbaar geweest. Maak dan een duidelijke API in Python o.i.d.

me.turnOff(me.rant);

Acties:
  • 0 Henk 'm!

  • AlphaRomeo
  • Registratie: Maart 2007
  • Laatst online: 12:44

AlphaRomeo

FP PowerMod
MBV schreef op zondag 27 april 2014 @ 18:27:
Dat soort talen mogen wat mij betreft universeel tot 'the real WTF' worden benoemd. Ze zijn vaak nog steeds niet leesbaar voor de domeinexperts, hebben onverwachtse effecten bij edge- en corner-cases en voor de programmeurs was een 'gewone' taal beter leesbaar geweest. Maak dan een duidelijke API in Python o.i.d.

me.turnOff(me.rant);
Dit soort talen zie je bij PLC's met een beperkte instructieset (Bijvoorbeeld Beckhoff TwinCAT). Alle variabelen moeten vooraf gedeclareerd zijn en mogen niet on the fly aangemaakt worden. Heeft deels te maken met het real-time karakter van de besturing waarvoor de ST wordt ingezet.

[ Voor 14% gewijzigd door AlphaRomeo op 28-04-2014 12:36 ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Maar dat is dus bull, de manier waarop je variabelen kan declareren heeft niets te maken met de geproduceerde code.

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!

  • Vuikie
  • Registratie: December 2003
  • Laatst online: 08:13
.oisyn schreef op maandag 28 april 2014 @ 12:40:
Maar dat is dus bull, de manier waarop je variabelen kan declareren heeft niets te maken met de geproduceerde code.
AlphaRomeo heeft gelijk. De code die ik aandroeg is (een HELE kleine) snippet uit de aansturing van een AGV besturing die wij bij een klant hebben draaien. Daar staat een master PLC die, via WIFI, zo'n 65 AGV's aanstuurt.

Die PLC's programmeren wij in strucured text. De master PLC is wel een deftige PLC met redelijk wat resources, maar de AGV's hebben een CPU met maar 750KB RAM en 3MB flash tbv. de firmware. Daar zit ethernet communicatie in, verschillende PID's, hand besturing, veiligheden, noem maar op. Dat is niet echt geschikt voor een taal als Python of andere high end taal. Vandaar dat je van te voren alle variabelen/data structuren moet declareren.

Plus de architectuur van een PLC is veel stringenter dan die van een regulier PC met termen als Cyclic taak classen die synchroon en asynchroon kunnen lopen.
Bijvoorbeeld bij een taak die in een 2ms classe staat en door een fout van de programmeur(mij!) duurt de taak 2.1ms dan krijg ik een watchdog om mijn oren met een Cyclic violation error, omdat de 2ms niet meer gegarandeerd word!(PS. een watchdog betekend in de PLC's die wij gebruiken dat de PLC keihard uit RUN gaat en in stop modus gaat staan, zie het als dat Windows in veilige modus opstart)

Vandaar dat PLC's vaak nog in ladder of in een exotische, eigen taal, geprogrammeerd worden. Alhoewel je langzaam wel steeds meer ANSI talen, zoals structured text of C, ziet verschijnen zie dat nog niet heel vaak en heeft dat vooral te maken met dat een programma voor een PLC is niet bedoeld voor een paar jaar, maar voor 10 jaar of meer. Ik kom nog programma's van 20-25 oud jaar tegen, die wij ook nog proberen te ondersteunen!(Lang leve DOS-BOX ;) )

Over legacy gesproken ;)

Het is in de PLC wereld dus ook heel normaal dat de programmeer taal niet heel veel veranderd door de jaren heen.

[ Voor 6% gewijzigd door Vuikie op 29-04-2014 10:13 . Reden: typo's en wat uitleg toegevoegd. ]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ah, ik zie waar het misverstand is ontstaan. Jullie zeggen beide "van tevoren declareren" wat ik interpreteer als:
C:
1
2
3
4
5
6
7
8
void foo()
{
    int x; // declaratie

    // code

    x = 3;
}


Tov "on the fly aanmaken" (AlphaRomeo's woorden)
C:
1
2
3
4
5
6
void foo()
{
    // code

    int x = 3;
}


In het laatste voorbeeld zou ik 'x' niet omschrijven als een van tevoren gedeclareerde variabele. Maar natuurlijk is een embedded taal statisch getypeerd, dynamische typering brengt veel teveel overhead met zich mee. En (onder andere) daarom is Python of PHP minder geschikt.

Maar waar jullie eigenlijk op doelen is überhaupt het declareren van variabelen, of je dat nou van tevoren doet of 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.


Acties:
  • 0 Henk 'm!

  • AlphaRomeo
  • Registratie: Maart 2007
  • Laatst online: 12:44

AlphaRomeo

FP PowerMod
.oisyn schreef op dinsdag 29 april 2014 @ 11:45:
Maar waar jullie eigenlijk op doelen is überhaupt het declareren van variabelen, of je dat nou van tevoren doet of niet.
Wat ik bedoel is dat überhaupt het declareren van een variabele binnen een beperkte scope vaak niet mogelijk is (soms wel omdat hij dan gehide wordt maar actief blijft in het geheugen). Bij veel PLC's heeft je memory een vaste lengte en is een variabele dus altijd een pointer naar een bepaald geheugenadres. Je kunt dus niet zomaar even een int x; declareren binnen een functie. Als je die x nodig hebt moet je hem globaal declareren, en sleep je hem dus het hele programma mee.

De hardware limitaties en het functioneren van een real-time systeem zoals bij PLC's en soft-PLC's beperken de taal daardoor wel. Van een echt 'hogere' programmeertaal is namelijk moeilijk in real-time te garanderen dat hij zijn cyclus gaat halen. Overigens wil real-time niet zeggen snel of <2ms, maar precies 2ms. Zodat 100 cycles ook precies 200ms zijn. Hier worden onder andere de timers weer op gebaseerd.

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
"I got 99 clients and the last ain't one!"

Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 11:37

F.West98

Alweer 16 jaar hier

Massive kick.

Ik kwam deze vandaag tegen in oude code... :'(
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static enum Type {
FOO, BAR, FOO2, BAR2 // en door
}

public void setType(int option) {
    if(option == 1) {
        this.type = Type.FOO;
    } else if(option == 2) {
        this.type = Type.BAR;
    } else if(option == 3) {
        this.type = Type.FOO2;
    } else if(option == 4) {
        this.type = Type.BAR2;
    }
    // en door
}

Toch maar snel dit van gemaakt:
Java:
1
2
3
4
5
6
7
8
9
public Enum Type {
    FOO (1), BAR (2), FOO2 (3), BAR2 (4);
    private int id;
    Type(int id) { this.id = id; }
}

public void setType(int option) {
    this.type = Type.values()[option];
}

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • 0 Henk 'm!

  • Stukfruit
  • Registratie: Oktober 2007
  • Niet online
Tjah...

• ArrayOutOfBounds?
• Waarom uberhaupt van integer naar enum mappen?
• Klopt de mapping nog als je een nieuwe variabele toevoegt aan de enum? (ligt eraan wat je er verder nog mee doet)

Dat zit wel Schnorr.


Acties:
  • 0 Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 11-09 05:38

Firesphere

Yoshis before Hoshis

F.West98 schreef op woensdag 09 juli 2014 @ 19:48:
Massive kick.

Ik kwam deze vandaag tegen in oude code... :'(
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static enum Type {
FOO, BAR, FOO2, BAR2 // en door
}

public void setType(int option) {
    if(option == 1) {
        this.type = Type.FOO;
    } else if(option == 2) {
        this.type = Type.BAR;
    } else if(option == 3) {
        this.type = Type.FOO2;
    } else if(option == 4) {
        this.type = Type.BAR2;
    }
    // en door
}

Toch maar snel dit van gemaakt:
Java:
1
2
3
4
5
6
7
8
9
public Enum Type {
    FOO (1), BAR (2), FOO2 (3), BAR2 (4);
    private int id;
    Type(int id) { this.id = id; }
}

public void setType(int option) {
    this.type = Type.values()[option];
}
Zou je niet in je nieuwe versie, een check toevoegen die controleert of de gevraagde optie wel bestaat?

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!

  • Xatom
  • Registratie: Augustus 2011
  • Laatst online: 02:18

Xatom

Ga je niet een beetje het doel van een enum voorbij als je het om gaat zetten naar een integer?

Even een snelle quote van de eerste hit op Google:
The idea is that instead of using an int to represent a set of values, a type with a restricted set of values in used instead.
Dus waarom niet de volgende code:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
public enum Type {
    FOO, BAR, FOO2, BAR2
}

Type type;

public void setType(Type option) {
    this.type = option;
}

public void start() {
    setType(Type.FOO);
}

Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 11:37

F.West98

Alweer 16 jaar hier

Het is een optiemenu, en vanuit het systeem wordt er dan in een onClick die int meegegeven, welke optie in de lijst je had. En die lijst definieer ik in een XML.
Als ik een nieuwe optie toevoeg doe ik die ook in de XML erbij :)

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 05:47

Sebazzz

3dp

Kan je geen codegeneratie zoals T4 gebruiken omdat je je lijst nu dupliceert in de XML?

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


Acties:
  • 0 Henk 'm!

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 09-09 15:24
Ook een 'juweeltje':
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
$(document).ready(function(){
  CreateTables();
})

function CreateTables() {
  $('#content table:not(".no_row_color")').each(function() {
    $('tr:odd', this).addClass('even');
    $('tr:even', this).not(":first").addClass('uneven');
    $('tr:first', this).addClass('heading');
  })
}

Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 11:37

F.West98

Alweer 16 jaar hier

Sebazzz schreef op woensdag 09 juli 2014 @ 21:06:
Kan je geen codegeneratie zoals T4 gebruiken omdat je je lijst nu dupliceert in de XML?
Volgens mij niet.
1) Het is Java :>
2) Het menu heeft de gebruiksvriendelijke namen (met spaties e.d.), de enum wordt overal gebruikt en heeft geen spaties ;)
3) Dupliceren in XML is wel zo handig, menu heeft meer opties dan enkel dit (Android Drawer, met een custom NavigationDrawerAdapter waar je dan 2 groups hebt, deze code is enkel voor één group, andere group moet ik nog implementeren)

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
@1) Er zijn vast wel code generators voor Java
@2) Die zou je ook in je enum kunnen mikken (attributes, properties, verzin iets leuks)
@3) Het is niet mogelijk om je lijst uit te lezen wanneer je dat menu opbouwt?

We are shaping the future


Acties:
  • 0 Henk 'm!

  • Stukfruit
  • Registratie: Oktober 2007
  • Niet online
En als je dan toch Android gebruikt: waarom gebruik je geen resource files?

Dat zit wel Schnorr.


Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 11:37

F.West98

Alweer 16 jaar hier

@1) Ja :P
@2) Kan, maar beter in resource files (talen)
@3) Ik kan heel ingewikkeld de adapter aanpassen om meer te ondersteunen, maar dit leek mij simpeler. De Adapter vereist een ArrayList<String> voor de groups en een ArrayList<ArrayList<String>> voor de children. Ik krijg in de callback parameters groupPosition en childPosition terug, de indexes van de value in die twee ArrayLists.
Die ArrayLists bouw ik op vanuit XML, en zolang de volgorde hetzelfde is kan ik gewoon nummers aan de enum-waardes koppelen. Tot ik met die volgorde ga schuiven. Ik kan ook nog met getChild de string terugkrijgen die ik opgeef (die kijkt gewoon in de arraylist), maar die zijn dus taalafhankelijk. Int is makkelijker.

edit:
Het kan vast veel makkelijker, maar het is niet volledig mijn code en ik ben beginnend Android-dev dus ik ken ook niet alle opties :) In dit geval leek dit mij de beste oplossing.

[ Voor 11% gewijzigd door F.West98 op 10-07-2014 01:17 ]

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • 0 Henk 'm!

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
F.West98 schreef op woensdag 09 juli 2014 @ 19:48:
[...]
Toch maar snel dit van gemaakt:
Java:
1
2
3
4
5
6
7
8
9
public Enum Type {
    FOO (1), BAR (2), FOO2 (3), BAR2 (4);
    private int id;
    Type(int id) { this.id = id; }
}

public void setType(int option) {
    this.type = Type.values()[option];
}
Iets te snel, want arrays zijn 0-based dus je krijgt:
1. niet de verwachte waarde terug
2. een AIOOBException voor optie 4

Ik zou de vertaling van int naar enum sowieso de enum in trekken (dus naast de standaard valueOf(String) ook een static valueOf(int) maken).

Maar eigenijk hangt het er vooral vanaf of je Type wel zo strak wilt koppelen aan opties uit je UI... Als Type onderdeel is van je "model" en die opties van je "view", was je oorspronkelijke oplossing nog niet zo gek (al zou ik het met een switch doen), aangenomen dat dat ergens in een "controller" gebeurde...

[ Voor 19% gewijzigd door Herko_ter_Horst op 08-08-2014 14:51 ]

"Any sufficiently advanced technology is indistinguishable from magic."


Acties:
  • 0 Henk 'm!

  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 11:47
En dan in die valueOf zoeken op het veld id.

let the past be the past.


Acties:
  • 0 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 10:32
HuHu schreef op dinsdag 17 september 2013 @ 12:01:
[...]

code:
1
2
3
4
5
int a = 0;
float b = 3.14;

int   a = 0;
float b = 3.14;


De onderste code is "waarschijnlijk niet goed"? Ik noem het "leesbaarder".
Ik geef liever de voorkeur aan het volgende:

code:
1
2
int a   = 0;
float b = 3.14;

[ Voor 9% gewijzigd door Hatsieflatsie op 09-08-2014 14:50 ]


Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 11:37

F.West98

Alweer 16 jaar hier

Herko_ter_Horst schreef op vrijdag 08 augustus 2014 @ 14:46:
[...]

Iets te snel, want arrays zijn 0-based dus je krijgt:
1. niet de verwachte waarde terug
2. een AIOOBException voor optie 4

Ik zou de vertaling van int naar enum sowieso de enum in trekken (dus naast de standaard valueOf(String) ook een static valueOf(int) maken).

Maar eigenijk hangt het er vooral vanaf of je Type wel zo strak wilt koppelen aan opties uit je UI... Als Type onderdeel is van je "model" en die opties van je "view", was je oorspronkelijke oplossing nog niet zo gek (al zou ik het met een switch doen), aangenomen dat dat ergens in een "controller" gebeurde...
Ik heb het nu sowieso heel anders aangepakt, na een boel refactoren is het een implementatie van het strategy pattern geworden. Veel flexibeler als ik nog wil uitbreiden naar andere types, en overzichtelijkere code.

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • 0 Henk 'm!

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 14-09 19:30

alienfruit

the alien you never expected

Safari slingert met een fout bij het gebruik van use strict terwijl Chrome, Firefox en Opera er allemaal geen probleem in zien :(

Acties:
  • 0 Henk 'm!

  • Laurens-R
  • Registratie: December 2002
  • Laatst online: 29-12-2024
Hatsieflatsie schreef op zaterdag 09 augustus 2014 @ 14:49:
[...]


Ik geef liever de voorkeur aan het volgende:

code:
1
2
int a   = 0;
float b = 3.14;
Ik vind het alleen jammer dat Visual Studio default dit weer gelijk autocorrect naar single spaces, waarbij deze formatting gelijk verloren gaat. Ben zelf nog op zoek naar de switch om dit uit te zetten. (Nadeel is, dat als iemand anders mijn code aanpast het alsnog ge-autocorrect word :()

Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Daarom iedereen aan de standaardinstellingen. Spelen met spaties en tabs doe je maar in je vrije tijd.

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!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 14-09 21:14
with ^^. Ik zie het hier ook, regelmatig initialisatielijstjes die door iedereen leuk worden uitgelijnd. Heel leuk, tot er een langere naam tussen moet.

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
MBV schreef op maandag 11 augustus 2014 @ 11:21:
with ^^. Ik zie het hier ook, regelmatig initialisatielijstjes die door iedereen leuk worden uitgelijnd. Heel leuk, tot er een langere naam tussen moet.
Mijn editor doet dat automatisch. Als je een langere variabelenaam toevoegt en daarna een auto-indent uitvoert, wordt alles weer netjes uitgelijnd :).

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 14-09 21:14
Dat klinkt leuk, totdat je 200 merge-conflicten hebt :P

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 12:53
Als je daar een merge conflict voor krijgt moet je misschien een ander VCS gebruiken.

Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

MBV schreef op maandag 11 augustus 2014 @ 11:21:
with ^^. Ik zie het hier ook, regelmatig initialisatielijstjes die door iedereen leuk worden uitgelijnd. Heel leuk, tot er een langere naam tussen moet.
Column select?

Acties:
  • 0 Henk 'm!

  • Anthirian
  • Registratie: April 2009
  • Laatst online: 09:35

Anthirian

In Trance We Trust

Hoe dan ook, er zijn natuurlijk niet voor niets stijlrichtlijnen voor dat soort dingen. :)

Mijn Films en TV Series, Games en Muziek.


Acties:
  • 0 Henk 'm!

  • afraca
  • Registratie: April 2009
  • Laatst online: 13-08 16:46

afraca

Open Source!

Ik weet dat GoFmt (http://golang.org/cmd/gofmt/) die uitlijning zelf doet, en aan RustFmt wordt nog gewerkt, maar is daar ook future feature.

edit: https://github.com/pcwalton/rustfmt

[ Voor 14% gewijzigd door afraca op 11-08-2014 15:26 ]

IMDB vote history | Next-gen OS, audio en video player, search engine en Movie DB


Acties:
  • 0 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 10:32
MBV schreef op maandag 11 augustus 2014 @ 11:21:
with ^^. Ik zie het hier ook, regelmatig initialisatielijstjes die door iedereen leuk worden uitgelijnd. Heel leuk, tot er een langere naam tussen moet.
Daarom Vim. Die lijnt de rest dan ook automatisch uit.

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 14-09 21:14
Ongetwijfeld kan dat, mag ik de vimrc die dat doet? Standaard gebeurt dit niet:
C++:
1
2
3
Foo.     Init(this, _T("Foo"),      0);
FooBar.  Init(this, _T("FooBar"),   _T("blaat"));
Whatever.Init(this, _T("Whatever"), _T("Nobody Knows"));

En sommige fanaten zetten zelfs de sluithaakjes op dezelfde breedte zodat je een tabelletje krijgt... Ik ben er geen fan van, alleen kort commentaar achter members lijn ik uit.

Oh ja, voor en na elk haakje een spatie sla ik altijd over, waarschijnlijk tot groot verdriet van een collega.

[ Voor 21% gewijzigd door MBV op 11-08-2014 20:15 ]


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

God, wat kunnen mensen een kunstwerk (lees: slagveld) van hun code maken :X

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


Acties:
  • +1 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 10:32
MBV schreef op maandag 11 augustus 2014 @ 20:13:
Ongetwijfeld kan dat, mag ik de vimrc die dat doet? Standaard gebeurt dit niet.
Alstu.
code:
1
2
3
4
set tabstop     = 4   
set softtabstop = 4 
set shiftwidth  = 2  
set expandtab shiftround smarttab  autindent smartindent

Moet je wel op autodetect zetten. En voor als je uitgebreid wilt uitlijnen, voorbeeld van uitbreiding voor Vim:
Afbeeldingslocatie: https://camo.githubusercontent.com/4a6a21b48588a603e839796418fbaece55006bb3/68747470733a2f2f7261772e6769746875622e636f6d2f6a756e6567756e6e2f692f6d61737465722f76696d2d656173792d616c69676e2e676966

Ik gebruik liever Tabular, heb hem automatisch aanstaan. Ingesteld bij 3 of meer regels die =, | [ ], => of () {} gebruiken wordt het direct uitgelijnd, ook als je een document opent of de code erin plakt.

En nu ontopic graag. :)

[ Voor 21% gewijzigd door Hatsieflatsie op 11-08-2014 22:57 ]


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 14-09 21:14
offtopic:
jouw vimrc-settings doen alleen het begin van de regel toch? dat kende ik al, behalve shiftround. En die commando's uit de gif volgen vind ik erg lastig, omdat ik geen idee heb wat welk commando doet. Ik zal wel eens zoeken naar easyalign en Tabular.

Acties:
  • 0 Henk 'm!

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 09:52

Nick_S

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

Een mooi stukje code uit een Spring bean...

Java:
1
2
3
4
@Required
public String getUrl() {
    return url;
}

[ Voor 12% gewijzigd door Nick_S op 12-08-2014 09:37 ]

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


Acties:
  • 0 Henk 'm!

  • vpm
  • Registratie: December 2010
  • Laatst online: 14-09 19:28

vpm

Think, tinker, tank

Zal al menig maal voorbij zijn gekomen, maar ik de schoonmaak van oude code kom ik nog geregeld deze grandioze ternary expr tegen.

PHP:
1
2
3
4
5
6
7
8
$SomeVar = HasVar() ? true : false;

// of
if ($SomeVar === 'value') {
  return true;
} else {
  return false;
}

:')

Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

Nick_S schreef op dinsdag 12 augustus 2014 @ 09:36:
Een mooi stukje code uit een Spring bean...

Java:
1
2
3
4
@Required
public String getUrl() {
    return url;
}
Ik snap hem niet :(

Acties:
  • 0 Henk 'm!

  • kwaakvaak_v2
  • Registratie: Juni 2009
  • Laatst online: 02-06 12:29
ben geen java specialist, maar het lijkt mij dat 'url' of de waarde van url niet uit het luchtledige kan komen vallen.

Driving a cadillac in a fool's parade.


Acties:
  • 0 Henk 'm!

  • Cilph
  • Registratie: April 2010
  • Laatst online: 09-09 23:27
Ik vermoed dat die annotatie op de Setter thuishoort.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Een dergelijke vergissing lijkt me nou niet direct een "slecht programmeervoorbeeld".

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

Ah wacht, de @Required annotatie inderdaad. Tja zal wel gewoon een copy/paste van de setter zijn geweest.

Acties:
  • 0 Henk 'm!

  • PdeBie
  • Registratie: Juni 2004
  • Laatst online: 10:07
Slecht DB ontwerp, mag dat hier ook? |:(

Bezorgdatum opslaan als VARCHAR.
SQL:
1
2
3
4
CREATE TABLE [dbo].[Orders](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [DeliveryDate] [nvarchar](50) NULL
        ...... nog meer kolommen ......



Reden dat de maker dit gedaan heeft:
Sneller om in C# code datums te vergelijken als het een VARCHAR is, omdat je dan heel simpel naar een Integer kan parsen en "groter dan/kleiner dan/gelijk aan" vergelijkingen kan doen.

Afbeeldingslocatie: http://forums.crackberry.com/attachments/blackberry-10-os-f269/219814d1384268787t-friend-tells-me-google-play-coming-10-2-1-jackiechan01.jpg

Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 14-09 18:17
pdebie schreef op vrijdag 22 augustus 2014 @ 12:05:
Slecht DB ontwerp, mag dat hier ook? |:(

Bezorgdatum opslaan als VARCHAR.
SQL:
1
2
3
4
CREATE TABLE [dbo].[Orders](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [DeliveryDate] [nvarchar](50) NULL
        ...... nog meer kolommen ......



Reden dat de maker dit gedaan heeft:
Sneller om in C# code datums te vergelijken als het een VARCHAR is, omdat je dan heel simpel naar een Integer kan parsen en "groter dan/kleiner dan/gelijk aan" vergelijkingen kan doen.

[afbeelding]
Kan dat met een datetime niet ook gewoon? Die wordt onder water toch ook gewoon onthouden als een Long? (Of int, ligt aan de programmeertaal lijkt me).
Java lost 't iig op door gewoon met je Date-object (of Calendar of Jodatime of whatsoever) de twee Longs' met elkaar te vergelijken en daarop te baseren X < Y => Y is nieuwer.

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 14-09 21:14
En een varchar is weer langzamer met indexeren, opslag in de database, enzovoort. Oh ja, en je kan natuurlijk niet filteren op datum zonder gigantische performance hit op je database :')

Acties:
  • 0 Henk 'm!

  • PdeBie
  • Registratie: Juni 2004
  • Laatst online: 10:07
Merethil schreef op vrijdag 22 augustus 2014 @ 13:01:
[...]

Kan dat met een datetime niet ook gewoon?
Ja natuurlijk kan dat. :P
Dat is juist het idiote hiervan. |:(

C#:
1
2
3
4
DateTime d1 = new DateTime(2014, 5, 15);
DateTime d2 = new DateTime(2014, 5, 16);

var verzinIetsLeuks = (d1 > d2);


--edit--

het wordt nog leuker. In een andere tabel in de database staat er wel een datum als DateTime.
Als ik vraag waarom dit zo is: "Die hoef ik niet te vergelijken".

-O- }:|

[ Voor 43% gewijzigd door PdeBie op 22-08-2014 13:23 ]


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

pdebie schreef op vrijdag 22 augustus 2014 @ 12:05:
Slecht DB ontwerp, mag dat hier ook? |:(

Bezorgdatum opslaan als VARCHAR.
Neeneenee ... nvarchar! Je wilt natuurlijk geen gezeik met coderingen, dat heeft de maker mooi gezien :Y

(Arme jij ;()

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!

  • PdeBie
  • Registratie: Juni 2004
  • Laatst online: 10:07
kenneth schreef op vrijdag 22 augustus 2014 @ 13:39:
[...]
Neeneenee ... nvarchar! Je wilt natuurlijk geen gezeik met coderingen, dat heeft de maker mooi gezien :Y

(Arme jij ;()
Heb nu uit nood deze functie moeten maken in m'n View. Nu maar hopen dat hij ook daadwerkelijk alles als yyyyMMdd in de database heeft staan 8)7

code:
1
2
3
4
5
6
7
8
9
10
@functions{
    public string FormatDateTime(String datetime)
    {
        var year = int.Parse(datetime.Substring(0, 4));
        var month = int.Parse(datetime.Substring(4, 2));
        var day = int.Parse(datetime.Substring(6, 2));
        var date = new DateTime(year, month, day);
        return date.ToString("dd-MM-yyyy");
    }
}

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 12:53
Zet die kolom gewoon om en fix de code waar het omvalt. Kan mij niet voorstellen dat je baas daar niet de tijd voor overheeft. Bug preventie zeg maar :)

Acties:
  • 0 Henk 'm!

  • PdeBie
  • Registratie: Juni 2004
  • Laatst online: 10:07
Ja dat is het hem. Dat gaat dus niet zomaar, want het is niet 1 kolom het zijn er meerdere.
En dus kan ik een halve applicatie (die de orders inleest vanuit een EDI file) aan gaan lopen passen.

Dat kost me dermate veel tijd, die ik niet heb.

Ik heb het al aangekaart bij de chef en hij mag zeggen wie het gaat fixen (incl. die order inlees applicatie).

En voor het moment werkt deze oplossing voor mijn applicatie. Dus ik kan verder.

[ Voor 10% gewijzigd door PdeBie op 22-08-2014 13:56 ]


Acties:
  • 0 Henk 'm!

  • Russel88
  • Registratie: Juli 2009
  • Laatst online: 07:35
Kon me herinneren dat iemand een TweakBlog geschreven waarom je datum velden op moest slaan als int/strings. Hilarische commentaar/discussie was dat.

Zijn eind conclusie was iets van, het is niet fout, het kan dus ook anders. Is het net toevallig jouw collega die dat blogje geschreven heeft? Of misschien een klasgenoot oid

Acties:
  • 0 Henk 'm!

  • PdeBie
  • Registratie: Juni 2004
  • Laatst online: 10:07
Niet dat ik weet in ieder geval :P

Heb je een linkje naar dat blog? (die blog??? wtf is het eigenlijk? :P )

Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Hmmm, die blog, blijkbaar.

Ik ben ook wel benieuwd :P

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

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