[alg] Slechtste programmeervoorbeelden deel 5 Vorige deel Overzicht

Pagina: 1 ... 7 ... 20 Laatste
Acties:

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 16-09 15:42

Sebazzz

3dp

Waarna Redirect zelf alsnog een ThreadAbortException opgooit. #fail

En Exception.Message misbruiken terwijl je wel een custom Exception class hebt gemaakt. #fail

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


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 23:59
Hoe kan je zoiets nou verzinnen :? |:(

Acties:
  • 0 Henk 'm!

  • ObiTewodros
  • Registratie: April 2011
  • Laatst online: 05-04 22:22
Dit is ook iets wat ik heel vaak terug zie komen:

code:
1
2
3
4
5
6
7
8
//Code om waarde van een boolean te bepalen

if(boo == true){
  return true;
}
else if(boo == false){
  return false;
}


Kan er in welke situatie dan ook een reden zijn waardoor het beter is om te doen zoals hierboven in plaats van gewoon return boo?

Acties:
  • 0 Henk 'm!

  • begintmeta
  • Registratie: November 2001
  • Niet online

begintmeta

Moderator General Chat
Als je niet weet wat boo zou kunnen zijn, maar goed... dan schort er ergens iets

[ Voor 33% gewijzigd door begintmeta op 12-10-2014 13:53 ]


Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 19:53

RayNbow

Kirika <3

ObiTewodros schreef op zondag 12 oktober 2014 @ 13:34:
Dit is ook iets wat ik heel vaak terug zie komen:

code:
1
2
3
4
5
6
7
8
//Code om waarde van een boolean te bepalen

if(boo == true){
  return true;
}
else if(boo == false){
  return false;
}


Kan er in welke situatie dan ook een reden zijn waardoor het beter is om te doen zoals hierboven in plaats van gewoon return boo?
Dat hangt van de taal af, maar normaal gesproken gebruik je return boo.

Als je dat niet doet, dan kan het gedrag wat moeilijker te begrijpen zijn. Neem als voorbeeld de volgende definitie in Python:
Python:
1
2
3
4
5
def foo(x):
    if x == True:
        return True
    elif x == False:
        return False


Hier geeft foo(x) alleen True/False terug als x gelijk is aan True/False. In Python hangt dit af van de equality-methode die door x geimplementeerd is. Als x noch gelijk aan True noch aan False is, dan retourneert deze functie None terug (de default returnwaarde in Python).

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • YopY
  • Registratie: September 2003
  • Laatst online: 13-07 01:14
Misschien bij weakly-typed talen als Javascript, maar dan kun je bijv

JavaScript:
1
  return !!boo;


doen om een boolean te forceren.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:24

.oisyn

Moderator Devschuur®

Demotivational Speaker

Of
JavaScript:
1
return boo ? true : false;

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!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
YopY schreef op maandag 13 oktober 2014 @ 11:59:
Misschien bij weakly-typed talen als Javascript, maar dan kun je bijv

JavaScript:
1
  return !!boo;


doen om een boolean te forceren.
Heerlijk voor flags:
C++:
1
return !!(flags & WhateverFlags_Thing);

Acties:
  • 0 Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50

BikkelZ

CMD+Z

Sebazzz schreef op donderdag 09 oktober 2014 @ 17:30:
Waarna Redirect zelf alsnog een ThreadAbortException opgooit. #fail

En Exception.Message misbruiken terwijl je wel een custom Exception class hebt gemaakt. #fail
Dat is toch logisch? Stel dat iemand het voor elkaar krijgt om met bepaalde input een andere Exception te triggeren die als Message een URL heeft en daarmee mensen redirect naar een andere pagina?

HACK
????
PROFIT$

Security jongen. Die man heeft daar oog voor.

iOS developer


Acties:
  • 0 Henk 'm!

Verwijderd

Dit is denk wel het slechtste wat ik ge maakt heb ;-)

code:
1
2
3
4
5
$connect = mysqli_connect($host, $dbuser, $bdpass, $dbname);
if ($connect) {


} else mysqli_close($connect);

Acties:
  • 0 Henk 'm!

  • Kaw
  • Registratie: Maart 2001
  • Laatst online: 03-09 20:24

Kaw

Bij ons op het werk was er iemand die in interne code Json gebruikte als data object om van functie naar functie te gooien.
Nee, het was niet een slim idee om volstrekt variabele content aan te kunnen. De data was niet variabel en normaal gedefinieerde functies hadden ook volstaan.

Hij heeft moeten trakteren.

Acties:
  • 0 Henk 'm!

  • Herko_ter_Horst
  • Registratie: November 2002
  • Niet online
Kaw schreef op dinsdag 14 oktober 2014 @ 15:59:
Bij ons op het werk was er iemand die in interne code Json gebruikte als data object om van functie naar functie te gooien.
Nee, het was niet een slim idee om volstrekt variabele content aan te kunnen. De data was niet variabel en normaal gedefinieerde functies hadden ook volstaan.

Hij heeft moeten trakteren.
If all you have is a hammer, every problem starts to look like a nail :)

"Any sufficiently advanced technology is indistinguishable from magic."


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Kaw schreef op dinsdag 14 oktober 2014 @ 15:59:
Bij ons op het werk was er iemand die in interne code Json gebruikte als data object om van functie naar functie te gooien.
De sukkel. Dat kan veel moderner.

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!

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
RayNbow schreef op zondag 12 oktober 2014 @ 13:55:
[...]

Dat hangt van de taal af, maar normaal gesproken gebruik je return boo.

Als je dat niet doet, dan kan het gedrag wat moeilijker te begrijpen zijn. Neem als voorbeeld de volgende definitie in Python:
Python:
1
2
3
4
5
def foo(x):
    if x == True:
        return True
    elif x == False:
        return False


Hier geeft foo(x) alleen True/False terug als x gelijk is aan True/False. In Python hangt dit af van de equality-methode die door x geimplementeerd is. Als x noch gelijk aan True noch aan False is, dan retourneert deze functie None terug (de default returnwaarde in Python).
Dan zeg ik, initialiseren die handel :+

Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 19:53

RayNbow

Kirika <3

BoringDay schreef op dinsdag 14 oktober 2014 @ 17:57:
[...]


Dan zeg ik, initialiseren die handel :+
Hoe gaat dat hier helpen? ;) Het argument x zou hier ook een string kunnen zijn en dan retourneert foo een None.

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
RayNbow schreef op dinsdag 14 oktober 2014 @ 18:23:
[...]

Hoe gaat dat hier helpen? ;) Het argument x zou hier ook een string kunnen zijn en dan retourneert foo een None.
Een string die true of false kan zijn? Daar ben ik al absoluut geen voorstander van.
In mijn optiek is een boolean een boolean en geen string.

Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 19:53

RayNbow

Kirika <3

BoringDay schreef op dinsdag 14 oktober 2014 @ 21:23:
[...]


Een string die true of false kan zijn? Daar ben ik al absoluut geen voorstander van.
In mijn optiek is een boolean een boolean en geen string.
Python is niet statically typed en dus kun je foo met van alles aanroepen.

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
RayNbow schreef op dinsdag 14 oktober 2014 @ 21:31:
[...]

Python is niet statically typed en dus kun je foo met van alles aanroepen.
Dat had ik inmiddels wel begrepen. Persoonlijk vind ik dat altijd een linke manier van programmeren (slechts een voorkeur) , ik kies liever voor een strong typed language.

Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 19:53

RayNbow

Kirika <3

BoringDay schreef op dinsdag 14 oktober 2014 @ 21:50:
[...]


Dat had ik inmiddels wel begrepen. Persoonlijk vind ik dat altijd een linke manier van programmeren (slechts een voorkeur) ,
Uiteraard is het belangrijk om een functie zodanig te definieren dat het een begrijpbaar gedrag vertoont. Een functie dat gedrag A vertoond voor type X maar gedrag B voor type Y is vragen om problemen.
ik kies liever voor een strong typed language.
Python is strongly typed. ;)

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Strong/weak typing, static/dynamic typing, altijd weer dezelfde verwarring :P

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!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Pfffrt, types zijn overrated. Strings zijn alles wat je nodig hebt.

Nee, chars heb je niet nodig. Dat zijn ook gewoon strings.

We are shaping the future


Acties:
  • 0 Henk 'm!

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
kenneth schreef op dinsdag 14 oktober 2014 @ 22:25:
Strong/weak typing, static/dynamic typing, altijd weer dezelfde verwarring :P
Volgens mij klopt het wel:
"A programming language that requires a variable to be defined as well as the variable it is. For example, C is a strong typed language, when declaring the variable you must also specify the variable type"
Kortom wanneer je een variabele definieert dan definieer je die met het type.

Acties:
  • 0 Henk 'm!

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
Alex) schreef op dinsdag 14 oktober 2014 @ 22:27:
Pfffrt, types zijn overrated. Strings zijn alles wat je nodig hebt.

Nee, chars heb je niet nodig. Dat zijn ook gewoon strings.
Chars zijn helemaal geen strings, een string bestaat namelijk uit char's (array of char).

Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
BoringDay schreef op dinsdag 14 oktober 2014 @ 23:06:
[...]


Chars zijn helemaal geen strings, een string bestaat namelijk uit char's (array of char).
Nee, je hebt het fout. Een string is opgebouwd uit strings. Je hebt tenslotte niets anders nodig dan strings.

We are shaping the future


Acties:
  • 0 Henk 'm!

  • Cor453
  • Registratie: Mei 2011
  • Laatst online: 17-09 12:25
Alex) schreef op dinsdag 14 oktober 2014 @ 23:09:
[...]

Nee, je hebt het fout. Een string is opgebouwd uit strings. Je hebt tenslotte niets anders nodig dan strings.
Kwestie van: het hele leven is te fixen met duct tape. Ik snap je punt. Volledig :+

Acties:
  • 0 Henk 'm!

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
Alex) schreef op dinsdag 14 oktober 2014 @ 23:09:
[...]

Nee, je hebt het fout. Een string is opgebouwd uit strings. Je hebt tenslotte niets anders nodig dan strings.
Sinds wanneer :?
Bij mijn weten is een string een reeks van karakters.

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 23:59
Ik ben inspiratieloos blijkbaar, want hier moet gewoon een plaatje voor te vinden zijn ^^

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
BoringDay schreef op dinsdag 14 oktober 2014 @ 23:20:
[...]


Sinds wanneer :?
Bij mijn weten is een string een reeks van karakters.
Alex) maakt een grapje...

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

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
Gelukkig maar! ik zou bijna mijn schoolboeken doorsnuffelen op fouten :+

Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 19:53

RayNbow

Kirika <3

BoringDay schreef op dinsdag 14 oktober 2014 @ 23:05:
[...]


Volgens mij klopt het wel:
"A programming language that requires a variable to be defined as well as the variable it is. For example, C is a strong typed language, when declaring the variable you must also specify the variable type"
Kortom wanneer je een variabele definieert dan definieer je die met het type.
Dus volgens die definitie is Haskell niet strongly typed? Daar hoef je namelijk niet het type op te geven, dat kan de compiler namelijk.

De definities zijn (kort door de bocht) als volgt:
Static: type-checking @ compile time;
Dynamic: type-checking @ run time;
Weak: bij een "verkeerd" type wordt er een type conversion poging gedaan;
Strong: bij een "verkeerd" type krijg je een type error.
Alex) schreef op dinsdag 14 oktober 2014 @ 23:09:
[...]

Nee, je hebt het fout. Een string is opgebouwd uit strings. Je hebt tenslotte niets anders nodig dan strings.
BoringDay schreef op dinsdag 14 oktober 2014 @ 23:20:
[...]


Sinds wanneer :?
Bij mijn weten is een string een reeks van karakters.
In Python heb je geen character type. Als je bijv. "foo"[0] doet in Python, krijg je een string ter lengte 1 terug.

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

Verwijderd

2000 regels spaghetti code in 1 functie (main). En GOTO is ook weer terug van weggeweest *O* Raap me op AUB _O-
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
  if ( age < 40 ) 
            {
            if  (r8[q] <= dens40[0]) {    
                MamDens = 1;
            }
            else if (r8[q] <= (dens40[0] + dens40[1])) { 
                MamDens = 2;
            }
            else if (r8[q] <= (dens40[0] + dens40[1]+ dens40[2])) {
                MamDens = 3;
            }
            else {     
                MamDens = 4;
            }
            }
        else{
            if ( age < 50 )
                {
                if (r8[q] <= dens50[0]) {
                    MamDens = 1;
                }
                else if (r8[q] <= (dens50[0] + dens50[1])) {
                    MamDens = 2;
                }
                else if (r8[q] <= (dens50[0] + dens50[1] + dens50[2])) {
                    MamDens = 3;
                }
                else {
                    MamDens = 4;
                }
                }
            else{
                if ( age < 60 )
                    {
                    if (r8[q] <= dens60[0]) {
                        MamDens = 1;
                    }
                    else if (r8[q] <= ( dens60[0] + dens60[1] + dens60[2])) {
                        MamDens = 2;
                    }
                    else if (r8[q] <= ( dens60[0] + dens60[1] + dens60[2])) {
                        MamDens = 3;
                    }
                    else {
                        MamDens = 4;
                    }
                    }
                else{
                    if ( age < 70 )
                        {
                        if (r8[q] <= dens70[0]) {
                            MamDens = 1;
                        }
                        else if (r8[q] <= (dens70[0] + dens70[1])) {
                            MamDens = 2;
                        }
                        else if (r8[q] <= (dens70[0] + dens70[1] + dens70[2])) {
                            MamDens = 3;
                        }
                        else {
                            MamDens = 4;
                        }
                        }
                    else{
                            if (r8[q] <= dens100[0]) {
                                MamDens = 1;
                            }
                            else if (r8[q] <= (dens100[0] + dens100[1])) {
                                MamDens = 2;
                            }
                            else if (r8[q] <= (dens100[0] + dens100[1] + dens100[2])) {
                                MamDens = 3;
                            }
                            else {
                                MamDens = 4;
                            }
                        }
                    }
                }
            }

Acties:
  • 0 Henk 'm!

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

Nouja, het lijkt misschien spaghetti, maar misschien is de code gewoon op een gestructureerde manier met een scriptje gegenereerd.




:+

Heeft geen speciale krachten en is daar erg boos over.


Acties:
  • 0 Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50

BikkelZ

CMD+Z

Ik ben al niet dol op categories aangezien ze gewoon irritant onvoorspelbaar en onhandig zijn. Maar wat deed deze meneer nou:

Objective-C:
1
2
            UIButton* someButton=self.someButtons[i];
            NSURL* url=[UIButton urlForAdgen:someButton.tag]; // whut?


Via de tag van een button data meegeven :X
Een category op een UIButton gebruiken om een NSURL te genereren :X

Maar het pareltje van een category was dus zo opgezet:

Objective-C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//
//  UIImageView_ABCAdgen.h
//  ABCKompjoeters'n'Stuff
//
//  Created by Matthew Baranowski on 6/21/13.
//  Copyright (c) 2013 ABC. All rights reserved.
//
#import "UIImageView+ABCAdgen.h"
#import <AFNetworking/AFHTTPRequestOperation.h>
#import <AFNetworking/UIImageView+AFNetworking.h>

@implementation UIImageView (ABCAdgen)

- (void)setAdgenBackgroundWithPlaceholderImage:(UIImage *)placeholderImage completion:(void(^)(BOOL success))completion;
{
    // boring stuff related to Image View
}

@end

// Ohhh let's put a category for a UIButton here, they'll never see that coming!
@implementation UIButton (ABCAdgen)

+ (NSURL *)urlForAdgen:(ABCAdgenFooterSlot)adgenId
{
    NSString *path = nil;
    
    // lots of hardcoded crap here
}

- (void)setImageWithAdgenId:(int)adId
{
    // more exciting features
}

@end


Man man man man man man man man man man om een category in een andere category te verstoppen omdat je te lam bent om ff een nieuwe file aan te maken, wat een lamzak :F

iOS developer


Acties:
  • 0 Henk 'm!

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
@BikkelZ

Wat is er dan mis aan het toepassen van Catogories?
Catagories kunnen aardig nuttig zijn maar uit deze stukje code kan je dat niet geheel opmaken.
Dus je zal toch moeten weten wat de intentie/reden v.d. ontwikkelaar was.

Apple heeft wel netjes omschreven wanneer je ze dient toe te passen:
https://developer.apple.c...izingExistingClasses.html

[ Voor 8% gewijzigd door BoringDay op 15-11-2014 15:42 ]


Acties:
  • 0 Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50

BikkelZ

CMD+Z

BoringDay schreef op zaterdag 15 november 2014 @ 15:41:
@BikkelZ

Wat is er dan mis aan het toepassen van Catogories?
Catagories kunnen aardig nuttig zijn maar uit deze stukje code kan je dat niet geheel opmaken.
Dus je zal toch moeten weten wat de intentie/reden v.d. ontwikkelaar was.

Apple heeft wel netjes omschreven wanneer je ze dient toe te passen:
https://developer.apple.c...izingExistingClasses.html
Er zijn gevallen waarbij een category op zich wel zou kunnen, zoals UIColor met een hex convertor uitbreiden. Maar je zou ook gewoon een HexColor : UIColor kunnen gebruiken of een HexColorConverter : NSObject kunnen maken en dan zou je code nog beter zijn want dan weet degene na je meteen dat het niet de standaard UIColor is die dat soort dingen doet.

Dat er in het voorbeeld wat ik gaf gewoon grof misbruik gemaakt wordt lijkt me wel duidelijk hoop ik? Wat heeft een NSURL met een UIButton te maken? En waarom moet dat ergens bij een andere category include er nog even bij gerommeld worden?

iOS developer


Acties:
  • 0 Henk 'm!

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
BikkelZ schreef op maandag 17 november 2014 @ 16:06:
[...]


Er zijn gevallen waarbij een category op zich wel zou kunnen, zoals UIColor met een hex convertor uitbreiden. Maar je zou ook gewoon een HexColor : UIColor kunnen gebruiken of een HexColorConverter : NSObject kunnen maken en dan zou je code nog beter zijn want dan weet degene na je meteen dat het niet de standaard UIColor is die dat soort dingen doet.

Dat er in het voorbeeld wat ik gaf gewoon grof misbruik gemaakt wordt lijkt me wel duidelijk hoop ik? Wat heeft een NSURL met een UIButton te maken? En waarom moet dat ergens bij een andere category include er nog even bij gerommeld worden?
Als ik de code bekijk lijkt het in eerste instantie dat het wel correct wordt toegepast.
Immers wordt hier bij 2 baseclasses (waarvan de implementatie niet beschikbaar is) uitgebreid met dezelfde catagory. (zie uitleg van Apple).

Ik kan me indenken men een button maakt en wanneer je erop klikt de url wordt opgehaald?
Verder vind ik het te weinig code om geheel te beoordelen.

Acties:
  • 0 Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50

BikkelZ

CMD+Z

Het was zoiets als:

Objective-C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
+ (NSURL *)urlForAdgen:(ABCAdgenFooterSlot)adgenId
{
    NSString *path = nil;
    
    switch (adgenId) 
    {
         case Rolex:
              path = @"http://www.rolex.com";
              break; 
         case Nike:
              path = @"http://www.nike.com";
              break; 
         case Mercedes:
              path = @"http://www.mercedes.de";
              break; 

         return [NSURL URLfromString:path];
    }
}


Waarom nou zoiets lelijks doen met een category? Je kunt de NSURL als een @parameter instellen als je de standaard UIButton extendt in plaats van een category gebruikt. Dan hoef je gelijk ook niet die breekbare .tag constructie te gebruiken.

iOS developer


Acties:
  • 0 Henk 'm!

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
BikkelZ schreef op dinsdag 18 november 2014 @ 02:59:
Het was zoiets als:

Objective-C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
+ (NSURL *)urlForAdgen:(ABCAdgenFooterSlot)adgenId
{
    NSString *path = nil;
    
    switch (adgenId) 
    {
         case Rolex:
              path = @"http://www.rolex.com";
              break; 
         case Nike:
              path = @"http://www.nike.com";
              break; 
         case Mercedes:
              path = @"http://www.mercedes.de";
              break; 

         return [NSURL URLfromString:path];
    }
}


Waarom nou zoiets lelijks doen met een category? Je kunt de NSURL als een @parameter instellen als je de standaard UIButton extendt in plaats van een category gebruikt. Dan hoef je gelijk ook niet die breekbare .tag constructie te gebruiken.
Als je goed kijkt zie je dat 2 baseclasses (waarvan de implementatie niet bekend is) worden uitgebreid met een gemeenschappelijke catagory. Op deze manier voorkom je dat je 2x of vaker een subclass moet maken.
In de link die ik eerder aangaf staat het uitgelegd wat de regels zijn voor het toepassen van catagory zijn.

Acties:
  • 0 Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50

BikkelZ

CMD+Z

BoringDay schreef op dinsdag 18 november 2014 @ 08:08:
[...]


Als je goed kijkt zie je dat 2 baseclasses (waarvan de implementatie niet bekend is) worden uitgebreid met een gemeenschappelijke catagory. Op deze manier voorkom je dat je 2x of vaker een subclass moet maken.
In de link die ik eerder aangaf staat het uitgelegd wat de regels zijn voor het toepassen van catagory zijn.
Je brengt het alsof het een goed ding is, voorkomen dat je een subclass moet aanmaken. Daar ben je mij al kwijt. Een subclass of een category zijn allebei lappen code die je moet onderhouden waarbij de category het gehandicapte broertje van de subclass is waar je geen properties aan kunt toevoegen en nog wat maffe limitaties ten koste van leesbaarheid en voorspelbaarheid. Een category gebruik je waar subclassing niet mogelijk is, bijvoorbeeld iets toevoegen aan UIViewController óók als hij in UITableViewController zit. Maar dan nog liever niet.

Verder heb ik geen idee waarom een gemeenschappelijke category een goed ding is. Je frot twee aanpassingen van twee verschillende classes in één file en je noemt de file alleen naar de eerste. Hoezo is dat nou een voordeel? Één class, één file. Ik zie alle pods die categories toepassen het zelfde doen. Enige uitzondering is DTColor+Compatibility waarbij zowel NSColor als UIColor een category krijgen en met compiler directives bepaald wordt welke het wordt.

Een category toevoegen aan een Button die iets doet wat niet bij die klasse thuis hoort (single responsibility principe) via een file die qua filename aanduidt bij een ImageView te horen is gewoon wazige code. En dan ook nog de .tag property misbruiken terwijl je met subclassen gewoon een NSURL property kunt toevoegen wat een stuk minder breekbaar is.

iOS developer


Acties:
  • 0 Henk 'm!

  • ravenger
  • Registratie: Juli 2001
  • Laatst online: 22:15

Acties:
  • 0 Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50

BikkelZ

CMD+Z

iOS developer


Acties:
  • 0 Henk 'm!

  • Soulfix
  • Registratie: Februari 2013
  • Niet online
Heet die man nu serieus Mattt (met drie t's)? Met zo'n hipsternaam snap ik ook wel waarom je van het pad afraakt.

Acties:
  • 0 Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 16-09 09:06

Firesphere

Yoshis before Hoshis

Zo te zien.... wel :?
https://twitter.com/mattt

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!

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
@BikkelZ

Lees de uitleg van Apple misschien het dan iets duidelijker wordt.

Acties:
  • 0 Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 21-02 08:50

BikkelZ

CMD+Z

BoringDay schreef op dinsdag 18 november 2014 @ 18:53:
@BikkelZ

Lees de uitleg van Apple misschien het dan iets duidelijker wordt.
Haal voor mij even wat jij bedoelt er uit want ik heb er al drie keer door heen gelezen en niks gevonden. Ik denk ook gewoon niet dat Apple bedoelt wat jij bedoelt.

iOS developer


Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 22:35

Cyphax

Moderator LNX
Ik zit te debuggen in een project hier... en ik kom dingen tegen waarvan ik denk "huh" of "moet dat nou". Een string samenstellen?
Visual Basic:
1
2
3
4
5
6
7
                    sb.Append(string.Format("In dit scherm kunt u als Beheerder de Beheerders functie voor  accounts inregelen"));
                    sb.AppendLine(string.Format("{0}", "<br/>"));
                    sb.AppendLine(string.Format("{0}", "<br/>"));
                    sb.AppendLine(string.Format("{0}","Uit de getoonde lijst van accounts geeft u aan welke Beheerder of Medewerker moet zijn."));
                    sb.AppendLine(string.Format("{0}", "<br/>"));
                    sb.AppendLine(string.Format("{0}", "Vervolgens klikt u op bewaren."));
                    sb.AppendLine(string.Format("{0}", "<br/>"));

Geen idee waarom iemand dit zo op zou lossen. Behalve als ze betaald werden per regel code, maar dan kan ik me nog wel wat verbeteringen indenken! En qua schaal: dit is één van de cases in een 190 regels tellend switch-statement dat ook wel in een regel of 60 zou kunnen. :'(

Zelfde project de volgende -- dit is ook lekker handig en gevaarlijk en ik heb het tijdens het debuggen uiteraard stuk zien lopen...
Visual Basic:
1
RecordID = int.Parse(string.Format("{0}{1}", index, geb.GebruikerId))

... omdat index een iterator is die duizenden keren kan itereren en ja, hier snap ik nog veel minder van. Er staat wel een commentaar onder: "Een beetje krom [...]". Agree. Ik weet ook niet waar dat RecordID verder voor is, de foreach waar dit in staat is genest in een andere foreach dus in die zin kan ik me er iets bij voorstellen, maar zet dat dan niet in een 32bits integer! Oh en ook hier weer die volkomen overbodige string.Format. Het zal voor de performance vast geen ramp zijn maar verder...

[ Voor 3% gewijzigd door Cyphax op 21-11-2014 16:07 ]

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

  • Xantios
  • Registratie: Maart 2006
  • Laatst online: 17-09 15:29
en natuurlijk woorden als "inregelen" _/-\o_
oh, en zie ik nou Nederlandse variable namen?

Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 22:35

Cyphax

Moderator LNX
Xantios schreef op maandag 24 november 2014 @ 11:04:
en natuurlijk woorden als "inregelen" _/-\o_
oh, en zie ik nou Nederlandse variable namen?
Ja. Op zich vind ik dat niet erg; als het gaat om domeingegevens wil je die misschien niet altijd vertalen, als je maar consistent bent. Maar ook op dat punt... ach hier heb je vier functienamen uit dat project, dat spreekt ook wel voor zichzelf:

GetHyperlinkText()
ZoekResultaatHeaderText()
AssembleZoekResultaatBase()
OpvragenGebruiker()

Gewoon allemaal door elkaar, ook binnen dezelfde file/class. Mja.

Overigens is "inregelen" niet zo gek omdat ze hier werken met zogeheten inregelingen. Heeft volgens mij met wetgevingen te maken.

[ Voor 9% gewijzigd door Cyphax op 24-11-2014 11:25 ]

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 19-09 08:51

Janoz

Moderator Devschuur®

!litemod

Cyphax schreef op maandag 24 november 2014 @ 11:24:
Ja. Op zich vind ik dat niet erg; als het gaat om domeingegevens wil je die misschien niet altijd vertalen, als je maar consistent bent.
FTFY

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!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 22:35

Cyphax

Moderator LNX
Iets als "gebruiker" mag je van mij best vertalen naar "user", maar ik kan het ook wel begrijpen als je dat niet doet. Ook hier weer; consistentie is belangrijk. :)

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 19-09 08:51

Janoz

Moderator Devschuur®

!litemod

Precies. Als de rest van je domein in het NL is, waarom dan gebruiker wel vertalen?

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!

  • hellum
  • Registratie: Oktober 2007
  • Laatst online: 12-09 17:03
Cyphax schreef op vrijdag 21 november 2014 @ 16:06:
Ik zit te debuggen in een project hier... en ik kom dingen tegen waarvan ik denk "huh" of "moet dat nou". Een string samenstellen?
Visual Basic:
1
2
3
4
5
6
7
                    sb.Append(string.Format("In dit scherm kunt u als Beheerder de Beheerders functie voor  accounts inregelen"));
                    sb.AppendLine(string.Format("{0}", "<br/>"));
                    sb.AppendLine(string.Format("{0}", "<br/>"));
                    sb.AppendLine(string.Format("{0}","Uit de getoonde lijst van accounts geeft u aan welke Beheerder of Medewerker moet zijn."));
                    sb.AppendLine(string.Format("{0}", "<br/>"));
                    sb.AppendLine(string.Format("{0}", "Vervolgens klikt u op bewaren."));
                    sb.AppendLine(string.Format("{0}", "<br/>"));

Geen idee waarom iemand dit zo op zou lossen. Behalve als ze betaald werden per regel code, maar dan kan ik me nog wel wat verbeteringen indenken! En qua schaal: dit is één van de cases in een 190 regels tellend switch-statement dat ook wel in een regel of 60 zou kunnen. :'(
Waarschijnlijk was het idee om nieuwe regels echt duidelijk te krijgen in de code, of de HTML moest er netter uitzien.

Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 22:35

Cyphax

Moderator LNX
hellum schreef op maandag 24 november 2014 @ 11:40:
[...]


Waarschijnlijk was het idee om nieuwe regels echt duidelijk te krijgen in de code.
Ik heb zelf iets stoms gedaan; de code die ik postte is geen vb.net maar c#. Die lopen hier een beetje door elkaar. Da's wel lekker verwarrend soms, als je die moet mixen. :+

Anyway, nieuwe regels is dan al wat makkelijker dan in vb.net en dat wisten ze zelf ook. Hier nog eentje om het af te leren. Ik ben er ook niet zo'n groot voorstander van om dit soort teksten in de code te zetten maar het is in dit geval een interne tool (maar denk maar niet dat de code in productie mooier is...)
C#:
1
2
3
4
5
6
7
8
                    sb.Append(string.Format("U heeft zich eerder aangemeld als beheerder."));
                    sb.AppendLine(
                        string.Format(
                            " Om uw aanmelding als beheerder in behandeling te kunnen nemen dient u een registratiecode aan te vragen."));
                    sb.AppendLine(string.Format("{0}",
                                                " Heeft u deze al ontvangen, dan kiest u \"ja\" en vult u de registratiecode in. Indien u de code nog niet in u bezit heeft, kiest u \"nee\", download u het aanvraagformulier, vult het in en stuurt u het op."));
                    sb.AppendLine(string.Format("{0}", "<br/>"));
                    break;
Waarschijnlijk was het idee om nieuwe regels echt duidelijk te krijgen in de code, of de HTML moest er netter uitzien.
Ah de HTML, daar lijkt het wel een beetje op inderdaad maar het blijft geen reden om String.Format in te zetten en er dan eigenlijk niets mee te doen. 'k Weet niet of de performance er redelijkerwijs onder lijdt, misschien kan de compiler het een beetje optimaliseren.

[ Voor 19% gewijzigd door Cyphax op 24-11-2014 11:52 ]

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:24

.oisyn

Moderator Devschuur®

Demotivational Speaker

Janoz schreef op maandag 24 november 2014 @ 11:29:
Precies. Als de rest van je domein in het NL is, waarom dan gebruiker wel vertalen?
Omdat de domeinspecificatie ook over "user" praat?

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!

  • space_octopus
  • Registratie: Juni 2014
  • Laatst online: 24-08 15:43
Toen ik nog een beginner was had ik dit soort classes:
C#:
1
2
3
4
5
6
7
8
9
public class Team
    {
        public string nameOfTeam = "";

        public Team()
        {

        }
    }


C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Money
    {
        private int money = 100;

        public Money()
        {

        }

        public int getMoney()
        {
            return money;
        }

        public void addMoney(int amountOfMoney)
        {
            money += amountOfMoney;
        }
    }

Wat was ik aan het denken? 8)7
Nouja, beter nutteloze classes dan onbegrijpbare spaghetti code, toch?
Op na wat kleine andere dingetjes is de rest vrij goed(wat mij verbaast).

Een paar van die kleine dingetjes(money is Money):
C#:
1
money.addMoney(-100);

twee spaties is wel een geldige naam! :)
C#:
1
2
3
4
5
6
7
8
9
10
11
void checkName()
{
        if (motName == "" || motName == " ")
        {
            Console.Clear();
            Console.WriteLine("that's no name! give it a new name please!");
            motName = Console.ReadLine();
            checkName();
        }
        else...
}

Dit zorgt voor een stackoverflow als je enter ingedrukt houd. Niet te vergeten dat de "loop" niet while true is, maar precies het zelfde doet. *ironie* Lekker efficient! :P

Het was ook niet iets supers. Een grappig console spelletje, waarbij je tegen willekeurig gegenereerde teams(gewoon namen) kon racen met je eigen motor(die je een naam kon geven) die een willekeurig vermogen en bouwjaar heeft. Je won op basis van willekeurigheid, en je kreeg daarvoor geld, ook op basis van willekeurigheid, waarvoor je je motor extra vermogen kunt geven, wat niks doet. :P

[ Voor 5% gewijzigd door space_octopus op 24-11-2014 12:34 ]


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
space_octopus schreef op maandag 24 november 2014 @ 12:32:
Toen ik nog een beginner was had ik dit soort classes:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Money
    {
        private int money = 100;

        public Money()
        {

        }

        public int getMoney()
        {
            return money;
        }

        public void addMoney(int amountOfMoney)
        {
            money += amountOfMoney;
        }
    }
Dat is een pattern ;) Value Object. Heeft best wel valide use cases af en toe. Er zijn zelfs mensen die zweren erbij dat je nooit primitives moet gebruiken als ze eigenlijk meer betekenis hebben dan slechts het type. (Money is daar dus een voorbeeld van.) Zo krijg je een heel clean domein model, is het idee.

Ben even kwijt welke presentatie ik dat uit zag, leek wel interessant. Helaas heb ik voorlopig nog genoeg andere puin te ruimen voordat ik me druk kan gaan maken over dit soort minor issues.

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


Acties:
  • 0 Henk 'm!

  • Richh
  • Registratie: Augustus 2009
  • Laatst online: 19-09 10:34
De ICT-docent van mijn huidige minor (jaar 3 HBO dus) kwam met de volgende code aanzetten


Flash ActionScript:
1
2
3
4
5
6
7
8
Class User
{
    var firstName;
    var lastname
    var gebruikersnaam;
    var password;
    var nawNummer;
}


Als je dingen uitlegt, gebruik asjeblieft óf volledig Nederlands of beter nog enkel Engels.
En nou gaat het voorbeeld om OO-programmeren, daar kan je ActionScript prima voor gebruiken... maar toch, wie gebruikt er nu nog Flash?
Nou zit ik hier als enige IT-er tussen een groepje designers, maar leer ze het dan goed |:(

[ Voor 9% gewijzigd door Richh op 24-11-2014 13:34 ]

☀️ 4500wp zuid | 🔋MT Venus 5kW | 🚗 Tesla Model 3 SR+ 2020 | ❄️ Daikin 3MXM 4kW


Acties:
  • 0 Henk 'm!

  • Ultimation
  • Registratie: Februari 2010
  • Laatst online: 13:56

Ultimation

Het is als Appels en peren

Het is allang bekend dat een -groot- gedeelte van de docenten in de IT op HBO niveau gewoon maar wat doen. Op MBO is het nog erger.

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


Acties:
  • 0 Henk 'm!

  • Rohem
  • Registratie: Augustus 2007
  • Laatst online: 18-09 14:13
Kom net ook een mooi stukje tegen, geschreven in november vorig jaar volgens TFS. int.TryParse bestond zeker nog niet.. :?

C#:
1
2
3
4
5
6
7
8
try
{
    persoon.BSN = int.Parse(BSN);
}
catch (Exception ex)
{
    persoon.BSN = 0;
}

Acties:
  • 0 Henk 'm!

  • Wolfos
  • Registratie: Oktober 2010
  • Laatst online: 14:40
Deze laatst tegengekomen:

C#:
1
2
transform.position = Vector3.Lerp(transform.position, spawn.transform.position, 0.1f);
if (transform.position == spawn.transform.position) intro = false;


Beweeg (ieder frame) 10% in de richting van spawn.transform.position, en daarna moet ie exact dat getal worden. En wij vroegen ons af waarom het lang duurde voordat de intro voorbij was ;)

EDIT:
en deze nog van mezelf:
Haxe:
1
2
3
#if false
{ //Fixes the Flashdevelop indentation bug, I'm super sorry but not really
#end


Omdat de IDE dat bestand niet helemaal goed wilde parsen en steeds de indentatie verneukte.

[ Voor 23% gewijzigd door Wolfos op 24-11-2014 14:58 ]


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 16-09 15:42

Sebazzz

3dp

Rohem schreef op maandag 24 november 2014 @ 14:47:
Kom net ook een mooi stukje tegen, geschreven in november vorig jaar volgens TFS. int.TryParse bestond zeker nog niet.. :?

C#:
1
2
3
4
5
6
7
8
try
{
    persoon.BSN = int.Parse(BSN);
}
catch (Exception ex)
{
    persoon.BSN = 0;
}
Hier kunnen best geldige redenen voor zijn. Insert discussie over exceptions ;)

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


Acties:
  • 0 Henk 'm!

  • iThinkSo
  • Registratie: April 2011
  • Laatst online: 02-04 12:35

iThinkSo

Ik heb deze tekst en jij niet!

J, een prachtige programmeertaal, maar de source van de interpreter... Een stuk minder. Ben je bezig met het een en ander wat met die source te maken heeft, open je een willekeurig bestand, en dan is dit wat je ziet (het volgende komt echt uit de source, en is gewoon willekeurig geselecteerd. De rest ziet er ook zo uit.):

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
static F1(jtprime1){A d,t,y,z;B*b,*u;I c,*dv,e,i,j,k,m,n,p,q,*wv,x,*zv;
 RZ(w);
 k=0; n=AN(w); wv=AV(w); RE(m=sup(n,wv)); jt->rank=0; JBREAK0;
 GA(z,INT,n,AR(w),AS(w)); zv= AV(z);
 RZ(d=grade1(ravel(w)));  dv= AV(d);
 if(p4792){I*u=AV(p4792); c=AN(p4792); while(n>k&&c>(x=wv[dv[k]]))zv[dv[k++]]=u[x];}
 else{
  while(n>k&&0==wv[dv[k]])zv[dv[k++]]=2;
  while(n>k&&1==wv[dv[k]])zv[dv[k++]]=3;
  while(n>k&&2==wv[dv[k]])zv[dv[k++]]=5;
 }
 if(n==k)R z; 
 j=3; p=0; e=PT; q=1+(I)sqrt((D)m); x=wv[dv[k]]; 
 GA(t,B01,q,1,0);         u=BAV(t); sieve(0L,q,u,u); 
 GA(y,B01,MIN(m,MM),1,0); b=BAV(y); 
 for(;0<=p&&p<m;p+=q){
  if(x>=e){c=x/PT; e=PT*(1+c); c=MIN(c,ptn); if(j<c*PT){j=c*PT; p=ptt[c-1];}}
  JBREAK0; q=MIN(MM,m-p); sieve(p,q,b,u); c=j+q/3;
  if(x>c)for(i=1-p%2;i<q;i+=2)j+=b[i];
  else   for(i=1-p%2;i<q;i+=2)
   if(b[i]){while(j==x){zv[dv[k++]]=i+p; if(n==k)R z; x=wv[dv[k]];} ++j;}
 }
 while(n>k)zv[dv[k++]]=p; R z;
}

Begrijpelijke namen hebben ze blijkbaar nog nooit van gehoord...

Acties:
  • 0 Henk 'm!

  • halofreak1990
  • Registratie: Juli 2013
  • Laatst online: 17-05-2024
iThinkSo schreef op maandag 24 november 2014 @ 16:43:
J, een prachtige programmeertaal, maar de source van de interpreter... Een stuk minder. Ben je bezig met het een en ander wat met die source te maken heeft, open je een willekeurig bestand, en dan is dit wat je ziet (het volgende komt echt uit de source, en is gewoon willekeurig geselecteerd. De rest ziet er ook zo uit.):

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
static F1(jtprime1){A d,t,y,z;B*b,*u;I c,*dv,e,i,j,k,m,n,p,q,*wv,x,*zv;
 RZ(w);
 k=0; n=AN(w); wv=AV(w); RE(m=sup(n,wv)); jt->rank=0; JBREAK0;
 GA(z,INT,n,AR(w),AS(w)); zv= AV(z);
 RZ(d=grade1(ravel(w)));  dv= AV(d);
 if(p4792){I*u=AV(p4792); c=AN(p4792); while(n>k&&c>(x=wv[dv[k]]))zv[dv[k++]]=u[x];}
 else{
  while(n>k&&0==wv[dv[k]])zv[dv[k++]]=2;
  while(n>k&&1==wv[dv[k]])zv[dv[k++]]=3;
  while(n>k&&2==wv[dv[k]])zv[dv[k++]]=5;
 }
 if(n==k)R z; 
 j=3; p=0; e=PT; q=1+(I)sqrt((D)m); x=wv[dv[k]]; 
 GA(t,B01,q,1,0);         u=BAV(t); sieve(0L,q,u,u); 
 GA(y,B01,MIN(m,MM),1,0); b=BAV(y); 
 for(;0<=p&&p<m;p+=q){
  if(x>=e){c=x/PT; e=PT*(1+c); c=MIN(c,ptn); if(j<c*PT){j=c*PT; p=ptt[c-1];}}
  JBREAK0; q=MIN(MM,m-p); sieve(p,q,b,u); c=j+q/3;
  if(x>c)for(i=1-p%2;i<q;i+=2)j+=b[i];
  else   for(i=1-p%2;i<q;i+=2)
   if(b[i]){while(j==x){zv[dv[k++]]=i+p; if(n==k)R z; x=wv[dv[k]];} ++j;}
 }
 while(n>k)zv[dv[k++]]=p; R z;
}

Begrijpelijke namen hebben ze blijkbaar nog nooit van gehoord...
En dan ook nog een chronisch gebrek aan spaties om het nóg slechter leesbaar te maken ;(

Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Ziet eruit alsof een obfuscator aan het werk is geweest, maar dan verwacht ik geen sieve of MIN te zien ...

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!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 00:02
Misschien auto-gegenereerde code? Hoewel de naamgeving van de variabelen dan ook niet heel logisch is (dan zou je a,b,c,.. of x0,x1,x2 ofzo verwachten), en er hier en daar tactisch whitespace is toegevoegd.

sieve en MIN zijn waarschijnlijk externe functies (de tweede waarschijnlijk een function-like macro) dus die zou een obfuscator ook ongemoeid laten. Aan de andere kant zijn er blijkbaar wel macro's als AV, AN, en GA gedefinieerd.

Ik denk toch dat het een mentaal gestoorde programmeur is die die code geschreven heeft.

Acties:
  • 0 Henk 'm!

  • iThinkSo
  • Registratie: April 2011
  • Laatst online: 02-04 12:35

iThinkSo

Ik heb deze tekst en jij niet!

Soultaker schreef op maandag 24 november 2014 @ 17:21:
Misschien auto-gegenereerde code? Hoewel de naamgeving van de variabelen dan ook niet heel logisch is (dan zou je a,b,c,.. of x0,x1,x2 ofzo verwachten), en er hier en daar tactisch whitespace is toegevoegd.

sieve en MIN zijn waarschijnlijk externe functies (de tweede waarschijnlijk een function-like macro) dus die zou een obfuscator ook ongemoeid laten. Aan de andere kant zijn er blijkbaar wel macro's als AV, AN, en GA gedefinieerd.

Ik denk toch dat het een mentaal gestoorde programmeur is die die code geschreven heeft.
Ook zijn sommige afkortingen nog redelijk logisch gekozen, zo is R bijvoorbeeld return, bij een obfuscator zou je dat ook niet verwachten (ook staan er hier en daar nog comments)

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 19-09 08:51

Janoz

Moderator Devschuur®

!litemod

.oisyn schreef op maandag 24 november 2014 @ 12:13:
[...]


Omdat de domeinspecificatie ook over "user" praat?
Dan gebruik je user. Als je dan 'gebruiker' gebruikt ben je immers aan het vertalen (en->nl) :+.

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!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Volgens mij is het gewoon een gevalletje "Hoe ingewikkelder je code eruit ziet, hoe knapper de programmeur" ;)

Acties:
  • 0 Henk 'm!

  • halofreak1990
  • Registratie: Juli 2013
  • Laatst online: 17-05-2024
mcDavid schreef op dinsdag 25 november 2014 @ 09:30:
Volgens mij is het gewoon een gevalletje "Hoe ingewikkelder je code eruit ziet, hoe knapper de programmeur" ;)
Was het maar zo'n feest. Zat code die bijkans onleesbaar is en alleen een paar super-simpele handelingen verricht.

Acties:
  • 0 Henk 'm!

  • PolarBear
  • Registratie: Februari 2001
  • Niet online
Rohem schreef op maandag 24 november 2014 @ 14:47:
Kom net ook een mooi stukje tegen, geschreven in november vorig jaar volgens TFS. int.TryParse bestond zeker nog niet.. :?

C#:
1
2
3
4
5
6
7
8
try
{
    persoon.BSN = int.Parse(BSN);
}
catch (Exception ex)
{
    persoon.BSN = 0;
}
BSN zou je eigenlijk al een aparte class moeten implementeren met een ingebouwde (aangepaste) elf proef en een custom exception invalidBSN oid.

Acties:
  • 0 Henk 'm!

  • 2Keys
  • Registratie: Oktober 2012
  • Laatst online: 19-09 13:02
PolarBear schreef op dinsdag 25 november 2014 @ 12:25:
[...]


BSN zou je eigenlijk al een aparte class moeten implementeren met een ingebouwde (aangepaste) elf proef en een custom exception invalidBSN oid.
Elfproef word voor meerderen dingen gebruikt. Naar mij mening kan het beter een extension method worden zodat je hem ook kan gebruiken op bijv. IBAN

Nvm bij bsn is hij natuurlij i * -1 |:(

[ Voor 5% gewijzigd door 2Keys op 25-11-2014 20:44 ]


Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 19:53

RayNbow

Kirika <3

Een eigen codevoorbeeld:

Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
tasks = Queue()
add_tasks_to_queue(tasks)

def worker():
    while True:
        task = tasks.get()
        execute(task)
        tasks.task_done()


for _ in xrange(NUM_THREADS):
    t = Thread(target=worker)
    t.daemon = True
    t.start()

tasks.join()


De code heeft het altijd prima gedaan, maar dit stuk code werd dan ook maar 1x uitgevoerd in het programma. Drie keer raden wat er uiteindelijk gebeurt als dit stukje code meerdere keren wordt uitgevoerd. O-)

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 19-09 10:08

Haan

dotnetter

PolarBear schreef op dinsdag 25 november 2014 @ 12:25:
[...]


BSN zou je eigenlijk al een aparte class moeten implementeren met een ingebouwde (aangepaste) elf proef en een custom exception invalidBSN oid.
En een BSN als int definiëren is ook al zoiets, het is een string die uit cijfers bestaat nu heb je meteen een probleem met eventuele voorloopnullen..

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Eppux
  • Registratie: Mei 2009
  • Laatst online: 20-07 19:22
Voor de een of andere reden vond de vorige developer het een goed idee om voor zo goed als iedere methode het volgende stukje code als basis te gebruiken.

C#:
1
2
3
4
5
6
7
8
try
{
    executeMethodLogic();
}
catch (Exception exception)
{
    throw new Exception(exception.Message);
}


Ik vond het al vreemd dat ik zo enorm weinig informatie kreeg in de logs over de gebeurde exceptions en hierbij heb ik dus het probleem gevonden.

Het voordeel is dat ik nu zonder problemen 1/4de van de gehele codebase kan verwijderen :+.

Acties:
  • 0 Henk 'm!

  • Hatsieflatsie
  • Registratie: Oktober 2011
  • Laatst online: 15-09 10:32
Eppux schreef op maandag 12 januari 2015 @ 20:23:
Voor de een of andere reden vond de vorige developer het een goed idee om voor zo goed als iedere methode het volgende stukje code als basis te gebruiken.

C#:
1
2
3
4
5
6
7
8
try
{
    executeMethodLogic();
}
catch (Exception exception)
{
    throw new Exception(exception.Message);
}


Ik vond het al vreemd dat ik zo enorm weinig informatie kreeg in de logs over de gebeurde exceptions en hierbij heb ik dus het probleem gevonden.

Het voordeel is dat ik nu zonder problemen 1/4de van de gehele codebase kan verwijderen :+.
Wat is het probleem daarbij? Ik maak m'n functies in PHP ook altijd met try/catch exceptions.

Acties:
  • 0 Henk 'm!

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Omdat het niks toevoegd. Nu eet je alle typen exceptions op, en maakt er eentje van het type Exception van (zodat je niet meer specifiek het type exception zou kunnen afvangen). Niet alleen dat, maar je maakt hier ook de stacktrace kapot, door er een nieuwe exception van te maken; wrap hem dan op zijn minst.

Acties:
  • 0 Henk 'm!

  • Eppux
  • Registratie: Mei 2009
  • Laatst online: 20-07 19:22
Hatsieflatsie schreef op maandag 12 januari 2015 @ 21:22:
[...]
Wat is het probleem daarbij? Ik maak m'n functies in PHP ook altijd met try/catch exceptions.
Zoals Feanathiel correct aanhaalt, de enige informatie die je achteraf nog van een exception kan vinden in de log is de message van de exception. Type van exception en trace ben je volledig kwijt. Zeer handig om de fout te lokaliseren ;).

Daarnaast wat is het voordeel aan alle methods wrappen in een try/catch? In de meeste gevallen heb je toch al een try/catch aan de oorsprong van je call stack voor het loggen. Het enige nuttige wat je mogelijk zou kunnen toevoegen is een echte foutafhandeling of mogelijks een wrapper exception met meer info voor betere tracebaarheid, maar dat is toch iets dat je meer niet als wel nodig hebt?

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
En als je al een wrapper exception nodig hebt, is er altijd nog de $previous parameter. :)

{signature}


Acties:
  • 0 Henk 'm!

  • biglia
  • Registratie: Februari 2012
  • Laatst online: 22-07 17:10
C# door een Senior Developer. Converteren van int naar string voortdurend als volgt:

string _example = 1 + "";

Acties:
  • 0 Henk 'm!

  • YakuzA
  • Registratie: Maart 2001
  • Niet online

YakuzA

Wat denk je nou zelluf hey :X

biglia schreef op dinsdag 13 januari 2015 @ 11:34:
C# door een Senior Developer. Converteren van int naar string voortdurend als volgt:

string _example = 1 + "";
Het is in ieder geval kortere code dan:
C#:
1
string _example = 1.ToString();

:+

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


Acties:
  • 0 Henk 'm!

Verwijderd

Laatst heb ik voor me zelf bewezen dat ik toch echt een flut programmeur ben. De klant (van me stage) benaderde me dat er aantal gevallen waren waar bij leerlingen op het door mij gemaakte systeem konden inloggen op andere accounts.

Zoals ik vermoede, heb ik een stukje legacy code wat ik niet verwijderd heb.(jQuery post request in html):
JavaScript:
1
2
3
4
5
6
7
8
function GetPermissions(id){
    $.post("/post/post.home.php",{ type: '1', id: id },
        function(data)
        {
            document.getElementById("results").innerHTML = data;
        }
    );
}


DIe stuurt een request naam de PHP bestand "post.home.php". Deze code is bedoel om de permissies van de gebruiker te checken.
PHP:
1
2
3
4
5
6
7
8
9
function GetUserData($id){
    $connection = new Connection('','','','',true);
    $connection->Query('SELECT * FROM `students` WHERE `id`=:id LIMIT 1');
    $connection->Bind(":id", $id);
    $result = $connection->Select();
    $connection->Disconnect();

    return $result;
}


Wat als gevolg heeft dat hij de variabel $result gaat echo'en in de HTML file. Maar heb er nooit bij stil gestaan dat je deze code ook via de chrome developer console kan uitvoeren. Dit was het resultaat toen ik het uitvoerde*:
Afbeeldingslocatie: https://photos-6.dropbox.com/t/2/AACAItH61sVPItkVc_Ecm5kpmCbUwcCEbs_eG-WAqdLMzg/12/364686909/png/1024x768/3/1421157600/0/2/faalaap.PNG/CL3c8q0BIAEoAQ/ZQdZ3DOjP_yJwapDdp2IItybblQ7dUgUGDp_twdsGFc

Dus ja door stukje code in te voeren kon je alle leerling accounts de gegevens uitlezen. Best stomme fout, maar ja fouten zijn gepermitteerd als je sinds kort programmeert ( 5 maanden + wat hobby ervaring).

Weer een lesje geleerd waarom je geen post request en prive gegevens combineert, en echt schaamend dat ik SELECT * all heb gedaan 8)7

*P.S: Wachtwoorden zijn niet encrypt omdat dit de developement omgeving is en niet de production omgeving.

Acties:
  • 0 Henk 'm!

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 21:09
Verwijderd schreef op dinsdag 13 januari 2015 @ 13:19:
Laatst heb ik voor me zelf bewezen dat ik toch echt een flut programmeur ben. De klant (van me stage) benaderde me dat er aantal gevallen waren waar bij leerlingen op het door mij gemaakte systeem konden inloggen op andere accounts.

Zoals ik vermoede, heb ik een stukje legacy code wat ik niet verwijderd heb.(jQuery post request in html):
JavaScript:
1
2
3
4
5
6
7
8
function GetPermissions(id){
    $.post("/post/post.home.php",{ type: '1', id: id },
        function(data)
        {
            document.getElementById("results").innerHTML = data;
        }
    );
}


DIe stuurt een request naam de PHP bestand "post.home.php". Deze code is bedoel om de permissies van de gebruiker te checken.
PHP:
1
2
3
4
5
6
7
8
9
function GetUserData($id){
    $connection = new Connection('','','','',true);
    $connection->Query('SELECT * FROM `students` WHERE `id`=:id LIMIT 1');
    $connection->Bind(":id", $id);
    $result = $connection->Select();
    $connection->Disconnect();

    return $result;
}


Wat als gevolg heeft dat hij de variabel $result gaat echo'en in de HTML file. Maar heb er nooit bij stil gestaan dat je deze code ook via de chrome developer console kan uitvoeren. Dit was het resultaat toen ik het uitvoerde*:
[afbeelding]

Dus ja door stukje code in te voeren kon je alle leerling accounts de gegevens uitlezen. Best stomme fout, maar ja fouten zijn gepermitteerd als je sinds kort programmeert ( 5 maanden + wat hobby ervaring).

Weer een lesje geleerd waarom je geen post request en prive gegevens combineert, en echt schaamend dat ik SELECT * all heb gedaan 8)7

*P.S: Wachtwoorden zijn niet encrypt omdat dit de developement omgeving is en niet de production omgeving.
Nooit client-side code zoals Javascript vertrouwen inderdaad ;)

Maar waarom zijn wachtwoorden op de productieomgeving niet ge-encrypt? Toch logischer om dat gewoon altijd goed te doen, kan je het ook niet vergeten.

Acties:
  • 0 Henk 'm!

Verwijderd

Barryvdh schreef op dinsdag 13 januari 2015 @ 13:44:
[...]

Nooit client-side code zoals Javascript vertrouwen inderdaad ;)

Maar waarom zijn wachtwoorden op de productieomgeving niet ge-encrypt? Toch logischer om dat gewoon altijd goed te doen, kan je het ook niet vergeten.
Ze zijn encrypt op productie omgeving, dat had je even verkeerd begrepen (of ik heb het verkeerd geformuleerd). En op development omgeving zijn ze niet geencrypt (nooit geimplementeerd omdat ik er problemen mee had...)

Javascript can be a b*tch sometimes...

[ Voor 9% gewijzigd door Verwijderd op 13-01-2015 13:54 ]


Acties:
  • 0 Henk 'm!

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 21:09
Verwijderd schreef op dinsdag 13 januari 2015 @ 13:54:
[...]


Ze zijn encrypt op productie omgeving, dat had je even verkeerd begrepen (of ik heb het verkeerd geformuleerd). En op development omgeving zijn ze niet geencrypt (nooit geimplementeerd omdat ik er problemen mee had...)

Javascript can be a b*tch sometimes...
Oeps, bedoelde op ontwikkeling niet ge-encrypt inderdaad.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op dinsdag 13 januari 2015 @ 13:54:
En op development omgeving zijn ze niet geencrypt (nooit geimplementeerd omdat ik er problemen mee had...)
Dan zoek je die uit. 8)7 Scheelt weer een verschil met andere installaties en een stomme hack of vlaggetje in authenticatiecode welke juist eenvoudig en betrouwbaar moet zijn.

{signature}


Acties:
  • 0 Henk 'm!

  • NESFreak
  • Registratie: December 2009
  • Laatst online: 19:38
Net een bestaande codebase aangeleverd gekregen. Gelukkig compilede het zonder warnings. Die stonden namelijk uit. Na ze aan te zetten kwam ik het volgende pareltje tegen. Meteen een leuk puzzeltje voor jullie dus: Waarom doet de volgende cpp code precies wat je verwachtbedoelt dat 'ie doet? >:)

code:
1
2
3
4
//in de header
using namespace std;
//in de source
std:map<int,int> mymap;

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:24

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik verwacht een compile error wegens een missende ':'. Dus de code zal wel niets doen ;)

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!

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 22:45

Super_ik

haklust!

Std: is een label

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:24

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik ging eigenlijk uit van namespace scope (er staat immers geen functie omheen), maar binnen een functie kan dat idd.

Maar even los hiervan. Een using directive/declaration in global namespace scope in een header :N

[ Voor 49% gewijzigd door .oisyn op 29-01-2015 00:14 ]

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!

  • NESFreak
  • Registratie: December 2009
  • Laatst online: 19:38
Precies. Ik kwam er ook alleen maar achter omdat de compiler me waarschuwde voor een ongebruikt label.

Het is helaas wel al te kenmerkend voor de kwaliteit van 'wetenschappelijke' code in het algemeen...

Acties:
  • 0 Henk 'm!

  • ErikKo
  • Registratie: Mei 2009
  • Laatst online: 19-09 07:10

ErikKo

Rippie

NESFreak schreef op donderdag 29 januari 2015 @ 00:53:
[...]


Precies. Ik kwam er ook alleen maar achter omdat de compiler me waarschuwde voor een ongebruikt label.

Het is helaas wel al te kenmerkend voor de kwaliteit van 'wetenschappelijke' code in het algemeen...
En daarom: -Werror (treat all warnings as errors)

Acties:
  • 0 Henk 'm!

  • Rohem
  • Registratie: Augustus 2007
  • Laatst online: 18-09 14:13
PolarBear schreef op dinsdag 25 november 2014 @ 12:25:
[...]


BSN zou je eigenlijk al een aparte class moeten implementeren met een ingebouwde (aangepaste) elf proef en een custom exception invalidBSN oid.
Na tijd weer in dit topic beland, vandaar de late reactie. Maar goede tip inderdaad, daar had ik nog niet aan gedacht :o

Acties:
  • 0 Henk 'm!

  • ivov
  • Registratie: Februari 2013
  • Laatst online: 04-09 16:07
if($true == false)

Acties:
  • 0 Henk 'm!

  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 26-08 22:19

xehbit

Daar is toch niets mis mee :P ?

Acties:
  • 0 Henk 'm!

  • ivov
  • Registratie: Februari 2013
  • Laatst online: 04-09 16:07
Het ziet er onlogisch uit en wanneer je zoiets wil doen is er altijd wel iets dat true moet zijn dus geef het gewoon een andere naam dan true

Acties:
  • 0 Henk 'm!

  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 26-08 22:19

xehbit

PHP:
1
2
3
4
function isTrue($true)
{
    if($true == false) return false; else return true;
}


Zo toch gewoon :P

Haha, maar het is inderdaad best verwarrend die var name :)

[ Voor 16% gewijzigd door xehbit op 29-01-2015 13:00 ]


Acties:
  • 0 Henk 'm!

  • Richh
  • Registratie: Augustus 2009
  • Laatst online: 19-09 10:34
Zolang je variabele een boolean is...
PHP:
1
if($var)


Waarom zou je er nog een == tussen zetten :P

[ Voor 12% gewijzigd door Richh op 29-01-2015 16:04 ]

☀️ 4500wp zuid | 🔋MT Venus 5kW | 🚗 Tesla Model 3 SR+ 2020 | ❄️ Daikin 3MXM 4kW


Acties:
  • 0 Henk 'm!

  • Firesphere
  • Registratie: September 2010
  • Laatst online: 16-09 09:06

Firesphere

Yoshis before Hoshis

Dragon707 schreef op donderdag 29 januari 2015 @ 12:59:
PHP:
1
2
3
4
function isTrue($true)
{
    return ($true == false) ? false : true;
}


Zo toch gewoon :P

Haha, maar het is inderdaad best verwarrend die var name :)
Zo is veel mooier *kuch*

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!

  • bobo1on1
  • Registratie: Juli 2001
  • Laatst online: 18-05 17:57
ErikKo schreef op donderdag 29 januari 2015 @ 09:10:
[...]

En daarom: -Werror (treat all warnings as errors)
Dat is op zich prima tijdens development, maar er zijn ook mensen die open source code releasen waarbij dat in het build system staat, dat is dan weer niet zo handig.

Impedance, a measure of opposition to time-varying electric current in an electric circuit.
Not to be confused with impotence.


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Richh schreef op donderdag 29 januari 2015 @ 16:04:
Zolang je variabele een boolean is...
PHP:
1
if($var)


Waarom zou je er nog een == tussen zetten :P
Het is en blijft PHP, dus waarom zou je dit enkel op een boolean gebruiken >:)

Maar in loosely typed talen zou ik booleans toch expliciet (en dan niet met == maar met ===true) checken, iets te vaak meegemaakt dat iemand $var dacht te kunnen gebruiken voor een string / int en dan zo af en toe "vreemde" resultaten krijgen
Pagina: 1 ... 7 ... 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. :)