De Devschuur Coffee Corner - Iteratie 7 Vorige deel Overzicht Volgende deel Laatste deel

Dit topic is onderdeel van een reeks. Ga naar het meest recente topic in deze reeks.

Pagina: 1 ... 6 ... 101 Laatste
Acties:
  • 279.126 views

Acties:
  • 0 Henk 'm!

  • Kobus Post
  • Registratie: September 2010
  • Laatst online: 10:47
Blijkbaar kan die nas ook opslaguitwisselen via USB3.0
twee USB 3.0-poorten voor ultrasnelle externe opslaguitwisseling

No trees were harmed in the creation of this message, but several thousand electrons were mildly inconvenienced.


Acties:
  • 0 Henk 'm!

  • HMS
  • Registratie: Januari 2004
  • Laatst online: 21-08 23:06

HMS

Microsoft staakt support voor oude browsers, en trekt 1 lijn wat betreft .NET 4: http://blogs.msdn.com/b/d...-net-framework-4-5-2.aspx

Wat gaat er 12 januari 2016 gebeuren?

Acties:
  • 0 Henk 'm!

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

Firesphere

Yoshis before Hoshis

#^@%&#%$^&%*^(

Collega met de meest beroerde muzieksmaak heeft besloten dat de radio aan moet. Op een of andere dance-kutzender.

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!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
RayNbow schreef op vrijdag 08 augustus 2014 @ 10:03:
[...]


Wat is er mis met korte variabelenamen?

Haskell:
1
2
foldr f z []     = z
foldr f z (x:xs) = x `f` foldr f z xs


Is toch prima leesbaar? :P
Ik weet niet of je de Numerical Recipes in C wel eens gezien hebt? Dat stroomt over van de korte variabelenamen en als ik het lees moet ik huilen. Willekeurig voorbeeld uit een willekeurig bestand genaamd dsprsax.c:

C:
1
2
3
4
5
6
7
8
9
10
11
void dsprsax(double *sa, unsigned long *ija, double *x, double *b, unsigned long n)
{
    void nrerror();
    unsigned long i,k;

    if (ija[1] != n+2) nrerror("dsprsax: mismatched vector and matrix");
    for (i=1;i<=n;i++) {
        b[i]=sa[i]*x[i];
        for (k=ija[i];k<=ija[i+1]-1;k++) b[i] += sa[k]*x[ija[k]];
    }
}

Bron: http://home.uchicago.edu/...rograms/golding/dsprsax.c
What. The. Fuck.

[ Voor 7% gewijzigd door HuHu op 08-08-2014 12:04 ]


Acties:
  • 0 Henk 'm!

  • Ealanrian
  • Registratie: Februari 2009
  • Laatst online: 18:25
Ik ben ongeveer een week weg en pagina 6 van de volgende iteratie is al bereikt... Nu maar eens 200+ mailtjes door spitten om te kijken of ik wat heb gemist. Behalve dat ik ook ben aangenomen voor Computer science op Utwente denk ik niet veel.

Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Ealanrian schreef op vrijdag 08 augustus 2014 @ 12:03:
Behalve dat ik ook ben aangenomen voor Computer science op Utwente denk ik niet veel.
Gefeliciteerd. :)

We are shaping the future


Acties:
  • 0 Henk 'm!

  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 19-08 14:24

ZaZ

Tweakers abonnee

Firesphere schreef op vrijdag 08 augustus 2014 @ 12:00:
#^@%&#%$^&%*^(

Collega met de meest beroerde muzieksmaak heeft besloten dat de radio aan moet. Op een of andere dance-kutzender.
Meenemen naar buiten en schotje hagel achter het schuurtje

Lekker op de bank


Acties:
  • 0 Henk 'm!

  • dcm360
  • Registratie: December 2006
  • Niet online

dcm360

Moderator Discord

HD7767 powered

Alex) schreef op vrijdag 08 augustus 2014 @ 11:44:
Op de homepage zag ik een advertorial voor de Gouden NAS, waarin werd doorgelinkt naar de productpagina van de Synology DS415play. Bij de unique selling points viel me het volgende op:


[...]


:D
Tja, het ding heeft wel een eenheid om beter overweg te kunnen met getallen met drijvende komma. Ze kunnen er eigenlijk toch wel FPU neerzetten, het is niet alsof mensen die niet weten wat een FPU is er nu wel wijzer op worden.

Acties:
  • 0 Henk 'm!

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

Firesphere

Yoshis before Hoshis

ZaZ schreef op vrijdag 08 augustus 2014 @ 12:11:
[...]

Meenemen naar buiten en schotje hagel achter het schuurtje
Als dat nou eens legaal was met bepaalde zaken....

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!

  • Acid_Burn
  • Registratie: Augustus 2001
  • Laatst online: 13:27

Acid_Burn

uhuh

Firesphere schreef op vrijdag 08 augustus 2014 @ 12:00:
#^@%&#%$^&%*^(

Collega met de meest beroerde muzieksmaak heeft besloten dat de radio aan moet. Op een of andere dance-kutzender.
Hij heeft waarschijnlijk dezelfde mening over jouw beroerde muzieksmaak....

Dat iemand van andere muziek houd, maakt zijn/haar muzieksmaak natuurlijk nog niet beroerd...

tenzij het over palingsound gaat natuurlijk

Glass Eye Photography | Zelfbouw wireless fightstick | Mijn puzzel site


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 20:35
whoami schreef op vrijdag 08 augustus 2014 @ 09:51:
[...]

Wat gebeurt er eigenlijk met die 1TB als je uw Office 365 abbo opzegt of niet meer verlengd ? Val je dan terug op de standaard 15gb ?
Ja, en er wordt niets verwijdert, maar je kan ook niets meer uploaden totdat je de ruimte weer vrijmaakt zodat je onder je limiet komt.
HuHu schreef op vrijdag 08 augustus 2014 @ 12:01:
[...]
C:
1
2
3
4
5
6
7
8
9
10
11
void dsprsax(double *sa, unsigned long *ija, double *x, double *b, unsigned long n)
{
    void nrerror();
    unsigned long i,k;

    if (ija\[1] != n+2) nrerror("dsprsax: mismatched vector and matrix");
    for (i=1;i<=n;i++) {
        b\[i]=sa\[i]*x\[i];
        for (k=ija\[i];k<=ija[i+1]-1;k++) b\[i] += sa\[k]*x[ija\[k]];
    }
}

Bron: http://home.uchicago.edu/...rograms/golding/dsprsax.c
What. The. Fuck.
Ik wilde gaan neer zetten dat het er gewoon uitziet als een wiskunde formule die is omgezet op een nogal vage manier, maar dit ziet er wel heel vaag uit. Die i, j en k kan ik me nog wel voorstellen, maar ija?
En mijn c kennis en kennis van deze library is overduidelijk niet voldoende, want wat bedoelen ze nou weer met b\[i]?

Acties:
  • 0 Henk 'm!

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

Firesphere

Yoshis before Hoshis

Acid_Burn schreef op vrijdag 08 augustus 2014 @ 12:24:
[...]

Hij heeft waarschijnlijk dezelfde mening over jouw beroerde muzieksmaak....

Dat iemand van andere muziek houd, maakt zijn/haar muzieksmaak natuurlijk nog niet beroerd...

tenzij het over palingsound gaat natuurlijk
Er is nogal een verschil tussen je eigen muziek opdringen (op volume standje 11), t.o.v. wat ik eventueel aan zou zetten.

Ik hou gewoon rekening met m'n collega's, en zorg dus voor iets algemeens wat niet storend is.

Da's heel iets anders dan zijn klootzakgedrag.

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!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Caelorum schreef op vrijdag 08 augustus 2014 @ 12:32:


[...]

Ik wilde gaan zetten dat het er gewoon uitziet als een wiskunde formule die is omgezet op een nogal vage manier, maar dit ziet er wel heel vaag uit. Die i, j en k kan ik me nog wel voorstellen, maar ija?
En mijn c kennis en kennis van deze library is overduidelijk niet volgoende, want wat bedoelen ze nou weer met b\[i]?
Gelukkig kun je aan de functienaam aflezen wat het doet. Ow wacht... :')

Acties:
  • 0 Henk 'm!

  • Struikrover
  • Registratie: Juni 2005
  • Laatst online: 14-09 13:09
Caelorum schreef op vrijdag 08 augustus 2014 @ 12:32:
[...]

Ja, en er wordt niets verwijdert, maar je kan ook niets meer uploaden totdat je de ruimte weer vrijmaakt zodat je onder je limiet komt.


[...]

Ik wilde gaan neer zetten dat het er gewoon uitziet als een wiskunde formule die is omgezet op een nogal vage manier, maar dit ziet er wel heel vaag uit. Die i, j en k kan ik me nog wel voorstellen, maar ija?
En mijn c kennis en kennis van deze library is overduidelijk niet voldoende, want wat bedoelen ze nou weer met b\[i]?
Volgens mij gaat er iets mis met escaping in jouw code quote. En ook al in mijn quote van jou zo te zien :P. b\[i], hehe

Acties:
  • 0 Henk 'm!

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

BikkelZ

CMD+Z

Firesphere schreef op vrijdag 08 augustus 2014 @ 12:00:
#^@%&#%$^&%*^(

Collega met de meest beroerde muzieksmaak heeft besloten dat de radio aan moet. Op een of andere dance-kutzender.
Doet me denken aan mijn minst productieve tijd ooit.
Firesphere schreef op vrijdag 08 augustus 2014 @ 12:33:
[...]

Er is nogal een verschil tussen je eigen muziek opdringen (op volume standje 11), t.o.v. wat ik eventueel aan zou zetten.

Ik hou gewoon rekening met m'n collega's, en zorg dus voor iets algemeens wat niet storend is.

Da's heel iets anders dan zijn klootzakgedrag.
Ik kan gewoon iemand's muziek gewoon niet negeren en als ik dan ook nog naar slechte muziek moet luisteren (er wordt geen goede dance gedraaid op radiozenders, alleen blanke hoempa hoempa klompendans house met te veel compressie) terwijl ik het niet kán negeren dan is dat gewoon echt zwaar funest voor mijn productiviteit.

iOS developer


Acties:
  • 0 Henk 'm!

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

Firesphere

Yoshis before Hoshis

BikkelZ schreef op vrijdag 08 augustus 2014 @ 12:50:
[...]


Doet me denken aan mijn minst productieve tijd ooit.


[...]


Ik kan gewoon iemand's muziek gewoon niet negeren en als ik dan ook nog naar slechte muziek moet luisteren (er wordt geen goede dance gedraaid op radiozenders, alleen blanke hoempa hoempa klompendans house met te veel compressie) terwijl ik het niet kán negeren dan is dat gewoon echt zwaar funest voor mijn productiviteit.
Dit.

Algemene pop-muziek op normaal volume is best te negeren, maar een muzieksoort die mijn concentratie volledig doorbreekt is gewoon kut.

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!

  • Robbiedobbie
  • Registratie: Augustus 2009
  • Laatst online: 16-09 19:30
Jeujj, het hele frame en de geprinte plastic onderdelen zijn binnen *O*

Helaas is de glasplaat die ik mee had besteld in 10 stukken binnen gekomen -O-

Achja, refund is nu al geregeld, en dan haal ik wel een 20x20 spiegel bij de ikea...

Acties:
  • 0 Henk 'm!

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 13-07 01:53

Korben

() => {};

Firesphere schreef op vrijdag 08 augustus 2014 @ 12:57:
[...]

Dit.

Algemene pop-muziek op normaal volume is best te negeren, maar een muzieksoort die mijn concentratie volledig doorbreekt is gewoon kut.
Doe oordopjes in of vraag de betreffende collega om dit te doen met zijn herrie. Quit bitching about it.

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


Acties:
  • 0 Henk 'm!

  • Acid_Burn
  • Registratie: Augustus 2001
  • Laatst online: 13:27

Acid_Burn

uhuh

Ik heb hier een minor probleempje met focusvolgorde in een WPF form. Onderder Win7 werkt het allemaal prima, maar onder XP werkt het blijkbaar net even anders waardoor na een bepaalde control de volgende niet bereikt wordt met TAB maar naar het 1e control wordt gesprongen. Een XP probleem dus. Aangezien XP officieel niet meer wordt ondersteund vraag ik me af hoeveel tijd ik daar in moet gaan steken. Debuggen is sowieso lastig omdat ik daar mijn dev omgeving niet op heb staan. Eigenlijk wil ik daar geen tijd in steken (het is ook geen breaking bug, het is alleen wat lastiger voor XP gebruikers).

Hoe gaan jullie om met zulke dingen?
Firesphere schreef op vrijdag 08 augustus 2014 @ 12:33:
[...]

Er is nogal een verschil tussen je eigen muziek opdringen (op volume standje 11), t.o.v. wat ik eventueel aan zou zetten.
True... dat is gewoon aso.

Glass Eye Photography | Zelfbouw wireless fightstick | Mijn puzzel site


Acties:
  • 0 Henk 'm!

  • Gamebuster
  • Registratie: Juli 2007
  • Laatst online: 15-09 23:08
M'n kattebeest doet oogjes niet meer open en doet niets anders dan liggen en zwiepen met staart (al leg je haar op de grond) terwijl ze normaal springlevend is. Straks maar naar dierenarts...

Let op: Mijn post bevat meningen, aannames of onwaarheden


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Gamebuster schreef op vrijdag 08 augustus 2014 @ 13:18:
M'n kattebeest doet oogjes niet meer open en doet niets anders dan liggen en zwiepen met staart (al leg je haar op de grond) terwijl ze normaal springlevend is. Straks maar naar dierenarts...
-O-

We are shaping the future


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 20:35
Struikrover schreef op vrijdag 08 augustus 2014 @ 12:49:
[...]
Volgens mij gaat er iets mis met escaping in jouw code quote. En ook al in mijn quote van jou zo te zien :P. b\[i], hehe
Ja, dat denk ik ook.. Bij \[x] wordt de \ weggehaald als je een quote van een iets in codetags doet :X En wat er verder nog wel niet wordt verandert vraag ik mij dan ook af. Want er komt ineens een extra \ te staan voor elke [
Zie dat het al is gemeld: Quoten van code

En succes Gamebuster! Hoop dat het allemaal wel mee gaat vallen...

[ Voor 11% gewijzigd door Caelorum op 08-08-2014 13:42 ]


Acties:
  • 0 Henk 'm!

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

RayNbow

Kirika <3

HuHu schreef op vrijdag 08 augustus 2014 @ 12:01:
[...]

Ik weet niet of je de Numerical Recipes in C wel eens gezien hebt? Dat stroomt over van de korte variabelenamen en als ik het lees moet ik huilen. Willekeurig voorbeeld uit een willekeurig bestand genaamd dsprsax.c:

C:
1
2
3
4
5
6
7
8
9
10
11
void dsprsax(double *sa, unsigned long *ija, double *x, double *b, unsigned long n)
{
    void nrerror();
    unsigned long i,k;

    if (ija[1] != n+2) nrerror("dsprsax: mismatched vector and matrix");
    for (i=1;i<=n;i++) {
        b[i]=sa[i]*x[i];
        for (k=ija[i];k<=ija[i+1]-1;k++) b[i] += sa[k]*x[ija[k]];
    }
}

Bron: http://home.uchicago.edu/...rograms/golding/dsprsax.c
What. The. Fuck.
HuHu schreef op vrijdag 08 augustus 2014 @ 12:37:
[...]

Gelukkig kun je aan de functienaam aflezen wat het doet. Ow wacht... :')
Het kostte ff wat moeite tot het kwartje viel, maar ik snap de naamgeving. De d staat voor double en sprs voor sparse. Dan staat ax voor de vermenigvuldiging van een matrix A en een vector x. :)

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

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

Firesphere

Yoshis before Hoshis

Korben schreef op vrijdag 08 augustus 2014 @ 13:00:
[...]

Doe oordopjes in of vraag de betreffende collega om dit te doen met zijn herrie. Quit bitching about it.
Da's dus het probleem, betreffende collega wil niet zachter zetten, en het dreunt dus door m'n eigen muziek heen.

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!

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

RayNbow

Kirika <3

Caelorum schreef op vrijdag 08 augustus 2014 @ 12:32:
[...]

Ik wilde gaan neer zetten dat het er gewoon uitziet als een wiskunde formule die is omgezet op een nogal vage manier, maar dit ziet er wel heel vaag uit. Die i, j en k kan ik me nog wel voorstellen, maar ija?
De matrix A (sa in de code) is sparse, dus ija zijn de indices.
En mijn c kennis en kennis van deze library is overduidelijk niet voldoende, want wat bedoelen ze nou weer met b?
De output. als in... A*x = b. :)

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

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

Firesphere

Yoshis before Hoshis

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!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 20:35
Firesphere schreef op vrijdag 08 augustus 2014 @ 13:51:
[...]

Da's dus het probleem, betreffende collega wil niet zachter zetten, en het dreunt dus door m'n eigen muziek heen.
Naar je baas lopen en zeggen dat die muziek zachter moet omdat je anders niet kan werken en dan je voeten op je bureau leggen? Beetje kinderachtig, maar ja.. Soms moet je jezelf gewoon verlagen naar het niveau van je tegenstander als die niet wil luisteren :P

Acties:
  • 0 Henk 'm!

Verwijderd

Mogguh!
Gisteren aangekomen in de US na zo'n 20 uur onderweg geweest te zijn. Praktisch 40 uur niet geslapen (slapen in zo'n vliegtuig is echt een ramp) dus maar vroeg het bed in gegaan gisteren. Meteen perfect kunnen slapen dus zal vandaag totaal geen last van jetlag hebben, lijkt me zo.

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 20:35
RayNbow schreef op vrijdag 08 augustus 2014 @ 13:53:
[...] De matrix A (sa in de code) is sparse, dus ija zijn de indices. [...]
Ah ok :)
[...] De output. als in... A*x = b. :)
Jij hebt duidelijk geen last van de bug ^^ ik vroeg me niet af wat b was maar
code:
1
b\[i] = iets...

Maar dat is dus de bug en er hoort te staan b[i] ^^

[ Voor 14% gewijzigd door Caelorum op 08-08-2014 13:59 ]


Acties:
  • 0 Henk 'm!

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 13-07 01:53

Korben

() => {};

Verwijderd schreef op vrijdag 08 augustus 2014 @ 13:57:
Mogguh!
Gisteren aangekomen in de US na zo'n 20 uur onderweg geweest te zijn. Praktisch 40 uur niet geslapen (slapen in zo'n vliegtuig is echt een ramp) dus maar vroeg het bed in gegaan gisteren. Meteen perfect kunnen slapen dus zal vandaag totaal geen last van jetlag hebben, lijkt me zo.
20 uur?! Ben je via Zuid-Afrika gevlogen of zo?

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


Acties:
  • 0 Henk 'm!

  • _Moe_
  • Registratie: Mei 2006
  • Laatst online: 04-08 14:45
Gamebuster schreef op vrijdag 08 augustus 2014 @ 13:18:
M'n kattebeest doet oogjes niet meer open en doet niets anders dan liggen en zwiepen met staart (al leg je haar op de grond) terwijl ze normaal springlevend is. Straks maar naar dierenarts...
Mijn kattebeest is 1 maand geleden bevallen, liet ik ze vorige week welgeteld 2 uur buiten is ze opnieuw zwanger en dat terwijl ze volgende week zou gesteriliseerd worden. :(

RTFM!


Acties:
  • 0 Henk 'm!

  • dcm360
  • Registratie: December 2006
  • Niet online

dcm360

Moderator Discord

HD7767 powered

Korben schreef op vrijdag 08 augustus 2014 @ 14:05:
[...]

20 uur?! Ben je via Zuid-Afrika gevlogen of zo?
Wordt jij thuis opgehaald door een privé-jet en daarmee afgezet naast de bestemming? ;)

Acties:
  • 0 Henk 'm!

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

RayNbow

Kirika <3

Caelorum schreef op vrijdag 08 augustus 2014 @ 13:58:
[...]

Jij hebt duidelijk geen last van de bug ^^ ik vroeg me niet af wat b was maar
code:
1
b\[i] = iets...

Maar dat is dus de bug en er hoort te staan b[i] ^^
Oh, ik heb de quote misschien hier en daar aangepast... O-)

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

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

Firesphere

Yoshis before Hoshis

Gamebuster schreef op vrijdag 08 augustus 2014 @ 13:18:
M'n kattebeest doet oogjes niet meer open en doet niets anders dan liggen en zwiepen met staart (al leg je haar op de grond) terwijl ze normaal springlevend is. Straks maar naar dierenarts...
-O-
Sterkte.

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!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 20:35
_Moe_ schreef op vrijdag 08 augustus 2014 @ 14:06:
[...]
Mijn kattebeest is 1 maand geleden bevallen, liet ik ze vorige week welgeteld 2 uur buiten is ze opnieuw zwanger en dat terwijl ze volgende week zou gesteriliseerd worden. :(
Daarom dus poezen niet buiten laten totdat ze gesteriliseerd zijn ^^ Anders is het lopende band werk. Vooral als je wat actieve katers in een straal van 10km hebt wonen (want vaak wel zo is).

Acties:
  • 0 Henk 'm!

Verwijderd

Korben schreef op vrijdag 08 augustus 2014 @ 14:05:
[...]

20 uur?! Ben je via Zuid-Afrika gevlogen of zo?
Ik ben thuis vertrokken om 2 uur 's nachts. Om 6 uur 's ochtends had ik mijn vlucht van Brussel naar Amsterdam om dan rond 8 uur een vlucht te hebben naar Detroit. Het is zo'n 8 uur vliegen dus dat wil zeggen dat ik om 10 uur lokale tijd aan kwam (16 uur hier). Dan nog een laatste vlucht van daar waarop ik 2 uur heb moeten wachten en die zelf nog een uur duurde. Uiteindelijk kom je dan aan op de luchthaven maar moet je nog naar het hotel geraken: weer even wachten op de shuttle dienst van het hotel dus. Eenmaal aangekomen snel de douche in en meteen terug aan het werk (het was uiteindelijk nog maar 3 uur in de namiddag dus kon ik nog snel een paar uren werken).

Dus nee, ik ben niet via Zuid-Afrika gevlogen maar ik heb ook geen privéjet waar ik van thuis kan opstappen en die me vlak voor het werk af zet.

Acties:
  • 0 Henk 'm!

  • StM
  • Registratie: Februari 2005
  • Laatst online: 15:32

StM

Verwijderd schreef op vrijdag 08 augustus 2014 @ 14:21:
[...]
Eenmaal aangekomen snel de douche in en meteen terug aan het werk (het was uiteindelijk nog maar 3 uur in de namiddag dus kon ik nog snel een paar uren werken).
Uhm, WAT?!?! :|

Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Van Brussel naar Amsterdam... vliegen? :?

We are shaping the future


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

Alex) schreef op vrijdag 08 augustus 2014 @ 14:24:
Van Brussel naar Amsterdam... vliegen? :?
Euh ja, wat is daar vreemd aan? Het is gewoon een vlucht met een overstap.

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


Acties:
  • 0 Henk 'm!

Verwijderd

Alex) schreef op vrijdag 08 augustus 2014 @ 14:24:
Van Brussel naar Amsterdam... vliegen? :?
Ja, vaak is het zelfs goedkoper om rechtstreeks van Amsterdam te vliegen 8)7

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
RayNbow schreef op vrijdag 08 augustus 2014 @ 13:48:
[...]


[...]

Het kostte ff wat moeite tot het kwartje viel, maar ik snap de naamgeving. De d staat voor double en sprs voor sparse. Dan staat ax voor de vermenigvuldiging van een matrix A en een vector x. :)
U gaat door voor de koelkast *O*.

Acties:
  • 0 Henk 'm!

  • Gropah
  • Registratie: December 2007
  • Niet online

Gropah

Admin Softe Goederen

Oompa-Loompa 💩

RayNbow schreef op vrijdag 08 augustus 2014 @ 13:48:
[...]


[...]

Het kostte ff wat moeite tot het kwartje viel, maar ik snap de naamgeving. De d staat voor double en sprs voor sparse. Dan staat ax voor de vermenigvuldiging van een matrix A en een vector x. :)
Dan zou ik toch wat met hoofdletters gaan werken en hernoemen naar dSprsAx, zodat het ook wat makkelijker is om te zien hoe de afkortingen zijn opgedeeld.

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Gropah schreef op vrijdag 08 augustus 2014 @ 15:26:
[...]

Dan zou ik toch wat met hoofdletters gaan werken en hernoemen naar dSprsAx, zodat het ook wat makkelijker is om te zien hoe de afkortingen zijn opgedeeld.
Het moet natuurlijk gewoon sparseMatrixVectorMultiply heten. Die d is sowieso overbodig, want de compiler ziet het verschil tussen float en double wel. En de conventie dat een matrix altijd A is en een vector altijd x, is discutabel en verwarrend. Ten slotte is het weglaten van alle klinkers ook onzin (sparse -> sprs).

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
HuHu schreef op vrijdag 08 augustus 2014 @ 15:33:
[...]

Die d is sowieso overbodig, want de compiler ziet het verschil tussen float en double wel.
C heeft geen function overloading :) Verder kan het prima zijn dat die functie naam historisch gezien zo klein *moest* zijn. Daar is bijvoorbeeld dit over te vinden:
Although there is no restriction on the length of identifiers in the Standard, this is a point that needs a bit of explanation. In Old C, as in Standard C, there has never been any restriction on the length of identifiers. The problem is that there was never any guarantee that more than a certain number of characters would be checked when names were compared for equality—in Old C this was eight characters, in Standard C this has changed to 31.

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
PrisonerOfPain schreef op vrijdag 08 augustus 2014 @ 16:30:
[...]


C heeft geen function overloading :) Verder kan het prima zijn dat die functie naam historisch gezien zo klein *moest* zijn. Daar is bijvoorbeeld dit over te vinden:


[...]
Ah... dat was ik even vergeten.

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 19:10
PrisonerOfPain schreef op vrijdag 08 augustus 2014 @ 16:30:
C heeft geen function overloading :) Verder kan het prima zijn dat die functie naam historisch gezien zo klein *moest* zijn. Daar is bijvoorbeeld dit over te vinden:
Persoonlijk ben ik nooit een omgeving tegengekomen waarin die beperking daadwerkelijk geldt, en ik programmeer al een jaar of 15 in C. Meestal zijn dit soort functies geschreven door figuren die in de jaren '70 hebben leren programmeren en nooit met hun tijd zijn meegegaan.

Aangezien de directory die gelinkt wordt in 2001 voor het laatst geüpdatet is, en het universiteitswebsite betreft (academische code wordt altijd eindeloos gecopy/paste) wil ik best geloven dat die code uit een ander tijdperk stamt. :P Neemt niet weg dat dit gewoon heel slecht is, en je er heden ten dage echt niet meer mee wegkomt om in een functie zonder commentaar zulke obscure identifiers te gebruiken.

Acties:
  • 0 Henk 'm!

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

BikkelZ

CMD+Z

Bah. Moet een nieuwe versie van een framework wat mijn collega gebouwd heeft inladen in het hoofdproject en het mag natuurlijk niet gewoon zomaar werken. Nee extra build scripts toevoegen die waarschijnlijk maar op één computer werken (de zijne). Heb nu ongeveer zes uur van mijn leven verknald met iets wat me normaal vijf minuten kost.

iOS developer


Acties:
  • 0 Henk 'm!

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

RayNbow

Kirika <3

Soultaker schreef op vrijdag 08 augustus 2014 @ 18:24:
Neemt niet weg dat dit gewoon heel slecht is, en je er heden ten dage echt niet meer mee wegkomt om in een functie zonder commentaar zulke obscure identifiers te gebruiken.
Ik vermoed dat de programmeurs geinspireerd waren door BLAS. Daarin heb je ook namen als axpy. :p

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Soultaker schreef op vrijdag 08 augustus 2014 @ 18:24:
[...]

Aangezien de directory die gelinkt wordt in 2001 voor het laatst geüpdatet is, en het universiteitswebsite betreft (academische code wordt altijd eindeloos gecopy/paste) wil ik best geloven dat die code uit een ander tijdperk stamt. :P
De eerste druk van Numerical Recipes stamt uit '88.
Neemt niet weg dat dit gewoon heel slecht is, en je er heden ten dage echt niet meer mee wegkomt om in een functie zonder commentaar zulke obscure identifiers te gebruiken.
Oh dat ben ik helemaal met je eens - en ze hadden 't de 2e of 3e druk wat mij betreft ook wel aan mogen passen. En zeker tegenwoordig zou die functie gewoon sparseMatrixVectorMultiply of iets dergelijks moeten heten. Maar goed, de context van iedere functie is z'n historie.

[ Voor 3% gewijzigd door PrisonerOfPain op 08-08-2014 19:08 ]


Acties:
  • 0 Henk 'm!

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
Korben schreef op vrijdag 08 augustus 2014 @ 14:05:
[...]

20 uur?! Ben je via Zuid-Afrika gevlogen of zo?
Van deur tot deur heb ik er 24 uur over gedaan om in North Carolina te geraken :-)
Om 6:45 de trein in Nijmegen naar Schiphol, om 11:00 steeg ie op met vertraging richting JFK. Wind tegen en om 19:00 GMT+1 op JFK. Daar overstap gemist naar Charlotte. Om 23:00 vlucht naar Atlanta. Om 3:00 vlucht naar Charlotte, om 6:00 taxi naar hotel in the middle of nowhere.

Daar was het toen 0:00 lokale tijd, dus tijd zat om even te douchen en daarna nog aan het werk te gaan. In Nederland was de dag alweer begonnen immers ;-)

Vliegen is kut. Maar boot is langzamer.

[ Voor 12% gewijzigd door armageddon_2k1 op 08-08-2014 22:22 ]

Engineering is like Tetris. Succes disappears and errors accumulate.


Acties:
  • 0 Henk 'm!

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

RayNbow

Kirika <3

Vandaag weer eens Windows 98 gestart...

Afbeeldingslocatie: http://tweakers.net/ext/f/sb2mB13w4mUQLD6kqkVyF5wb/full.jpg

:p

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
armageddon_2k1 schreef op vrijdag 08 augustus 2014 @ 22:19:
Vliegen is kut. Maar boot is langzamer.
Vliegen kan best nice zijn als je binnen europa vliegt en goede connecties van/ naar het vliegveld hebt. Geen extra bagage mee neemt, de app van de vliegtuigmaatschappij gebruikt voor je boardingpass, je op tijd op het vliegveld bent (eg. half uur / uur) en je een chille stoel hebt.

Acties:
  • 0 Henk 'm!

  • vpm
  • Registratie: December 2010
  • Laatst online: 19:25

vpm

Think, tinker, tank

Na 5+ jaar met PHP gewerkt te hebben, besluit ik bij deze over te stappen op Ruby (+ RoR).

Brand los

Acties:
  • 0 Henk 'm!

  • Gleighton
  • Registratie: November 2008
  • Niet online
RoR, is dat niet van vroeger :+. Dacht dat alle webhipsers daarna naar nodeJS verhuisd waren om nu alles weer opnieuw te doen in Go :D

Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 00:51

F.West98

Alweer 16 jaar hier

}:|
Ik net alles omgebouwd naar getters en setters en ik merkte een lichte vertraging op plekken...
http://developer.android....-tips.html#GettersSetters

Blijkt Android het af te raden om getters en setters te gebruiken :+

Ik denk dat die lag niet hieraan ligt, though, want zo veel kan dat toch ook weer niet zijn...

[ Voor 17% gewijzigd door F.West98 op 08-08-2014 23:45 ]

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!

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

BikkelZ

CMD+Z

Gleighton schreef op vrijdag 08 augustus 2014 @ 23:17:
RoR, is dat niet van vroeger :+. Dacht dat alle webhipsers daarna naar nodeJS verhuisd waren om nu alles weer opnieuw te doen in Go :D
Dat betekent dat RoR nu net een beetje volwassen is.

iOS developer


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:18

Creepy

Tactical Espionage Splatterer

Avoid Internal Getters/Setters
Is iets anders dan "Avoid getters/setters" ;)

En vergeet deze niet
Before you start optimizing, make sure you have a problem that you need to solve. Make sure you can accurately measure your existing performance, or you won't be able to measure the benefit of the alternatives you try.

[ Voor 58% gewijzigd door Creepy op 09-08-2014 00:51 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 00:51

F.West98

Alweer 16 jaar hier

De meeste getters die ik gebruik zijn inderdaad internal, vaak vanuit een of andere listener (dan implementeer ik de interface in de class, ipv inline class of losse class te gebruien).
En het meten van de performance is niet moeilijk, ik krijg consequent de melding dat hij 33 frames heeft geskipped. :+
Ik vermoed dat dat aan de hoge hoeveelheid views die ik in één keer aanmaak ligt...
Misschien wat doen aan threading.

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!

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

Matis

Rubber Rocket

Toch vind ik het soms fijn om ook interne variabelen via getters en setters te benaderen, omdat je dan altijd controle houdt over pre en postcondities en dat sommige wijzigingen in interne variabelen side effect vereisen.

Misschien dat de impact binnen C(++) niet zo groot is als bij Android, maar ik ben een fervent voorstander van getters en setters. Ook voor interne variabelen.

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


Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 00:51

F.West98

Alweer 16 jaar hier

Ik inmiddels ook trouwens. Heel handig om van een setter direct een soort listener te maken waarna je andere dingen kan aanroepen, zonder dat op elke plek waar de setter wordt aangeroepen te hoeven implementeren.
Beetje dit dus:
Java:
1
2
3
4
5
6
7
8
9
10
11
class Foo {
    private String someProperty;
    public String getSomeProperty() {
        return someProperty;
    }
    public void setSomeProperty(String prop) {
        someProperty = prop;
        refreshUI();
    }
    /*******/
}

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!

  • Gropah
  • Registratie: December 2007
  • Niet online

Gropah

Admin Softe Goederen

Oompa-Loompa 💩

Android werkt via een VM en dat heeft voor en nadelen. Een groot voordeel is dat het overal werkt en zich (als het goed is) overal hetzelfde gedraagt. Daarnaast is het over het algemeen een stukje veiliger (omdat je als het goed is alleen dingen binnen die VM kan wijzigen). Nadeel is dat een VM zorgt voor een grote performance hit, omdat je een machine emuleert en daarbinnen je werk doet. Dat is over het algemeen een stuk trager dan native commands doen. Schijnbaar is het dus zo bij android dat een function routine van 1 regelcode ongeveer 3x zo traag is als dezelfde regel code direct invoegen.

En met nu ben ik niet helemaal thuis in android, maar ik kan mij voorstellen dat je niet voor elke waarde die je veranderd een UI refresh wil doen, dus ik zou er mee oppassen, maar ja dat is inderdaad handig.

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 20:35
F.West98 schreef op zaterdag 09 augustus 2014 @ 08:44:
[...]
En het meten van de performance is niet moeilijk, ik krijg consequent de melding dat hij 33 frames heeft geskipped. :+
Ik vermoed dat dat aan de hoge hoeveelheid views die ik in één keer aanmaak ligt...
Misschien wat doen aan threading.
Sowieso verstandig zoveel mogelijk van de main thread af te halen in Android. Eigenlijk op elk mobiel platform wel, behalve wellicht iOS, geen ervaring mee, maar vermoed daar ook wel. Gewoon wat AsyncTasks rondstrooien ^^

[ Voor 11% gewijzigd door Caelorum op 09-08-2014 09:25 ]


Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 00:51

F.West98

Alweer 16 jaar hier

Ja dat was ik ook van plan :P
Ik heb nu een builder die 5*7*±10 = ±350 views aanmaakt, en die is nogal traag O-)
Op mobiel is maar 1/5e ervan direct zichtbaar, op tablets wel alles, maar als ik dat even wat omgooi (dus views maken in Async en dan returnen en uiteindelijk ééntje (container) in de UI stoppen. Denk ik iets sneller.

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!

  • incaz
  • Registratie: Augustus 2012
  • Laatst online: 15-11-2022
F.West98 schreef op zaterdag 09 augustus 2014 @ 09:18:
Java:
1
2
3
4
5
6
class Foo {
    public void setSomeProperty(String prop) {
        refreshUI();
    }
    /*******/
}
Advies: bouw ook een mechanisme in om de refreshes te bufferen / delayen of wat dan ook. Het kan wel echt tot flinke performanceproblemen leiden als je 5 properties wilt updaten en er dus 5 keer de UI gerefresht wordt, terwijl het maar om 1 handeling gaat.

Never explain with stupidity where malice is a better explanation


Acties:
  • 0 Henk 'm!

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

RayNbow

Kirika <3

Gropah schreef op zaterdag 09 augustus 2014 @ 09:19:
Nadeel is dat een VM zorgt voor een grote performance hit, omdat je een machine emuleert en daarbinnen je werk doet. Dat is over het algemeen een stuk trager dan native commands doen.
Dit hangt natuurlijk ook van de VM af en of het de boel tijdens runtime nog compileert.
incaz schreef op zaterdag 09 augustus 2014 @ 10:02:
[...]


Advies: bouw ook een mechanisme in om de refreshes te bufferen / delayen of wat dan ook. Het kan wel echt tot flinke performanceproblemen leiden als je 5 properties wilt updaten en er dus 5 keer de UI gerefresht wordt, terwijl het maar om 1 handeling gaat.
Of maak gebruik van een framework als Reactive Extensions en modeleer updates als een observable. Vervolgens kun je bijv. de throttle operators gebruiken. :)

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 00:51

F.West98

Alweer 16 jaar hier

incaz schreef op zaterdag 09 augustus 2014 @ 10:02:
[...]


Advies: bouw ook een mechanisme in om de refreshes te bufferen / delayen of wat dan ook. Het kan wel echt tot flinke performanceproblemen leiden als je 5 properties wilt updaten en er dus 5 keer de UI gerefresht wordt, terwijl het maar om 1 handeling gaat.
Het gaat hier om de selectie van de dropdown, en elke keuze moet weer nieuwe info van internet (of uit DB) halen (een knopje is een extra handeling, en dat is niet gewenst). Als er nog géén keuze is gemaakt in de dropdown (de eerste keer dat het wordt getoond) wordt er ook voorkomen dat er iets wordt geladen (om onnodige falende requests te voorkomen).

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: 20:35
Weet iemand hier nog een goede bron voor het gebruik van profilers en tools voor multithreading in c++11 en linux? Ik kan er wel een beetje mee overweg, maar heb het idee dat ik nog het een en ander mis (nogal veel ^^) en kan wel een goede lap tekst gebruiken die het een en ander uitlegt en verbanden legt.

Acties:
  • 0 Henk 'm!

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

RayNbow

Kirika <3

F.West98 schreef op zaterdag 09 augustus 2014 @ 10:34:
[...]

Het gaat hier om de selectie van de dropdown, en elke keuze moet weer nieuwe info van internet (of uit DB) halen (een knopje is een extra handeling, en dat is niet gewenst). Als er nog géén keuze is gemaakt in de dropdown (de eerste keer dat het wordt getoond) wordt er ook voorkomen dat er iets wordt geladen (om onnodige falende requests te voorkomen).
Misschien interessant om te kijken:

(weliswaar in JS, maar Rx is er ook voor .NET en Java)

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Matis schreef op zaterdag 09 augustus 2014 @ 09:03:
Toch vind ik het soms fijn om ook interne variabelen via getters en setters te benaderen, omdat je dan altijd controle houdt over pre en postcondities en dat sommige wijzigingen in interne variabelen side effect vereisen.
Daar gaat het fout.

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 20:35
Ik denk ook niet dat ik het in een getter/setter zou oplossen, maar dan echt een aparte functie die niet gebonden is aan een variabele voor zou maken die alles regelt.

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Caelorum schreef op zaterdag 09 augustus 2014 @ 12:20:
Ik denk ook niet dat ik het in een getter/setter zou oplossen, maar dan echt een aparte functie die niet gebonden is aan een variabele voor zou maken die alles regelt.
Ik heb getters/setters nooit begrepen tbh, 9/10 keer zijn ze triviaal en de keer dat ze dat niet zijn hebben ze side-effects die je d'r niet wilt hebben. Een van de argumenten die je nog wel eens hoort is "maar je kunt geen variabelen hebben in je interface" oid, maar dat is natuurlijk ook gewoon onzin. Als je dat nodig hebt in een interface heb je je probleem verkeerd gemoddeled. Hou dingen gewoon lekker expliciet, dat is duidelijker voor iedereen.

[ Voor 4% gewijzigd door PrisonerOfPain op 09-08-2014 12:24 ]


Acties:
  • 0 Henk 'm!

  • incaz
  • Registratie: Augustus 2012
  • Laatst online: 15-11-2022
rx looks cool. Ik begin nu pas echt de waarde van functioneel programmeren te zien. Eigenlijk best jammer dat je daar zo weinig mee te maken krijgt als je daar niet echt naar op zoek gaat.

Overigens: ik zie werkelijk niet waarom je geen side effects zou moeten hebben binnen je object - da's toch het hele punt van het programmeren met states? Er is niks mee om een setter te hebben die naast de directe property ook een flag 'changed' zet, en het is dan ook volkomen logisch om de interne call via de setter te laten lopen.

Mischien dat een algeheel andere aanpak ook kan, maar binnen OO is er niets mis met die werkwijze. En je kunt de getters en setters ook gewoon private houden als je dat wilt.

Never explain with stupidity where malice is a better explanation


Acties:
  • 0 Henk 'm!

  • F.West98
  • Registratie: Juni 2009
  • Laatst online: 00:51

F.West98

Alweer 16 jaar hier

Ik vond getters/setters eerst ook onzin, en op zich gebruik ik het met .NET applications (web) nauwelijks, maar nu ik states moet onthouden e.d. is het heel handig. Nog niet zozeer getters, maar met name setters zijn handig, bijvoorbeeld als je dus een UI change nodig hebt. Dan kan je de variabele wel direct setten en de UI change los aanroepen, maar dan moet je op 20 plekken dingen aanpassen als die UI change verandert. Dan is het handiger om dat in een setter te hebben.
En met lombok (voor java) is het heel handig om ook gewoon @Data op de class te doen die dan direct getters en setters voor alle properties aanmaakt, en losse setters kan je overriden met je eigen implementatie.

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!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

PrisonerOfPain schreef op zaterdag 09 augustus 2014 @ 12:23:
[...]


Ik heb getters/setters nooit begrepen tbh, 9/10 keer zijn ze triviaal en de keer dat ze dat niet zijn hebben ze side-effects die je d'r niet wilt hebben.
Ik begrijp dat jij wel een fan bent van het refactoren van de access naar dat soort variabelen? Want er komt op een gegeven moment dat je toch iets meer wil doen dan puur die variabele ophalen of wegschrijven, waarna je dus al die dingen moet gaan zitten omzetten.
Een van de argumenten die je nog wel eens hoort is "maar je kunt geen variabelen hebben in je interface"
Dat is dan ook in het algemeen niet echt een goed argument maar meer manier om om een beperking van een taal heen te werken.

[ Voor 18% gewijzigd door .oisyn op 09-08-2014 13:18 ]

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!

  • t-town
  • Registratie: Juni 2007
  • Laatst online: 13:25
F.West98 schreef op zaterdag 09 augustus 2014 @ 09:18:
Java:
1
2
3
4
5
6
class Foo {
    public void setSomeProperty(String prop) {
        someProperty = prop;
        refreshUI();
    }
}
Dan lijkt me dat een Observer toch voor betere koppeling zorgt hoor.

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:26
t-town schreef op zaterdag 09 augustus 2014 @ 13:30:
[...]


Dan lijkt me dat een Observer toch voor betere koppeling zorgt hoor.
Meestal wil je eerder een betere ontkoppeling. :P

Een observer is in .NET eigenlijk wel wat overkill vind ik; dan kan je beter hetzelfde bekomen door met events te werken. (Dan heb je eigenlijk ook een soort van observer pattern, maar geimplementeerd dmv first class citizens van .NET )

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • t-town
  • Registratie: Juni 2007
  • Laatst online: 13:25
Ik had het dan ook over betere koppeling, niet meer koppeling. :+

Acties:
  • 0 Henk 'm!

  • HMS
  • Registratie: Januari 2004
  • Laatst online: 21-08 23:06

HMS

F.West98 schreef op zaterdag 09 augustus 2014 @ 09:18:
Beetje dit dus:
Java:
1
2
3
4
5
6
7
8
9
10
11
class Foo {
    private String someProperty;
    public String getSomeProperty() {
        return someProperty;
    }
    public void setSomeProperty(String prop) {
        someProperty = prop;
        refreshUI();
    }
    /*******/
}
Is MVC een vies woord op Android ofzo?

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 20:35
whoami schreef op zaterdag 09 augustus 2014 @ 14:24:
[...]
Een observer is in .NET eigenlijk wel wat overkill vind ik; dan kan je beter hetzelfde bekomen door met events te werken. (Dan heb je eigenlijk ook een soort van observer pattern, maar geimplementeerd dmv first class citizens van .NET )
Ehh, ik dacht dat ObservableCollection in het .NET framework zat sinds 3.0? En die maakt uiteraard onderwater net zo goed gebruik van events, dus waarom je eigen dingen gaan doen als je ook een bestaand iets kan gebruiken, mits het precies doet wat je wilt?
HMS schreef op zaterdag 09 augustus 2014 @ 14:33:
[...]
Is MVC een vies woord op Android ofzo?
Mja, het is niet zo super makkelijk te gebruiken als MVVM in MS frameworks :)

[ Voor 32% gewijzigd door Caelorum op 09-08-2014 14:48 ]


Acties:
  • 0 Henk 'm!

  • Ryur
  • Registratie: December 2007
  • Laatst online: 18:30
Caelorum schreef op zaterdag 09 augustus 2014 @ 14:46:
Mja, het is niet zo super makkelijk te gebruiken als MVVM in MS frameworks :)
Eigenlijk kan je toch overal wel MVVM gebruiken?
Zou mij niks verbazen als MVVM voor Android bestaat (note: ik ben zelf (nog) geen Android programmeur, ben het wel aan het leren, straks maar weer een hoofdstuk doorwerken).

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
.oisyn schreef op zaterdag 09 augustus 2014 @ 13:16:
Ik begrijp dat jij wel een fan bent van het refactoren van de access naar dat soort variabelen? Want er komt op een gegeven moment dat je toch iets meer wil doen dan puur die variabele ophalen of wegschrijven, waarna je dus al die dingen moet gaan zitten omzetten.
In verhouding tot hoe vaak je die refactoring uberhaupt moet doen valt dat reuze mee; als het om een class gaat die intern aan het systeem is, is het meestal beperkt tot een klein aantal files. Zo niet, bite the bullet. Meestal gaan die setters je dan toch niet helpen (tenzij je caching oid toe wilt voegen, maar dat kun je wmbt ook beter expliciet doen).

Als het gaat om een externe interface van een systeem leg het de abstractie meestal op het niveau van de data transformatie en pass ik inderdaad het liefste structs met publics.
.oisyn schreef op zaterdag 09 augustus 2014 @ 13:16:
Dat is dan ook in het algemeen niet echt een goed argument maar meer manier om om een beperking van een taal heen te werken.
Waarop ik zeg dat het abstractie niveau wat je plaatst gewoon op de verkeerde plek ligt.

[ Voor 15% gewijzigd door PrisonerOfPain op 09-08-2014 14:56 ]


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:26
Caelorum schreef op zaterdag 09 augustus 2014 @ 14:46:
[...]

Ehh, ik dacht dat ObservableCollection in het .NET framework zat sinds 3.0? En die maakt uiteraard onderwater net zo goed gebruik van events, dus waarom je eigen dingen gaan doen als je ook een bestaand iets kan gebruiken, mits het precies doet wat je wilt?
Waarom zou ik een ObservableCollection moeten gebruiken, als ik gewoon 'iets' wil doen als een of andere property wijzigt, zoals in het eerder aangehaalde code-voorbeeld ?

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 15-09 16:19

alienfruit

the alien you never expected

Simpel begin. Verder kan je natuurlijk nog voor de ouderwetse methode gaan en beginUpdate/endUpdate met een tellertje waar je pas bij 0 weer gaat renderen.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
class Foo {
    private String someProperty;
    public String getSomeProperty() {
        return someProperty;
    }    

    public void setSomeProperty(String prop) {
        if (!someProperty.equals(prop) {
              refreshUI();
        }
    }
    /*******/
}
HMS schreef op zaterdag 09 augustus 2014 @ 14:33:
Is MVC een vies woord op Android ofzo?

[ Voor 14% gewijzigd door alienfruit op 09-08-2014 15:22 ]


Acties:
  • 0 Henk 'm!

  • Gamebuster
  • Registratie: Juli 2007
  • Laatst online: 15-09 23:08
YouTube: SURPRISE MILK PRANK! (Slow Mo Prank Show)

Samenvatting filmpje:
JavaScript:
1
2
3
4
5
6
var sodaCan = new CocaColaCan();
sodaCan.replaceContent("cola", "milk");
var actor = new Actor();
var camera = new HighSpeedCamera();
camera.pointAt(actor);
actor.consume(sodaCan);

[ Voor 12% gewijzigd door Gamebuster op 09-08-2014 15:35 ]

Let op: Mijn post bevat meningen, aannames of onwaarheden


Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 15-09 05:50

Douweegbertje

Wat kinderachtig.. godverdomme

Kan iemand eens een korte samenvatting geven waar het nu om gaat? Ik bedoel, het gaat toch nu gewoon om het feit dat je een class hebt, waarbij je bijvoorbeeld een waarde aan het object wilt mee geven?
Ik ben sowieso een PHP'er, maar op de één of andere manier mis ik heel het 'doel' van deze discussie :+

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Douweegbertje schreef op zaterdag 09 augustus 2014 @ 15:40:
Kan iemand eens een korte samenvatting geven waar het nu om gaat? Ik bedoel, het gaat toch nu gewoon om het feit dat je een class hebt, waarbij je bijvoorbeeld een waarde aan het object wilt mee geven?
Ik ben sowieso een PHP'er, maar op de één of andere manier mis ik heel het 'doel' van deze discussie :+
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Foo
{
    public $bar;
    public $foo;
}

// versus

class Foo
{
    public function setFoo($foo) { $this->foo = $foo; }
    public function getFoo() { return $this->foo; }

    public function setBar($bar) { $this->bar = $bar; }
    public function getBar() { return $this->bar; }

    private $foo;
    private $bar;
}


In verschillende situaties, zoals wanneer het inderdeel is van een interface, en/of bepaalde dingen impliciet in de getter/setters gedaan moeten worden of daarbuiten, etc.

Waar ik persoonlijk getters/setters voor gebruik is om bepaalde data te packen - eg. dingen die in hetzelfde bitfield moeten of dingen die tijdelijk gecompressed worden. Maar dan heb ik die liever apart als getter/setter of pack/unpack oid dan dat het onderdeel is van de normale accessors en dus amper opvalt.

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 20:35
whoami schreef op zaterdag 09 augustus 2014 @ 15:20:
[...]
Waarom zou ik een ObservableCollection moeten gebruiken, als ik gewoon 'iets' wil doen als een of andere property wijzigt, zoals in het eerder aangehaalde code-voorbeeld ?
Ohja, beetje kort door de bocht :D Ik ging er even vanuit dat het daadwerkelijk een collection was ^^
Ryur schreef op zaterdag 09 augustus 2014 @ 14:55:
[...]
Eigenlijk kan je toch overal wel MVVM gebruiken?
Zou mij niks verbazen als MVVM voor Android bestaat (note: ik ben zelf (nog) geen Android programmeur, ben het wel aan het leren, straks maar weer een hoofdstuk doorwerken).
Het kan en er bestaan ook wat pogingen voor Android, maar juist door zaken als Data Binding werkt het zo enorm fijn in WP7/8 en WPF. De ondersteuning in het framework is eigenlijk zo goed dat elke poging op Android gewoon in het niets valt met "het echte werk".

Acties:
  • 0 Henk 'm!

  • Rutix
  • Registratie: Augustus 2009
  • Laatst online: 05-09-2024
F.West98 schreef op zaterdag 09 augustus 2014 @ 13:12:
Ik vond getters/setters eerst ook onzin, en op zich gebruik ik het met .NET applications (web) nauwelijks, maar nu ik states moet onthouden e.d. is het heel handig. Nog niet zozeer getters, maar met name setters zijn handig, bijvoorbeeld als je dus een UI change nodig hebt. Dan kan je de variabele wel direct setten en de UI change los aanroepen, maar dan moet je op 20 plekken dingen aanpassen als die UI change verandert. Dan is het handiger om dat in een setter te hebben.
En met lombok (voor java) is het heel handig om ook gewoon @Data op de class te doen die dan direct getters en setters voor alle properties aanmaakt, en losse setters kan je overriden met je eigen implementatie.
Dus je gebruikt geen properties in .NET? Dat zijn eigenlijk ook getters/setters ;). (Niet helemaal maar iets wat je met een getter en setter kunt kun je ook met een property).

Nothing to see here!


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
PrisonerOfPain schreef op zaterdag 09 augustus 2014 @ 16:00:
[...]


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Foo
{
    public $bar;
    public $foo;
}

// versus

class Foo
{
    public function setFoo($foo) { $this->foo = $foo; }
    public function getFoo() { return $this->foo; }

    public function setBar($bar) { $this->bar = $bar; }
    public function getBar() { return $this->bar; }

    private $foo;
    private $bar;
}


In verschillende situaties, zoals wanneer het inderdeel is van een interface, en/of bepaalde dingen impliciet in de getter/setters gedaan moeten worden of daarbuiten, etc.

Waar ik persoonlijk getters/setters voor gebruik is om bepaalde data te packen - eg. dingen die in hetzelfde bitfield moeten of dingen die tijdelijk gecompressed worden. Maar dan heb ik die liever apart als getter/setter of pack/unpack oid dan dat het onderdeel is van de normale accessors en dus amper opvalt.
Maak de setters dan ook fluent door ze $this te laten returnen d:)b .

Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 15-09 05:50

Douweegbertje

Wat kinderachtig.. godverdomme

PrisonerOfPain schreef op zaterdag 09 augustus 2014 @ 16:00:
[...]


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Foo
{
    public $bar;
    public $foo;
}

// versus

class Foo
{
    public function setFoo($foo) { $this->foo = $foo; }
    public function getFoo() { return $this->foo; }

    public function setBar($bar) { $this->bar = $bar; }
    public function getBar() { return $this->bar; }

    private $foo;
    private $bar;
}


In verschillende situaties, zoals wanneer het inderdeel is van een interface, en/of bepaalde dingen impliciet in de getter/setters gedaan moeten worden of daarbuiten, etc.

Waar ik persoonlijk getters/setters voor gebruik is om bepaalde data te packen - eg. dingen die in hetzelfde bitfield moeten of dingen die tijdelijk gecompressed worden. Maar dan heb ik die liever apart als getter/setter of pack/unpack oid dan dat het onderdeel is van de normale accessors en dus amper opvalt.
Ok, ja ik gebruik het niet anders om het private te houden, en middels get/set te beheren. Daarbij zijn mijn classes meestal zo dat ik vaak geen gets hoef te gebruiken. Eigenlijk gebruik ik meer de sets om waardes door te geven om vervolgens een fatsoenlijk object uiteindelijk terug te krijgen.
Naar mijn mening; als het allemaal public is, wordt het een zootje.. en dat is dan vooral met PHP...

Meestal is het iets als het volgende, en daarbij ook gelijk mijn probleem vaak;

PHP:
1
2
3
4
$berekening = new DataRequest();
$berekening->setKantoor('id');
$berekening->setBepaaldeWaarde('blaat');
$berekening->Query();


Toevallig bij deze class los ik errors e.d. op in de class zelf, dus kan ik in de code nog een check doen of het true/false is, maar meestal laat ik het doorlopen en handel ik per 'functie' af of alles aanwezig is om de functie te doen.

Ik heb hier nooit echt een lekkere manier voor gevonden, maar het volgende vind ik namelijk best ruk:

PHP:
1
2
3
4
5
6
if(!$brekening->setKantoor('id')
{
  //error
}
if(....
....


Dus wordt het meestal iets als dit;

PHP:
1
2
3
4
5
6
7
8
9
$berekening = new DataRequest();
$berekening->setKantoor('id');
$berekening->setBepaaldeWaarde('blaat');
$berekening->Query(); 
$errors = $berekening->getErrors();

if($errors)
{
 //error log


Misschien gelijk wel weer totaal offtopic om hier over te 'ranten', maar je moet eigenlijk of; alles doorlopen om vervolgens aan het einde de exceptions te laten zien, of voor elke call een check doen. Nu vang ik dat dan af door bij elke functie te kijken of er een exceptie is en/of de verplichte waardes aanwezig zijn om de functie uit te voeren.. maar het zou makkelijk moeten zijn :+


dit kan dus eigenlijk niet
PHP:
1
2
3
if($error = $blaat->getError())
{
 // handle error met $error


Dus dan moet je eigenlijk eerst een check doen, en dan pas een get. Terwijl het ideaal zou zijn om een call te doen en bij !false direct te return in een var te hebben..

[ Voor 5% gewijzigd door Douweegbertje op 09-08-2014 16:39 ]


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Waarom niet iets als:

PHP:
1
2
3
4
5
6
7
8
try {
  $berekening = new DataRequest();
  $berekening->setKantoor('id');
  $berekening->setBepaaldeWaarde('blaat');
  $berekening->Query(); 
} catch (KantoorException $e) { ... }
catch (BepaaldeWaardeException $e) { ... }
catch (QueryException $e} { ... }


En elke setter throwt dus z'n eigen exception?

Als is alles ineens afhandelen zoals je nu doet ook wel mooi, want dan kun je het ineens aan de user tonen. Maar als het om een webapplicatie gaat kun je dan ook client-side al doen.
Douweegbertje schreef op zaterdag 09 augustus 2014 @ 16:36:

dit kan dus eigenlijk niet
PHP:
1
2
3
if($error = $blaat->getError())
{
 // handle error met $error


Dus dan moet je eigenlijk eerst een check doen, en dan pas een get. Terwijl het ideaal zou zijn om een call te doen en bij !false direct te return in een var te hebben..
Zoiets:

PHP:
1
2
3
if ( ($error = $blaat->getError()) && $error !== false) {
  echo $error;
}

[ Voor 32% gewijzigd door HuHu op 09-08-2014 16:45 ]


Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 15-09 05:50

Douweegbertje

Wat kinderachtig.. godverdomme

hm ja dat moet ik dan maar eens proberen maar ik weet nog niet precies of ik het goed ga krijgen. Het probleem is dat we dikke berekeningen doen en de code nogal legacy is :+
Maar mijn 'probleem' was meer dat je dus ook echt een exepction moet gebruiken terwijl je dat vrij simpel anders kon doen door te zien of er iets wordt gereturned.

Stel ik wil bepaalde data hebben dan zou je dat dan zo moeten doen.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$blaat = getData();
if(!$blaat)
{
// niet gelukt dus

/***********************/

//simpeler

if(!$blaat = getData())
{
 // error
}
else
{
// blaat is aanwezig


maar laatste voorbeeld gaat dus niet..

Zijn andere manieren, maar wat ik nu even neerzet is één simpele lijn code, die imo iedereen wel snapt.

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
HuHu schreef op zaterdag 09 augustus 2014 @ 16:41:
En elke setter throwt dus z'n eigen exception?
Wtf? Wat is er mis met een validate() method die aangeeft wat er mis is. Exceptions in setters, het moet niet gekker worden.

Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 15-09 05:50

Douweegbertje

Wat kinderachtig.. godverdomme

setters is misschien even de verkeerde term, maar stel dat ik een bepaalde value wil setten, bijv een kantoor. Dan kan ik nog even zien of dat kantoor echt bestaat. Daarbij is PHP niet zo tof nog met checken van data types, dus als ik een int wil, en het is een string.. dan kan ik alsnog een fout geven... Geen idee hoe dat bij andere talen gaat, maar volgens mij krijg je dan toch vanuit het "systeem" direct een error terug?

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
PrisonerOfPain schreef op zaterdag 09 augustus 2014 @ 16:56:
[...]


Wtf? Wat is er mis met een validate() method die aangeeft wat er mis is. Exceptions in setters, het moet niet gekker worden.
Heb je gelijk in. Het zou waarschijnlijk beter zijn om het Wikipedia: Builder pattern te gebruiken.
Douweegbertje schreef op zaterdag 09 augustus 2014 @ 16:53:
hm ja dat moet ik dan maar eens proberen maar ik weet nog niet precies of ik het goed ga krijgen. Het probleem is dat we dikke berekeningen doen en de code nogal legacy is :+
Maar mijn 'probleem' was meer dat je dus ook echt een exepction moet gebruiken terwijl je dat vrij simpel anders kon doen door te zien of er iets wordt gereturned.

Stel ik wil bepaalde data hebben dan zou je dat dan zo moeten doen.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$blaat = getData();
if(!$blaat)
{
// niet gelukt dus

/***********************/

//simpeler

if(!$blaat = getData())
{
 // error
}
else
{
// blaat is aanwezig


maar laatste voorbeeld gaat dus niet..

Zijn andere manieren, maar wat ik nu even neerzet is één simpele lijn code, die imo iedereen wel snapt.
Dat laatste voorbeeld kun je toch gewoon omdraaien:

PHP:
1
2
3
4
5
if ( ($blaat = getData()) && $blaat) {
  // $blaat is aanwezig
} else {
  // error
}

[ Voor 55% gewijzigd door HuHu op 09-08-2014 17:09 ]


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 20:35
PrisonerOfPain schreef op zaterdag 09 augustus 2014 @ 16:56:
[...]
Wtf? Wat is er mis met een validate() method die aangeeft wat er mis is. Exceptions in setters, het moet niet gekker worden.
Met welke programmeertaal ben jij eigenlijk begonnen? Je kan daar vaak best veel uit halen over hoe iemand nu programmeert. Blijkbaar zijn bepaalde zaken/ideeen best moeilijk af te leren :)

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Caelorum schreef op zaterdag 09 augustus 2014 @ 17:29:
[...]

Met welke programmeertaal ben jij eigenlijk begonnen? Je kan daar vaak best veel uit halen over hoe iemand nu programmeert. Blijkbaar zijn bepaalde zaken/ideeen best moeilijk af te leren :)
VBA -> PHP -> C++ :)

VBA is zo kort geweest dat 't niet zo veel invloed heeft gehad, 7 jaar PHP & 8 jaar C++ wel :). Waar het in mijn programmeer stijl hopelijk op neer komt is "geen verrassingen" en zo veel mogelijk dingen expliciet. Exceptions in setters zijn daar imho geen goed voorbeeld van. Validatie is dan impliciet en onverwacht. Wie verwacht er nu eerlijk dat een setter een exception gooit? Natuurlijk - in een taal met exception support kan iedere functie throwen.

De aanpak heeft een aantal problemen, zo kun je met de try/catch combo zoals 'ie gepost is maar een error tegelijk afvangen dus je zou het al anders op moeten schrijven (eg, iedere setter in z'n eigen try/catch blok) en je het nu de validatie over je hele class uitgesmeerd ipv dat het netjes op een plek staat. Sterker nog, zelfs de error handling staat overal over uitgesmeerd / word overal herhaalt.

Dit is toch verre van leesbaar?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$berekening = new DataRequest();

try {
  $berekening->setKantoor('id');
} catch (KantoorException $e) { appendUserError($e); }

try {
  $berekening->setBepaaldeWaarde('blaat');
} catch (BepaaldeWaardeException $e) { appendUserError($e); }

try {
  $berekening->Query(); 
} catch (QueryException $e} { abortLogicError($e); }


In plaats van
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
$berekening = new DataRequest();
$berekening->kantoor = 'id';
$berekening->bepaaldeWaarde = 'blaat';

$errors = null;
if(!$berekening->validate(&$errors)) {
  appendLogicErrors($errors);
} else {
  try { // deze moet waarschijnlijk blijven 
    $berekening->query();
  } catch(QueryException $e) { printLogicError($e); }
}

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

PrisonerOfPain schreef op zaterdag 09 augustus 2014 @ 14:55:
[...]


In verhouding tot hoe vaak je die refactoring uberhaupt moet doen valt dat reuze mee; als het om een class gaat die intern aan het systeem is, is het meestal beperkt tot een klein aantal files. Zo niet, bite the bullet.
Of je hebt op voorhand gewoon getters en setters gemaakt en is het vervolgens appeltje-eitje om de boel aan te passen. Het is maar hoeveel manuren je wilt wasten...
PrisonerOfPain schreef op zaterdag 09 augustus 2014 @ 18:07:
Dit is toch verre van leesbaar?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$berekening = new DataRequest();

try {
  $berekening->setKantoor('id');
} catch (KantoorException $e) { appendUserError($e); }

try {
  $berekening->setBepaaldeWaarde('blaat');
} catch (BepaaldeWaardeException $e) { appendUserError($e); }

try {
  $berekening->Query(); 
} catch (QueryException $e} { abortLogicError($e); }
Niet alleen onleesbaar, ook nog eens fout, want na de fout ga je vrolijk door met de rest van de code. Het feit dat elke functie kan gooien impliceert niet dat je na elke functieaanroep ook daadwerkelijk moet catchen.

PHP:
1
2
3
4
5
6
7
8
try {
  $berekening = new DataRequest();
  $berekening->setKantoor('id');
  $berekening->setBepaaldeWaarde('blaat');
  $berekening->Query(); 
}
catch (UserException $e) { appendUserError($e); }
catch (QueryException $e} { abortLogicError($e); }


(Overigens geen idee of je in PHP meerdere catch clauses kan hebben, maar daar is ook wel omheen te werken)

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!

  • RobertMe
  • Registratie: Maart 2009
  • Laatst online: 19:43
Heeft de setter/getter discussie niet ook te maken met wat je OO vindt/hoe je het uitwerkt? Stom voorbeeld, je hebt een Car class, nu wil je de kleur van de auto veranderen. In "de echte wereld", moet je de auto dan laten spuiten/verven. In een pure OO opzet die zo sterk mogelijk tegen de werkelijkheid is geprogrammeerd zou je dan dus ook een paint(color) methode hebben, en geen setColor(color) methode. Het gedrag/de actie is het verven van de auto, je kunt niet zomaar de kleur van een auto instellen.

Daarnaast wat hierboven al is aangegeven. "refreshUI" in een data layer gaan mij de nekharen van overeind staan. Als je dan 10 properties in bulk veranderd zou je 10 keer het scherm refreshen, ook niet echt handig. Alleen de UI laag bepaalt wanneer de UI gerefreshed wordt, en kan daarbij evt. ondersteuning krijgen uit change events/observers die vanuit de data layer getriggerd worden. Waarbij er evt. vanuit de UI zelf de mogelijkheid is om het refreshen uit te schakelen en daarna weer in te schakelen waarbij de nodige elementen worden bijgewerkt. In .NET WinForms zit dat gedeeltelijk in de vorm van Control.SuspendLayout en Control.ResumeLayout. Waarmee je bulk acties op Size/Location/Anchor/Dock kunt uitvoeren zonder dat er elke keer een redraw en recalculate van dingen plaatsvind.

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
.oisyn schreef op zaterdag 09 augustus 2014 @ 18:25:
[...]

Of je hebt op voorhand gewoon getters en setters gemaakt en is het vervolgens appeltje-eitje om de boel aan te passen. Het is maar hoeveel manuren je wilt wasten...
Het is maar net waar je je tijd in wilt stoppen, vooraf met 't aanleggen van al die getters en setters, of achteraf als het daadwerkelijk nodig was.
Niet alleen onleesbaar, ook nog eens fout, want na de fout ga je vrolijk door met de rest van de code. Het feit dat elke functie kan gooien impliceert niet dat je na elke functieaanroep ook daadwerkelijk moet catchen.
Wel als je meer dan een error per keer af wilt handelen - eg. het opbouwen van een lijst van errors van dingen die een user verkeerd heeft ingevoerd. Met jou / de originele oplossing kun je maar een error weergeven per keer. Ook niet echt handig :)
Pagina: 1 ... 6 ... 101 Laatste

Dit topic is gesloten.

Let op:
Dit topic is niet de plaats om te lopen helpdesken. De Coffee Corner is primair bedoeld als uitlaatklep voor iedereen in de Devschuur® en niet als vraagbaak.