[alg] Slechtste programmeervoorbeelden deel 5 Vorige deel Overzicht

Pagina: 1 ... 15 ... 20 Laatste
Acties:

  • jacobras
  • Registratie: Januari 2005
  • Laatst online: 00:48

jacobras

Developer

Method chaining is niks mis mee, toch? Handig bij builder classes.

Mijn laatste (grote) reviews: Medal of Honor (VR), Half-Life: Alyx (VR)


  • Standeman
  • Registratie: November 2000
  • Laatst online: 10:46

Standeman

Prutser 1e klasse

jacobras schreef op donderdag 6 september 2018 @ 15:09:
Method chaining is niks mis mee, toch? Handig bij builder classes.
Voor standaard setters?

The ships hung in the sky in much the same way that bricks don’t.


Acties:
  • +1 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 11:15
Ik ben überhaupt niet zo'n fan van 'standaard setters'. Op een pure DTO of iets dergelijks kan het nog wel, maar meestal zijn classes maar losse fields met setters een teken van tight coupling / matige encapsulation.
Method chaining kan best handig zijn. Zoals gezegd is een builder pattern een prima voorbeeld. Als je een object aanmaakt met een lege constructoraanroep en er vervolgens 10 setters op aanroept, dan is method chaining ook wat leesbaarder. Al is dat vooral een antipattern omdat je dan beter een builder kunt gebruiken of eens kunt kijken of je object misschien niet wat verplichte state initialisation moet hebben via een constructor.

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


Acties:
  • +1 Henk 'm!

  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 16-09 14:18
Ik snap het wel. Als je een object aanmaakt en een aantal velden zet, dan is dat in Java al een hele blok code. D.m.v. die return kan die code een stuk korter.
Maar dan heb je wel het probleem dat het niet aan de bean spec voldoet. Niet elk framework kan er goed mee omgaan.
Als het immutable objecten waren, dan is het wel weer te begrijpen (maar die returnen geen 'this' ;) )

Wat mij betreft zou hier iets voor gevonden moeten worden.

let the past be the past.


  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 11:15
SPee schreef op donderdag 6 september 2018 @ 19:17:
Ik snap het wel. Als je een object aanmaakt en een aantal velden zet, dan is dat in Java al een hele blok code. D.m.v. die return kan die code een stuk korter.
Maar dan heb je wel het probleem dat het niet aan de bean spec voldoet. Niet elk framework kan er goed mee omgaan.
Als het immutable objecten waren, dan is het wel weer te begrijpen (maar die returnen geen 'this' ;) )

Wat mij betreft zou hier iets voor gevonden moeten worden.
Als het immutable objecten waren, dan had je überhaupt geen setters gehad natuurlijk. :P

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


Acties:
  • 0 Henk 'm!

  • _NooT_
  • Registratie: Juni 2018
  • Laatst online: 13-09 13:14
Standeman schreef op donderdag 6 september 2018 @ 15:01:

En uiteraard veel methoden / class namen zoals "AbstractedDitIsEenObjectDatZoEnZoDoetMaarTochStiekemWatAndersServiceImplementation". Een gezonde mix van NL en EN. :+
Nu moet ik heel eerder zeggen dat ik dit ook met enige regelmaat moeilijk te vermijden vindt.
Aan de ene kant is het 'correcter' om alles in je code in het Engels te houden omdat de syntax zelf in het Engels is, maar om voor al je modellen, objecten, variabelen etc perse Engelse termen te gaan gebruiken slaat af en toe ook nergens op.

Acties:
  • 0 Henk 'm!

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 10:09
_NooT_ schreef op vrijdag 7 september 2018 @ 13:23:
[...]


Nu moet ik heel eerder zeggen dat ik dit ook met enige regelmaat moeilijk te vermijden vindt.
Aan de ene kant is het 'correcter' om alles in je code in het Engels te houden omdat de syntax zelf in het Engels is, maar om voor al je modellen, objecten, variabelen etc perse Engelse termen te gaan gebruiken slaat af en toe ook nergens op.
Dat is bij mijn huidige klant ook de stelregel rondom naamgeving. Domein termen NL-talig houden en niet (vaak krampachtig) naar EN vertalen. Het maakt communicatie ook makkelijker als iedereen hetzelfde beestje bij dezelfde naam noemt. Ja, het lijkt wat knullig, maar soit.

Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Ubiquitous language :Y

Termen als bsn, huurtoeslag, tussenvoegsel, franchise en erfdienstbaarheid vertalen omdat Engels cool is :N

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!

  • Flapmo
  • Registratie: April 2000
  • Laatst online: 16-09 18:56

Flapmo

and back is gigi!

kenneth schreef op vrijdag 7 september 2018 @ 14:05:
Ubiquitous language :Y

Termen als bsn, huurtoeslag, tussenvoegsel, franchise en erfdienstbaarheid vertalen omdat Engels cool is :N
En toen besloot je 5 jaar verder om de maintenance te outsourcen, of je komt erachter dat software engineers schaars zijn en dat nog een disclaimer dat ze NL moeten zijn je extra kost in NL :Y :)F

"The purpose of computing is insight, not numbers." -- Richard Hamming


Acties:
  • 0 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 11:15
Flapmo schreef op vrijdag 7 september 2018 @ 20:10:
[...]

En toen besloot je 5 jaar verder om de maintenance te outsourcen, of je komt erachter dat software engineers schaars zijn en dat nog een disclaimer dat ze NL moeten zijn je extra kost in NL :Y :)F
Mja, "maintenance outsourcen" bij een systeem met een complex domein wordt sowieso lastig. Dan moeten complexe business requirements weer door iemand vertaalt worden, waarbij waarschijnlijk heel wat nuances verloren gaan, de vertaalde terminologie niet strookt met de in de code gehanteerde vertalingen en ga zo maar door.

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


Acties:
  • 0 Henk 'm!

  • Flapmo
  • Registratie: April 2000
  • Laatst online: 16-09 18:56

Flapmo

and back is gigi!

Mugwump schreef op vrijdag 7 september 2018 @ 20:14:
[...]


Mja, "maintenance outsourcen" bij een systeem met een complex domein wordt sowieso lastig. Dan moeten complexe business requirements weer door iemand vertaalt worden, waarbij waarschijnlijk heel wat nuances verloren gaan, de vertaalde terminologie niet strookt met de in de code gehanteerde vertalingen en ga zo maar door.
Dat valt wel mee. Daar zijn bedrijven als capgemini, Accenture, etc. volledig voor opgezet. Het is minder dan de ervaring die je in je teams hebt maar je outsourced niet omdat het zo'n kritiek stuk van je systeem is. Maintenance zou sowieso niet veel nieuwe requirements (change requests) moeten hebben maar de focus op bug fixes.

[ Voor 7% gewijzigd door Flapmo op 07-09-2018 20:22 ]

"The purpose of computing is insight, not numbers." -- Richard Hamming


Acties:
  • +3 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 11:15
Flapmo schreef op vrijdag 7 september 2018 @ 20:16:
[...]

Dat valt wel mee. Daar zijn bedrijven als capgemini, Accenture, etc. volledig voor opgezet. Het is minder dan de ervaring die je in je teams hebt maar je outsourced niet omdat het zo'n kritiek stuk van je systeem is.
Oh en ik zie dagelijks waar dergelijke outsourcing toe leidt. Heel vrolijk word je er niet van en ik kan me ook niet voorstellen dat het gezien de overhead kosteneffectiever is.
Hooguit zul je inderdaad problemen hebben capaciteit in Nederland te vinden.
Maar de vraag is ook of een systeem met wat Domeintermen in het Nederlands het systeem uberhaupt ononderhoudbaar zou maken voor mensen die de taal verder niet spreken. Kan een Indiër wel omgaan met de afkorting SSN, maar niet met de afkorting BSN? Omvat het tweede eigenlijk niet veel meer dan het eerste? Snappen developers in India beter wat easement is dan erfdienstbaarheid?

Goed, ik ben ook meer van de school die vindt dat een paar capabele developers beter in staat zijn om een systeem uit de grond te stampen en te onderhouden dan een dozijn matige developers met overhead voor een vertaalslag.

Overigens ook volkomen offtopic hier, afgezien van het feit dat domeinterminologie in een eigen taal houden in code niet ongebruikelijk of ongewenst is.

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


Acties:
  • 0 Henk 'm!

  • kluyze
  • Registratie: Augustus 2004
  • Niet online
kenneth schreef op vrijdag 7 september 2018 @ 14:05:
Ubiquitous language :Y

Termen als bsn, huurtoeslag, tussenvoegsel, franchise en erfdienstbaarheid vertalen omdat Engels cool is :N
Een hele snelle opzoeking op internet geeft:

bsn; citizenServiceNumber or citizenIdentifier
huurtoeslag; rentAllowance
tussenvoegsel; prefix or surnamePrefix
erfdienstbaarheid; easement

franchise, ligt eraan wat je bedoelt, want dat kan gewoon een Engels woord zijn als het om ondernemen gaat. Bij een verzekering spreken ze in het Engels over excess wat ik zo snel op Google kan vinden.

Zelf programmeer ik ook in het Engels. Ik vind Nederlands in code niet netjes. En als ik niet de exacte vertaling weet zoek ik de Nederlandse Wikipedia pagina erbij en ga ik vandaar uit naar de Engelse pagina.

Acties:
  • +5 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Natuurlijk kún je het vertalen, dat is het punt niet. Huurtoeslag is een compleet concept met een specifieke betekenis, niet alleen een woordje. Daarom zeg ik: ubiquitous language. Niet zelf dingen gaan verzinnen om het maar in het Engels te kunnen doen. Ja, alles in het Engels ziet er strakker uit maar dat is geen doel op zich.

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!

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

kluyze schreef op vrijdag 7 september 2018 @ 21:52:
bsn; citizenServiceNumber or citizenIdentifier
huurtoeslag; rentAllowance
tussenvoegsel; prefix or surnamePrefix
erfdienstbaarheid; easement
En dan ziet een steenkolen-Engels-programmeur een tabel met allowance=3*easement-5*deduction en dan moet hij alle woorden weer terugvertalen voordat hij snapt wat hier in hemelsnaam gebeurt, omdat hij van al die woorden nog nooit gehoord heeft, en het lijkt ook in de verste verte niet wat er in de requirements staat.

Los van de ubiquitous language is zelfs een goede vertaling zelden 100% accuraat (verschillende talen mappen niet een op een dezelfde begrippen naar elkaar - zeker niet met domeinspecifieke begrippen die slechts in één land gebruikt worden), en ben je dus alleen maar Babylonische spraakverwarring aan het creeëren. Heb je ooit een term door een vertaalmachine gehaald en dan weer terug? Dat verminkt je oorspronkelijke woord vaak. Ik keek laatst op een Franse site met een Engelse vertaling (c.q. door google translate gehaald), daar snapte ik minder van dan van de originele Franse tekst, en ik spreek geen Frans.

Gelukkig is er in mijn 'domein' niemand die het in zijn hoofd haalt om ooit een andere taal dan Engels te gebruiken, dus dat is makkelijk praten.

Heeft geen speciale krachten en is daar erg boos over.


Acties:
  • 0 Henk 'm!

  • kluyze
  • Registratie: Augustus 2004
  • Niet online
kenneth schreef op vrijdag 7 september 2018 @ 22:13:
Natuurlijk kún je het vertalen, dat is het punt niet. Huurtoeslag is een compleet concept met een specifieke betekenis, niet alleen een woordje. Daarom zeg ik: ubiquitous language. Niet zelf dingen gaan verzinnen om het maar in het Engels te kunnen doen. Ja, alles in het Engels ziet er strakker uit maar dat is geen doel op zich.
Mijn punt was dat veel dingen net wel vertaald kunnen worden. Om nog even op dit voorbeeld te blijven:

Huurtoeslag:
Huurtoeslag is een bijdrage in de huurkosten van uw woning.
Rent Allowance:
money given to individuals by the government that subsidises the cost of renting a property
Conceptueel is dat toch zo goed als hetzelfde. En dus ook niet verzonnen. En zo zijn veel vertalingen dus gewoon wel mogelijk en is er dus niet vaak een echte noodzaak om in het Nederlands te zetten. Je moet inderdaad geen letterlijke vertaling gebruiken.
Dan ben ik nog eerder voorstander om in commentaar een vertaling terug naar bv. het Nederlands er bij te zetten met een stukje uitleg.

Zo krijg je straks een stukje software dat voor verschillende landen met hun eigen taal iets kan berekenen, en elke berekening staat dan in zijn eigen taal.
En dan spreek ik nog niet over de talen waar vaker leestekens gebruikt worden, waarbij wel of geen leesteken een andere betekenis geeft.
bwerg schreef op vrijdag 7 september 2018 @ 22:55:
[...]
Los van de ubiquitous language is zelfs een goede vertaling zelden 100% accuraat (verschillende talen mappen niet een op een dezelfde begrippen naar elkaar - zeker niet met domeinspecifieke begrippen die slechts in één land gebruikt worden), en ben je dus alleen maar Babylonische spraakverwarring aan het creeëren. Heb je ooit een term door een vertaalmachine gehaald en dan weer terug? Dat verminkt je oorspronkelijke woord vaak. Ik keek laatst op een Franse site met een Engelse vertaling (c.q. door google translate gehaald), daar snapte ik minder van dan van de originele Franse tekst, en ik spreek geen Frans.
Zoals ik al aangaf gebruik ik vaak het trukje om te kijken welke Wikipedia pagina's aan elkaar gelinkt zijn in verschillende talen. Dat geeft vaak een betere vertaling als een vertaalmachine. Al is google translate er de laatste tijd ook hard op verbeterd.

Achja, dat is gewoon mijn mening, daar moet natuurlijk niet iedereen mee akkoord gaan.

[ Voor 23% gewijzigd door kluyze op 07-09-2018 23:45 ]


Acties:
  • 0 Henk 'm!

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

kluyze schreef op vrijdag 7 september 2018 @ 23:41:
Zo krijg je straks een stukje software dat voor verschillende landen met hun eigen taal iets kan berekenen, en elke berekening staat dan in zijn eigen taal.
Elke berekening is dan toch in het Engels, in plaats van in zijn eigen taal?

Berekeningen of variabelen voor meerdere landen hergebruiken lijkt me behoorlijk optimistisch vanwege de grote verschillen (in ieder geval in het geval van persoonlijke toeslagen en belastingen). Ook daar: elk land heeft zijn eigen concepten en factoren die niet één-op-één overeenkomen, dus je krijgt Engelse namen voor Nederlandse factoren die in Duitsland helemaal niet bestaan, of er half mee overlappen. Als je Nederlandse klant je vraagt om een huurtoeslagberekening toe te voegen, en een Duitse klant vraagt om Mietzuschussberechnung, dan lijkt het me nogal riskant om die in de software gewoon op één hoop te gooien omdat dat toch ongeveer hetzelfde is volgens wikipedia. In ieder geval kan daar beter een financieel expert over oordelen dan een programmeur die de code daardoor mooier vindt.

Maar goed, ik heb ook geen ervaring met administratieve software. Maar ik heb wel jarenlang geklaag aangehoord over de complexiteit van administratieve software aan de keukentafel. :+

[ Voor 43% gewijzigd door bwerg op 08-09-2018 00:09 ]

Heeft geen speciale krachten en is daar erg boos over.


Acties:
  • 0 Henk 'm!

  • Alain
  • Registratie: Oktober 2002
  • Niet online
In een subclass een nieuwe variabele aanmaken, omdat de variabele in de abstracte class niet aan de coding style afspraken voldoet. 8)7

You don't have to be crazy to do this job, but it helps ....


Acties:
  • +5 Henk 'm!

  • Xiphalon
  • Registratie: Juni 2001
  • Laatst online: 16-09 16:54
kenneth schreef op vrijdag 7 september 2018 @ 14:05:
Ubiquitous language :Y

Termen als bsn, huurtoeslag, tussenvoegsel, franchise en erfdienstbaarheid vertalen omdat Engels cool is :N
Tja je kan een oproepkracht ook in het engels een CallGirl noemen. En ja dat is gebeurd in een groot (internationaal) salarispakket. En ja de foutmelding 'CallGirl not supplied' kwam tevoren bij klanten....

Acties:
  • 0 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 11:15
Ik heb het idee dat veel Nederlanders in het algemeen en Nederlandse IT'ers in het bijzonder het belang van een specifieke taal en de nuances die in een taal zitten onderschatten.

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Mugwump schreef op zaterdag 8 september 2018 @ 00:26:
Ik heb het idee dat veel Nederlanders in het algemeen en Nederlandse IT'ers in het bijzonder het belang van een specifieke taal en de nuances die in een taal zitten onderschatten.
En wat wil je daar aan doen?

Carrousel (NL), Carousel (EN-US), Roundabout (EN-GB) of Merry-go-round?

Until (EN-US) of Untill (EN-GB)

Canceled (EN-US) of Cancelled (EN-GB)

etc. krijg je met smartypants straks de discussie dat Engels incorrect is en weer een nieuwe standaards document dat vertelt dat iedereen EN-US moet gebruiken omdat dat meer mensen zijn dan EN-GB bijvoorbeeld 8)7 :o

Maak je niet druk, dat doet de compressor maar


Acties:
  • +1 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 11:15
DJMaze schreef op zaterdag 8 september 2018 @ 00:43:
[...]

En wat wil je daar aan doen?

Carrousel (NL), Carousel (EN-US), Roundabout (EN-GB) of Merry-go-round?

Until (EN-US) of Untill (EN-GB)

Canceled (EN-US) of Cancelled (EN-GB)

etc. krijg je met smartypants straks de discussie dat Engels incorrect is en weer een nieuwe standaards document dat vertelt dat iedereen EN-US moet gebruiken omdat dat meer mensen zijn dan EN-GB bijvoorbeeld 8)7 :o
Het gaat niet om spellingsverschillen. Het gaat om verschil in betekenis. Zeker als je bijvoorbeeld in een juridisch domein opereert is dat zeer relevant. Concepten uit het Nederlandse recht zijn niet altijd één op één te vertalen naar het Amerikaans of Brits recht om maar eens wat te noemen.

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


Acties:
  • 0 Henk 'm!

  • Verwijderd1
  • Registratie: Maart 2012
  • Niet online
[quote][b][message=563_

[ Voor 93% gewijzigd door Verwijderd1 op 18-10-2021 19:07 ]


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 11:09
Ik kom niet veel meer op stackoverflow want het niveau is echt om te huilen, maar soms verveel ik me en ga ik toch kijken of ik iemand kan helpen. Ik weet dat het niet de bedoeling is maar dit is echt een pareltje: iemand wil z'n datum in een bepaald formaat hebben blijkbaar:
code:
1
2
string t = Convert.ToString(DateTime.UtcNow);
DateTime d2 = DateTime.ParseExact(t, "yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture);

_O-
Gewoon compleet geen enkel idee wat je eigenlijk aan het doen bent...

Roomba E5 te koop


Acties:
  • +2 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

sig69 schreef op zaterdag 8 september 2018 @ 02:20:
Ik kom niet veel meer op stackoverflow want het niveau is echt om te huilen, maar soms verveel ik me en ga ik toch kijken of ik iemand kan helpen. Ik weet dat het niet de bedoeling is maar dit is echt een pareltje: iemand wil z'n datum in een bepaald formaat hebben blijkbaar:
code:
1
2
string t = Convert.ToString(DateTime.UtcNow);
DateTime d2 = DateTime.ParseExact(t, "yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture);

_O-
Gewoon compleet geen enkel idee wat je eigenlijk aan het doen bent...
En? Context is alles. Is dit van een developer met jaren ervaring dan mag je erom lachen (of huilen). Is het van iemand die net begonnen is om zichzelf te leren programmeren dan hoef ik daar echt niet om te lachen.

Acties:
  • +5 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

sig69 schreef op zaterdag 8 september 2018 @ 02:20:
Ik kom niet veel meer op stackoverflow want het niveau is echt om te huilen, maar soms verveel ik me en ga ik toch kijken of ik iemand kan helpen. Ik weet dat het niet de bedoeling is maar dit is echt een pareltje: iemand wil z'n datum in een bepaald formaat hebben blijkbaar:
code:
1
2
string t = Convert.ToString(DateTime.UtcNow);
DateTime d2 = DateTime.ParseExact(t, "yyyy-MM-ddTHH:mm:ssZ", CultureInfo.InvariantCulture);

_O-
Gewoon compleet geen enkel idee wat je eigenlijk aan het doen bent...
Niet om jou, maar dit is wel een reden voor veel mensen om geen vragen te plaatsen. Programmeren is best moeilijk en veel mensen hebben geen zin om zich dom te voelen omdat iemand hun vraag belachelijk maakt.

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • basvdijk1647
  • Registratie: Februari 2003
  • Laatst online: 16-08 16:48

basvdijk1647

aka Osiris

Een van mijn allereerste programma's in Visual Basic 4. Het programma stelde vragen, van variabelen had ik nog nooit gehoord, laat staan loops, dus gooide ik alles in een form element wat ik verborg. De loop simuleerde ik door gewoon 100en GoTo statements te gebruiken :D

Label7 is hier het vraagnummer, elke keer als de timer afliep keek hij naar het vraagnummer en bepaalde zo welke text getoond moest worden. Onderstaande gaat nog zo'n 800 regels verder :+

code:
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
If Label7.Caption = 1 Then GoTo 10 Else GoTo 20
10 Label1.Caption = Form6.Text1.Text
Label2.Caption = Form6.Text21.Text
Label3.Caption = Form6.Text61.Text
Label6.Caption = Form6.Text41.Text
GoTo 9999

20 If Label7.Caption = 2 Then GoTo 30 Else GoTo 40
30 Label1.Caption = Form6.Text2.Text
Label2.Caption = Form6.Text22.Text
Label3.Caption = Form6.Text62.Text
Label6.Caption = Form6.Text42.Text
GoTo 9999

40 If Label7.Caption = 3 Then GoTo 50 Else GoTo 60
50 Label1.Caption = Form6.Text3.Text
Label2.Caption = Form6.Text23.Text
Label3.Caption = Form6.Text63.Text
Label6.Caption = Form6.Text43.Text
GoTo 9999

60 If Label7.Caption = 4 Then GoTo 70 Else GoTo 80
70 Label1.Caption = Form6.Text4.Text
Label2.Caption = Form6.Text24.Text
Label3.Caption = Form6.Text64.Text
Label6.Caption = Form6.Text44.Text
GoTo 9999

80 If Label7.Caption = 5 Then GoTo 90 Else GoTo 100
90 Label1.Caption = Form6.Text5.Text
Label2.Caption = Form6.Text25.Text
Label3.Caption = Form6.Text65.Text
Label6.Caption = Form6.Text45.Text
GoTo 9999

100 If Label7.Caption = 6 Then GoTo 110 Else GoTo 120
110 Label1.Caption = Form6.Text6.Text
Label2.Caption = Form6.Text26.Text
Label3.Caption = Form6.Text66.Text
Label6.Caption = Form6.Text46.Text

Ontwikkelaar van de Drammer whisky app voor Android en iOS / arduino-lessen.nl / blender-lessen.nl


Acties:
  • +1 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 11:15
Sandor_Clegane schreef op zaterdag 8 september 2018 @ 10:58:
[...]


Niet om jou, maar dit is wel een reden voor veel mensen om geen vragen te plaatsen. Programmeren is best moeilijk en veel mensen hebben geen zin om zich dom te voelen omdat iemand hun vraag belachelijk maakt.
Als ik zie wat er op SO wordt geplaatst aan vragen dan lijkt het er niet op alsof het veel mensen weerhoudt van het stellen van dit soort vragen. Wel mag je in mijn ogen enige moeite verwachten van iemand die een vraag stelt. Er zit nogal eens een vraag tussen van de vorm: "Hoi ik heb een opdracht, maar ik heb geen idee wat ik moet doen. Lever mij kant en klare code aan zodat ik die kan knippen en plakken zodat het werkt". Dat soort topic gaan hier ook niet voor niets dicht.

Wat mij weghoudt van SO zijn vooral de mensen die je antwoorden gaan lopen afzeiken / downvoten op één of ander irrelevant detail of obscuur regeltje. Ik wil met alle liefde wat minder ervaren mensen op weg helpen (of kennis delen op het vlak van wat meer obscure / slecht gedocumenteerde zaken), maar als je een uitgebreid antwoord geeft met een aantal voorbeelden en pros / cons en vervolgens krijg je kritiek / downvotes omdat er ergens in die codevoorbeelden een camelcase variabele een hoofdletter mist, dan denk je vrij snel: "Stik er maar lekker in". Ik begreep dat ze pakweg een half jaar geleden wel hebben gezegd dat ze de boel minder vijandig willen maken. Geen idee of ze dat gelukt is.

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 11:09
downtime schreef op zaterdag 8 september 2018 @ 10:23:
[...]

En? Context is alles. Is dit van een developer met jaren ervaring dan mag je erom lachen (of huilen). Is het van iemand die net begonnen is om zichzelf te leren programmeren dan hoef ik daar echt niet om te lachen.
Geen idee. Als het een ervaren developer is het om te huilen natuurlijk. In het andere geval: pak eerst eens een boek ofzo.
Sandor_Clegane schreef op zaterdag 8 september 2018 @ 10:58:
[...]
Niet om jou, maar dit is wel een reden voor veel mensen om geen vragen te plaatsen. Programmeren is best moeilijk en veel mensen hebben geen zin om zich dom te voelen omdat iemand hun vraag belachelijk maakt.
Nee hoor op SO voelt niemand zich dom. Alles wordt daar gedumpt. Daarom kom ik er eigenlijk ook nooit meer. En programmeren is best lastig ja als je je er niet in verdiept en gewoon maar wat doet.

[ Voor 36% gewijzigd door sig69 op 08-09-2018 13:40 ]

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • PWSteal
  • Registratie: December 2013
  • Laatst online: 16-09 13:15
Van de week kwam ik stukje code van een collega tegen.

Hij vond het kennelijk handig om alle parameters in een SQL stored procedure te vervangen voor een custom data type, en dat als table aan te leverenn om vervolgens altijd maar 1 row erin te stoppen...

Zijn argument hiervoor was dat anders de stored procedure teveel argumenten krijgt...
Was dus echt een gevalletje van zelf een probleem maken wat eigenlijk niet bestaat, en vervolgens een workaround implementeren die een flinke overhead heeft.

Dus kwam beetje op het volgende neer;

SQL
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE PROCEDURE spInsertModel @DATA CUSTOMDATATYPE READONLY
BEGIN

   INSERT INTO [dbo].[SomeTable]
   (
       a, b
   )
   SELECT
       a , b
   FROM @Data 


END


En het C# gedeelte, in combinatie met Dapper.
code:
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
        public void Add(SomeModel model)
        {
            using (var connection = Connection)
            {
                connection.Execute("spInsertModel ", new
                {
                    Data = CreateConfigTable(model)
                }, commandType: CommandType.StoredProcedure);
            }
        }

        private IDbConnection Connection
        {
            get
            {
                return new SqlConnection("connectionstring");
            }
        }


        public DataTable CreateConfigTable(SomeModel model)
        {
            var dataTable = new DataTable();
            dataTable.Columns.Add(new DataColumn("A", typeof(string)));
            dataTable.Columns.Add(new DataColumn("B", typeof(int)));

            var row = dataTable.NewRow();
            row["A"] = model.A;
            row["B"] = model.B;

            dataTable.Rows.Add(row);

            return dataTable;
        }

        public class SomeModel
        {
            public string A { get; set; }

            public int B { get; set; }
        }


Leuke is dat Dapper van de datatable een temp table maakt in SQL, vervolgens die ene regel erin insert, om vervolgens als argument mee te geven aan de stored procedure. Vervolgen moet de data weer uit die tabel gehaald worden voor de daadwerkelijke insert.

Acties:
  • 0 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 11:15
Is dat toevallig een collega uit de BI-hoek? Ik had er namelijk één die exact hetzelfde deed, alleen dan zonder ORM. :P

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


Acties:
  • 0 Henk 'm!

  • PWSteal
  • Registratie: December 2013
  • Laatst online: 16-09 13:15
Mugwump schreef op zaterdag 8 september 2018 @ 15:13:
Is dat toevallig een collega uit de BI-hoek? Ik had er namelijk één die exact hetzelfde deed, alleen dan zonder ORM. :P
Nee niet eens, developer met +- 5 jaar ervaring. 8)7

Acties:
  • +1 Henk 'm!

  • Flapmo
  • Registratie: April 2000
  • Laatst online: 16-09 18:56

Flapmo

and back is gigi!

Mugwump schreef op vrijdag 7 september 2018 @ 20:33:
[...]


Oh en ik zie dagelijks waar dergelijke outsourcing toe leidt. Heel vrolijk word je er niet van en ik kan me ook niet voorstellen dat het gezien de overhead kosteneffectiever is.
Hooguit zul je inderdaad problemen hebben capaciteit in Nederland te vinden.
Maar de vraag is ook of een systeem met wat Domeintermen in het Nederlands het systeem uberhaupt ononderhoudbaar zou maken voor mensen die de taal verder niet spreken. Kan een Indiër wel omgaan met de afkorting SSN, maar niet met de afkorting BSN? Omvat het tweede eigenlijk niet veel meer dan het eerste? Snappen developers in India beter wat easement is dan erfdienstbaarheid?

Goed, ik ben ook meer van de school die vindt dat een paar capabele developers beter in staat zijn om een systeem uit de grond te stampen en te onderhouden dan een dozijn matige developers met overhead voor een vertaalslag.

Overigens ook volkomen offtopic hier, afgezien van het feit dat domeinterminologie in een eigen taal houden in code niet ongebruikelijk of ongewenst is.
offtopic:
Het is nog steeds kosteneffectief om te outsourcen, hoewel de engineers in meeste westerse landen graag geloven dat dat het niet is. Stukje trots en "not invented here syndrome" wat deels gezond is. Het is echter niet voor niets dat alle multinationals een office in India/China hebben. Ook ik heb er dagelijks mee te maken. Een goede architectuur opzetten voor een project waar veel onduidelijk is is niet iets waar je ze graag voor inzet. Maintenance van een project waar je nog 25 jaar support moet geven maar niet je kostbare FTE'S uit Nederland/US voor wilt inzetten wel. Hoewel we graag geloofden dat ze er een zooitje van zouden maken draaien onze projecten eigenlijk prima op resources van capgemini India en Accenture. Klant blij, resources vrij, resources blij (want niet meer werken aan oude troep).

Wat betreft de taal, hypothetisch: je wordt ingehuurd om te werken aan de software waarover je praat:
- je komt er achter dat die deels geschreven is in het Pools/Spaans/you name it
- je komt er achter dat alles in het Engels is

Welke optie heb je liever? Ik denk dat elke taal nagenoeg dezelfde concepten kent en dat er altijd een prima vertaling te vinden is die de lading dekt, of in ieder geval lijkt aan wat het concept zou moeten betekenen. Een scan van de class en documentatie zou dan alle onduidelijkheid kunnen verhelpen.
basvdijk1647 schreef op zaterdag 8 september 2018 @ 12:02:
Een van mijn allereerste programma's in Visual Basic 4. Het programma stelde vragen, van variabelen had ik nog nooit gehoord, laat staan loops, dus gooide ik alles in een form element wat ik verborg. De loop simuleerde ik door gewoon 100en GoTo statements te gebruiken :D

Label7 is hier het vraagnummer, elke keer als de timer afliep keek hij naar het vraagnummer en bepaalde zo welke text getoond moest worden. Onderstaande gaat nog zo'n 800 regels verder :+

code:
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
If Label7.Caption = 1 Then GoTo 10 Else GoTo 20
10 Label1.Caption = Form6.Text1.Text
Label2.Caption = Form6.Text21.Text
Label3.Caption = Form6.Text61.Text
Label6.Caption = Form6.Text41.Text
GoTo 9999

20 If Label7.Caption = 2 Then GoTo 30 Else GoTo 40
30 Label1.Caption = Form6.Text2.Text
Label2.Caption = Form6.Text22.Text
Label3.Caption = Form6.Text62.Text
Label6.Caption = Form6.Text42.Text
GoTo 9999

40 If Label7.Caption = 3 Then GoTo 50 Else GoTo 60
50 Label1.Caption = Form6.Text3.Text
Label2.Caption = Form6.Text23.Text
Label3.Caption = Form6.Text63.Text
Label6.Caption = Form6.Text43.Text
GoTo 9999

60 If Label7.Caption = 4 Then GoTo 70 Else GoTo 80
70 Label1.Caption = Form6.Text4.Text
Label2.Caption = Form6.Text24.Text
Label3.Caption = Form6.Text64.Text
Label6.Caption = Form6.Text44.Text
GoTo 9999

80 If Label7.Caption = 5 Then GoTo 90 Else GoTo 100
90 Label1.Caption = Form6.Text5.Text
Label2.Caption = Form6.Text25.Text
Label3.Caption = Form6.Text65.Text
Label6.Caption = Form6.Text45.Text
GoTo 9999

100 If Label7.Caption = 6 Then GoTo 110 Else GoTo 120
110 Label1.Caption = Form6.Text6.Text
Label2.Caption = Form6.Text26.Text
Label3.Caption = Form6.Text66.Text
Label6.Caption = Form6.Text46.Text
Oude code teruglezen is gaaf :Y) (8>. Prima eerste poging! Als student assistent kwam ik dit vroeger geregeld tegen bij studenten industrieel ontwerpen die een digitale mock-up moesten maken van hun product. Keurde ik vaak gewoon goed als ze antwoorden dat ze alleen maar VB schreven omdat het moest, niet omdat ze het nodig/leuk vonden. "Doet wat het moet doen? --> 0 kans om ze later als developer in te moeten huren? --> goed gedaan ga maar door!" 7(8)7

code:
1
2
3
4
5
6
7
BufferedReader br = new BufferedReader( new FileReader (file));
String line = null;
String lines = "";

while( ( line = br.readLine() ) != null ) {
    lines = lines + line;
}

Op een plek waar files van >>10mb geparsed worden :'(

[ Voor 5% gewijzigd door Flapmo op 09-09-2018 10:52 ]

"The purpose of computing is insight, not numbers." -- Richard Hamming


Acties:
  • 0 Henk 'm!

  • Adion
  • Registratie: Januari 2001
  • Laatst online: 10:30
Ik werd een paar dagen geleden weer herinnerd aan deze:
C:
1
2
3
4
5
6
7
8
9
10
11
12
struct tm
{
    int tm_sec;   // seconds after the minute - [0, 60] including leap second
    int tm_min;   // minutes after the hour - [0, 59]
    int tm_hour;  // hours since midnight - [0, 23]
    int tm_mday;  // day of the month - [1, 31]
    int tm_mon;   // months since January - [0, 11]
    int tm_year;  // years since 1900
    int tm_wday;  // days since Sunday - [0, 6]
    int tm_yday;  // days since January 1 - [0, 365]
    int tm_isdst; // daylight savings time flag
};

Dag van de maand vanaf 1, maar maand van het jaar vanaf 0.
Jaar vanaf 1900, ondanks dat het toch gewoon in een int opgeslagen word en er dus meer dan plek genoeg is om het volledige jaartal voor te stellen. (Tenzij er ooit compilers geweest zijn waar een int slechts 8 bits groot was, maar dan zou tm_yday ook niet gepast hebben)

VirtualDJ 2024 - Fast Image Resizer - Instagram


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 22:43
Adion schreef op zondag 9 september 2018 @ 09:55:
Dag van de maand vanaf 1, maar maand van het jaar vanaf 0.
Omdat maanden geen nummers hebben maar namen; dagen hebben wel nummers en die beginnen niet bij 0.

In eerste instantie lijkt het gek (zeker als je patronen wilt hebben en dat willen we allemaal graag), maar als je er over nadenkt is het niet heel onlogisch.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Je hebt op zich gelijk maar maanden hebben namen én nummers. Waar de nummers nog universeel zijn binnen de gregoriaanse kalender en namen per taal verschillen.

Datum en tijd zijn gewoon irritant :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!

  • Flapmo
  • Registratie: April 2000
  • Laatst online: 16-09 18:56

Flapmo

and back is gigi!

kenneth schreef op zondag 9 september 2018 @ 10:34:
Je hebt op zich gelijk maar maanden hebben namen én nummers. Waar de nummers nog universeel zijn binnen de gregoriaanse kalender en namen per taal verschillen.
Het commentaar is gelukkig wel goed. Months since januari. Dus januari is 0. Iedereen gaat de mist in op de API maar het is wel correct volgens eigen API :+.
Datum en tijd zijn gewoon irritant :P
+1. Zeker als je nog met pannenkoeken moet werken die timestamps durven op te slaan in iets anders dan UTC. Leuk man services die in lokale tijdzone opslaan. Eerst een query in welke tijdzone de service nu weer draait. Dan naar UTC en dan correleren..

[ Voor 29% gewijzigd door Flapmo op 09-09-2018 11:01 ]

"The purpose of computing is insight, not numbers." -- Richard Hamming


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:23

.oisyn

Moderator Devschuur®

Demotivational Speaker

Adion schreef op zondag 9 september 2018 @ 09:55:
Jaar vanaf 1900, ondanks dat het toch gewoon in een int opgeslagen word en er dus meer dan plek genoeg is om het volledige jaartal voor te stellen. (Tenzij er ooit compilers geweest zijn waar een int slechts 8 bits groot was, maar dan zou tm_yday ook niet gepast hebben)
Maar de set van jaartallen is niet de volledig set van integers, om het simpele feit dat het jaar 0 niet bestaat. Dus dan moet je ofwel 1 BCE representeren met het getal 0, wat niet intuïtief is, ofwel met -1, wat weer complicaties geeft met rekenen. Het is dan handiger om gewoon een ijkpunt te definiëren (wat de eerste mogelijkheid ook effectief doet, alleen dan vanaf 1 BCE ipv 1900 CE). Voor weergave zul je sowieso iets speciaals moeten doen, want een jaar als -3 bestaat niet.

[ Voor 3% gewijzigd door .oisyn op 09-09-2018 13:07 ]

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.


  • boe2
  • Registratie: November 2002
  • Niet online

boe2

'-')/

Database van een klant: Collation error wanneer ik twee verschillende tabellen probeer te joinen; op DEZELFDE database. Hoe krijg je dat klaargespeeld :?

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind.' - Pratchett.


Acties:
  • +1 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 11:18

Haan

dotnetter

Je kunt het toch specifiek per column zetten (in MSSQL tenminste) https://docs.microsoft.co...tion?view=sql-server-2017

Kater? Eerst water, de rest komt later


Acties:
  • +1 Henk 'm!

  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 11:16
farlane schreef op zondag 9 september 2018 @ 10:19:
[...]

Omdat maanden geen nummers hebben maar namen; dagen hebben wel nummers en die beginnen niet bij 0.

In eerste instantie lijkt het gek (zeker als je patronen wilt hebben en dat willen we allemaal graag), maar als je er over nadenkt is het niet heel onlogisch.
Maanden hebben wel nummers, veel maanden zijn ook immers vernoemt naar hun oorspronkelijke positie/nummer:
October was de 8e maand,. September was de 7e maand, November was de 9e maand een December was de 10e maand.

  • boe2
  • Registratie: November 2002
  • Niet online

boe2

'-')/

Nooit bij stilgestaan. Niemand hier heeft ook een idee waarom het zo is, ms-sql database van 15 jaar oud.

Heel die datumdiscussie doet me wat terugdenken aan de Tom Scott video :)

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind.' - Pratchett.


  • Crazy D
  • Registratie: Augustus 2000
  • Nu online

Crazy D

I think we should take a look.

boe2 schreef op woensdag 12 september 2018 @ 14:03:
Nooit bij stilgestaan. Niemand hier heeft ook een idee waarom het zo is, ms-sql database van 15 jaar oud.
Database aangemaakt op andere server (versie) met andere colation settings en andere tabellen laten aangemaakt? Dat is iig mijn ervaring ermee (anders dan dat mensen een kolom aanmaken met een specifieke collotion die afwijkt).

Exact expert nodig?


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 22:43
ThomasG schreef op woensdag 12 september 2018 @ 13:55:
[...]
Maanden hebben wel nummers, veel maanden zijn ook immers vernoemt naar hun oorspronkelijke positie/nummer:
October was de 8e maand,. September was de 7e maand, November was de 9e maand een December was de 10e maand.
Case in point ....

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Jerrythafast
  • Registratie: September 2012
  • Nu online
Dat wordt dus voortaan maanden opslaan als signed ints. Want januari is -1...

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Nou nee, gewoon een historische anekdote, niets meer. De maand oktober heeft het nummer 10, dat kan elke westerling je vertellen.

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


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 22:43
kenneth schreef op woensdag 12 september 2018 @ 21:35:
[...]

Nou nee, gewoon een historische anekdote, niets meer. De maand oktober heeft het nummer 10, dat kan elke westerling je vertellen.
Net zoals woensdag ook een nummer heeft, nl 3. Of nee wacht....

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 11:16
Dat maanden dus wel een nummer hebben, en dat vroeger ook zo gebruikt werd. October betekent letterijk namelijk: 8e maand, omdat het vroeger ook de 8e maand was. Dat october nu de 10e maand is, is iets anders.

[ Voor 7% gewijzigd door ThomasG op 12-09-2018 22:01 ]


  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

farlane schreef op woensdag 12 september 2018 @ 21:39:
[...]

Net zoals woensdag ook een nummer heeft, nl 3. Of nee wacht....
Wil je nu zeggen dat je nog nooit iets als "29-10-2013" hebt gezien?

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


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 22:43
kenneth schreef op woensdag 12 september 2018 @ 22:54:
[...]

Wil je nu zeggen dat je nog nooit iets als "29-10-2013" hebt gezien?
Nee dat wil ik niet zeggen. Wat ik wil zeggen dat aan het toekennen van nummers aan iets wat eigenlijk een enumeratie is implementatie defined is.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • orf
  • Registratie: Augustus 2005
  • Laatst online: 10:37

orf

Adion schreef op zondag 9 september 2018 @ 09:55:
Ik werd een paar dagen geleden weer herinnerd aan deze:
C:
1
2
3
4
5
6
7
8
9
10
11
12
struct tm
{
    int tm_sec;   // seconds after the minute - [0, 60] including leap second
    int tm_min;   // minutes after the hour - [0, 59]
    int tm_hour;  // hours since midnight - [0, 23]
    int tm_mday;  // day of the month - [1, 31]
    int tm_mon;   // months since January - [0, 11]
    int tm_year;  // years since 1900
    int tm_wday;  // days since Sunday - [0, 6]
    int tm_yday;  // days since January 1 - [0, 365]
    int tm_isdst; // daylight savings time flag
};

Dag van de maand vanaf 1, maar maand van het jaar vanaf 0.
Jaar vanaf 1900, ondanks dat het toch gewoon in een int opgeslagen word en er dus meer dan plek genoeg is om het volledige jaartal voor te stellen. (Tenzij er ooit compilers geweest zijn waar een int slechts 8 bits groot was, maar dan zou tm_yday ook niet gepast hebben)
In Javascript niet anders:

JavaScript:
1
2
3
4
var moonLanding = new Date('July 20, 69 00:20:18');

console.log(moonLanding.getMonth()); // (January gives 0)
// expected output: 6

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

farlane schreef op woensdag 12 september 2018 @ 23:07:
[...]

Nee dat wil ik niet zeggen. Wat ik wil zeggen dat aan het toekennen van nummers aan iets wat eigenlijk een enumeratie is implementatie defined is.
Ik denk dat je ernaast zit. Deze zaken zijn gewoon wereldwijd hetzelfde geregeld en daardoor een de-facto standaard. Jij noemt toevallig de uitzondering die de regel bevestigt. Wat je als de eerste dag van de week ziet is inderdaad niet overal hetzelfde. Weeknummers zijn een andere uitzondering.

  • Parody
  • Registratie: December 2002
  • Niet online
Nog een mooie, ooit in een VC++ 6.0 project gezien waar ze zonder enige bijscholing Java-programmeurs op gezet hebben:
code:
1
2
bool empty() { ... }
bool isEmpty() { return ! empty(); }

En natuurlijk de vele calls als:
code:
1
2
3
...
myFunction(new ObjectName);
...

Uiteraard was niemand verantwoordelijk voor het opruimen van de rommel. Applicatie liep dus binnen afzienbare tijd uit het geheugen. In Java werkt dat, inderdaad...

  • hellfighter87
  • Registratie: Mei 2008
  • Laatst online: 16-09 15:50
Parody schreef op donderdag 13 september 2018 @ 07:40:
Nog een mooie, ooit in een VC++ 6.0 project gezien waar ze zonder enige bijscholing Java-programmeurs op gezet hebben:
code:
1
2
bool empty() { ... }
bool isEmpty() { return ! empty(); }
.
Als die functie nou isNotEmpty() in plaats van isEmpty() had geheten was het prima geweest :)
Ik heb er echt 3 keer overheen moeten lezen wat er nou precies fout aan was

Acties:
  • +1 Henk 'm!

  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 11:16
hellfighter87 schreef op donderdag 13 september 2018 @ 08:59:
[...]


Als die functie nou isNotEmpty() in plaats van isEmpty() had geheten was het prima geweest :)
Ik heb er echt 3 keer overheen moeten lezen wat er nou precies fout aan was
Misschien maakt empty wel de lijst leeg, en geeft true terug als de lijst geleegd is, en false als de lijst leeg was. Dan heeft return !empty(); true terug als de lijst al leeg was :+ Dat je vervolgens wel je data kwijt bent als het niet zo was is een detail.

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 11:15
Parody schreef op donderdag 13 september 2018 @ 07:40:
Nog een mooie, ooit in een VC++ 6.0 project gezien waar ze zonder enige bijscholing Java-programmeurs op gezet hebben:
code:
1
2
bool empty() { ... }
bool isEmpty() { return ! empty(); }

En natuurlijk de vele calls als:
code:
1
2
3
...
myFunction(new ObjectName);
...

Uiteraard was niemand verantwoordelijk voor het opruimen van de rommel. Applicatie liep dus binnen afzienbare tijd uit het geheugen. In Java werkt dat, inderdaad...
Dat eerste ziet er ook niet uit als iets dat je in Java doet. :P

Voor dat tweede geldt inderdaad wel dat je even op de hoogte moet zijn van het feit dat je nu een object aanmaakt waarvoor je geen memory management kunt doen. Ik mag toch eigenlijk wel hopen dat iedereen met een HBO(+) IT opleiding wel in aanraking is gekomen met C(++) en weet dat je daarin grotendeels je eigen geheugenbeheer moet doen.

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


Acties:
  • +10 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:23

.oisyn

Moderator Devschuur®

Demotivational Speaker

ThomasG schreef op woensdag 12 september 2018 @ 13:55:
[...]
Maanden hebben wel nummers, veel maanden zijn ook immers vernoemt naar hun oorspronkelijke positie/nummer:
October was de 8e maand,. September was de 7e maand, November was de 9e maand een December was de 10e maand.
Afbeeldingslocatie: https://i.pinimg.com/originals/75/fa/59/75fa59ed8f3964b3e9b82ce880906982.jpg

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.


  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 10:58

RayNbow

Kirika <3

...al zijn juli en augustus niet toegevoegd. Die maanden heetten oorspronkelijk quintilis (5) en sextilis (6), respectievelijk. :p

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • ivov
  • Registratie: Februari 2013
  • Laatst online: 04-09 16:07
$true = true;

while($true == true) {

if($conditions) {
$true = false;
}
$conditions = someFunction($conditions);

}

Acties:
  • +8 Henk 'm!

  • Tjolk
  • Registratie: Juni 2007
  • Laatst online: 10:26
Het slechtste aan bovenstaande is het gebrek aan code tags en indentation.

Tjolk is lekker. overal en altijd.


Acties:
  • +1 Henk 'm!

  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 11:16
Tjolk schreef op donderdag 13 september 2018 @ 14:10:
Het slechtste aan bovenstaande is het gebrek aan code tags en indentation.
Inderdaad. Het gebruik van continue en break is eigenlijk smerig (het zijn gewoon veredelde goto statements), en zijn o.a. daarom in software voor een aantal sectoren (bijv: aviation, automotive, medisch, e.d.) niet toegestaan; anders krijg je de software niet gecertificeerd.

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 11:15
ThomasG schreef op donderdag 13 september 2018 @ 14:45:
[...]
Inderdaad. Het gebruik van continue en break is eigenlijk smerig (het zijn gewoon veredelde goto statements), en zijn o.a. daarom in software voor een aantal sectoren (bijv: aviation, automotive, medisch, e.d.) niet toegestaan; anders krijg je de software niet gecertificeerd.
Tja, is elke control structure uiteindelijk niet gewoon een veredelde GOTO statement? :P

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


  • Stoelpoot
  • Registratie: September 2012
  • Niet online
Wat is er in dat soort situaties nou echt mis met GOTO? Uiteraard is het geen control flow om een heel programma op te baseren, maar als je het enkel gebruikt om een loop niet overbodig te laten werken, en enkel voor die ene enkele loop, zou ik GOTO ook helemaal niet vreemd vinden als break; en continue; niet bestonden

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 11:15
Ben ook wel benieuwd hoe je switch statements in bijvoorbeeld Java of C# gaat implementeren zonder break. Of moet je dan 23 elseifs gebruiken? :P

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


  • Loetn
  • Registratie: December 2009
  • Laatst online: 09:41

Loetn

All-time lurker

Mugwump schreef op donderdag 13 september 2018 @ 16:13:
Ben ook wel benieuwd hoe je switch statements in bijvoorbeeld Java of C# gaat implementeren zonder break. Of moet je dan 23 elseifs gebruiken? :P
return :+

The best way to write secure and reliable applications. Write nothing; deploy nowhere.


Acties:
  • +1 Henk 'm!

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

Als je break en continue uit je programma haalt (want dan komt 'ie wel door de certificering heen) door gewoon de rest van je loop-body in een if-statement te zetten win je nou niet per sé aan leesbaarheid.
code:
1
2
3
4
5
6
7
while x:
    foo()
    if y:
        continue
    doe()
    je()
    ding()

versus
code:
1
2
3
4
5
6
while x:
    foo()
    if not y:
        doe()
        je()
        ding()

Ik kan er niet wakker om liggen. Natuurlijk moet je de continues en breaks niet als pepernoten rondstrooien, maar dat geldt voor elke taalconstructie: ik heb ook pogingen gezien waarbij men één exit point wilde houden (want dat is toch zo belangrijk voor de leesbaarheid!) en er op bovenstaande manier een vier lagen diepe if-statement werd gebruikt. Één exit point en compleet onleesbaar, dus dan is diegene even vergeten waarom hij die vuistregel ook alweer toepast.
Door dat switch-statement in een losse functie te stoppen, zodat alle lokale variabelen allemaal als argumenten meegegeven moeten worden zonder duidelijke externe betekenis.

Dat is ook alweer zo'n vuistregel die soms verkeerd toegepast wordt: extracten van methodes uit te lange functies, want kleine functies zijn beter leesbaar! En dan 10 argumenten voor elke hulpfunctie omdat alle lokale variabelen nodig zijn (want de oorspronkelijke code was spagetti, of gewoon een heel lange en complexe berekening).

[ Voor 26% gewijzigd door bwerg op 13-09-2018 16:22 ]

Heeft geen speciale krachten en is daar erg boos over.


  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 11:16
Het probleem van goto, continue, break en in zekere zin ook meerdere return statements is dat je unconditional branching krijgt. En zeker bij critieke systemen wil je dat voorkomen, omdat het moeilijker wordt aan de branch coverage te voldoen, en een foutje er zo is ingeslopen (veel bugs, maar zeker niet alle, komen vooruit uit unconditional branching die over het hoofd wordt gezien). Daarom hebben ze het in bepaalde industrieën die met critieke systemen werken verbannen.

Acties:
  • +2 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 11:15
Niet helemaal, return gaat terug uit je methode, waarmee je dus veronderstelt dat er na je switch niets gebeurt.
Nou is het in mijn ogen ook wel een best practice om je methodes klein te houden in plaats van één grote procedurele brei, maar er zijn vast situaties waar je er niet echt aan ontkomt en helaas deelt 90% van de ontwikkelaars mijn opvatting niet. :P
ThomasG schreef op donderdag 13 september 2018 @ 16:22:
Het probleem van goto, continue, break en in zekere zin ook meerdere return statements is dat je unconditional branching krijgt. En zeker bij critieke systemen wil je dat voorkomen, omdat het moeilijker wordt aan de branch coverage te voldoen, en een foutje er zo is ingeslopen (veel bugs, maar zeker niet alle, komen vooruit uit unconditional branching die over het hoofd wordt gezien). Daarom hebben ze het in bepaalde industrieën die met critieke systemen werken verbannen.
Ik snap de gedachte hoor, maar de vraag is of je dan überhaupt niet beter kunt overschakelen naar pure functionele talen of CLP aangezien het vrijwel altijd side-effects zijn die het gedrag van software nondeterministisch maken.

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


  • dcm360
  • Registratie: December 2006
  • Niet online

dcm360

Moderator Discord

HD7767 powered

ThomasG schreef op donderdag 13 september 2018 @ 16:22:
Het probleem van goto, continue, break en in zekere zin ook meerdere return statements is dat je unconditional branching krijgt. En zeker bij critieke systemen wil je dat voorkomen, omdat het moeilijker wordt aan de branch coverage te voldoen, en een foutje er zo is ingeslopen (veel bugs, maar zeker niet alle, komen vooruit uit unconditional branching die over het hoofd wordt gezien). Daarom hebben ze het in bepaalde industrieën die met critieke systemen werken verbannen.
Dat is toch ook niet logisch? Als de branch coverage lijdt onder het gebruik van bijvoorbeeld een continue, dan is de test coverage sowieso niet op orde. Als ik een continue in een loop plaats, is dat om om te gaan met bepaalde (edge) cases in het datamodel. Er moet sowieso al getest worden met die edge cases, dus beide branches moeten bij het testen worden uitgevoerd.

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

dcm360 schreef op donderdag 13 september 2018 @ 16:35:
Als ik een continue in een loop plaats, is dat om om te gaan met bepaalde (edge) cases in het datamodel. Er moet sowieso al getest worden met die edge cases, dus beide branches moeten bij het testen worden uitgevoerd.
Algemener gezegd: code aanpassen om aan coverage-criteria te voldoen is meestal ook dubieus. Als je je coverage niet haalt, moet je je test cases aanpassen, niet je programma.

Heeft geen speciale krachten en is daar erg boos over.


  • Stoelpoot
  • Registratie: September 2012
  • Niet online
Mugwump schreef op donderdag 13 september 2018 @ 16:33:
[...]


Niet helemaal, return gaat terug uit je methode, waarmee je dus veronderstelt dat er na je switch niets gebeurt.
Nou is het in mijn ogen ook wel een best practice om je methodes klein te houden in plaats van één grote procedurele brei, maar er zijn vast situaties waar je er niet echt aan ontkomt en helaas deelt 90% van de ontwikkelaars mijn opvatting niet. :P
Die mening deel ik ook wel, alleen soms heb je inderdaad van die core-functies die dan echt *alles* nodig hebben wat van te voren is bepaald, en dan kom je uit op een functie van 8+ parameters. Wordt je ook niet echt vrolijk van...

  • P1nGu1n
  • Registratie: Juni 2011
  • Laatst online: 10:19
Mugwump schreef op donderdag 13 september 2018 @ 10:27:
[...]


Dat eerste ziet er ook niet uit als iets dat je in Java doet. :P

Voor dat tweede geldt inderdaad wel dat je even op de hoogte moet zijn van het feit dat je nu een object aanmaakt waarvoor je geen memory management kunt doen. Ik mag toch eigenlijk wel hopen dat iedereen met een HBO(+) IT opleiding wel in aanraking is gekomen met C(++) en weet dat je daarin grotendeels je eigen geheugenbeheer moet doen.
Nee, voornamelijk Java, daarnaast C# en wat PHP en JavaScript (en Swift tijdens mijn minor). Overigens na mijn opleiding zelf wel wat gestoeid met C en C++.

Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.


Acties:
  • +1 Henk 'm!

  • Jerrythafast
  • Registratie: September 2012
  • Nu online
Stoelpoot schreef op donderdag 13 september 2018 @ 16:45:
[...]


Die mening deel ik ook wel, alleen soms heb je inderdaad van die core-functies die dan echt *alles* nodig hebben wat van te voren is bepaald, en dan kom je uit op een functie van 8+ parameters. Wordt je ook niet echt vrolijk van...
Hier iemand die een paar maanden terug een functie heeft uitgeplozen met negenentwintig argumenten... waarvan 12 met tweeletterige naam en de anderen waren niet veel duidelijker. Oh ja, en één van hen deed in werkelijkheid dienst als vehikel voor een return value.

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Mugwump schreef op donderdag 13 september 2018 @ 16:33:
[...]


Niet helemaal, return gaat terug uit je methode, waarmee je dus veronderstelt dat er na je switch niets gebeurt.
Nou is het in mijn ogen ook wel een best practice om je methodes klein te houden in plaats van één grote procedurele brei, maar er zijn vast situaties waar je er niet echt aan ontkomt en helaas deelt 90% van de ontwikkelaars mijn opvatting niet. :P
Een 1000 ( overdreven ) regel functie is prima, als hij maar duidelijk is. Ik lees liever sequentieel duizend regels dan dat ik van allerlei methodes over meerdere files moet doorneuzen. To each his own natuurlijk.

Less alienation, more cooperation.


  • Stoelpoot
  • Registratie: September 2012
  • Niet online
Sandor_Clegane schreef op donderdag 13 september 2018 @ 22:34:
[...]


Een 1000 ( overdreven ) regel functie is prima, als hij maar duidelijk is. Ik lees liever sequentieel duizend regels dan dat ik van allerlei methodes over meerdere files moet doorneuzen. To each his own natuurlijk.
Meestal heb je al die functies niet nodig. Als je een functienaam ziet "GetAllUnsentInvoices" zal het, mits je enigszins bekend bent met het ontwerp van de applicatie, niet nodig zijn om die functie te lezen.

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 11:15
Sandor_Clegane schreef op donderdag 13 september 2018 @ 22:34:
[...]


Een 1000 ( overdreven ) regel functie is prima, als hij maar duidelijk is. Ik lees liever sequentieel duizend regels dan dat ik van allerlei methodes over meerdere files moet doorneuzen. To each his own natuurlijk.
Als je een functie hebt die duidelijk meerdere stappen doet, dan maakt het opsplitsen in duidelijk benoemde deelfuncties de boel juist een stuk leesbaarder. Als je een fatsoenlijke IDE gebruikt boeit "over meerdere files" ook niet zo in mijn ogen.

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


Acties:
  • 0 Henk 'm!

  • Parody
  • Registratie: December 2002
  • Niet online
P1nGu1n schreef op donderdag 13 september 2018 @ 18:59:
[...]


Nee, voornamelijk Java, daarnaast C# en wat PHP en JavaScript (en Swift tijdens mijn minor). Overigens na mijn opleiding zelf wel wat gestoeid met C en C++.
Hmm, da's toch een gemis in een opleiding. Een gecompileerde taal heeft toch wat eigenschappen (zowel positief als negatief) die een script-taal of VM-taal mist. Er gaat op die manier een hoop achtergrond over geheugenmanagement, I/O, optimalisaties, etc verloren. Eigenlijk zou naar mijn mening iedere programmeur ook een basiskennis over assembly moeten hebben. Dan begrijp je tegen welke problemen een compiler (en een VM en een scripting-taal) aan loopt. Een stap verder zou zijn dat iedereen een compiler moet schrijven, maar voor het idee is naar mijn mening assembly wel voldoende.

Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 11:02
Sandor_Clegane schreef op donderdag 13 september 2018 @ 22:34:
[...]


Een 1000 ( overdreven ) regel functie is prima, als hij maar duidelijk is. Ik lees liever sequentieel duizend regels dan dat ik van allerlei methodes over meerdere files moet doorneuzen. To each his own natuurlijk.
Zo'n lange functie is per definitie onduidelijk. Waar ik werk wordt zoiets zowel tijdens code review als de code analyzer afgewezen. Je kan het altijd opsplitsen in verschillende classes of methods.

Acties:
  • +4 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 10:58

RayNbow

Kirika <3

Parody schreef op vrijdag 14 september 2018 @ 08:03:
Eigenlijk zou naar mijn mening iedere programmeur ook een basiskennis over assembly moeten hebben.
Waarom stoppen bij asm? Waarom niet verder gaan en elke ontwikkelaar logic gates aan elkaar laten knopen op een breadboard? Mooie dingen maken als SR latches en timing-gebeuren te begrijpen. Of nog een stapje verder en logic gates maken met transistoren? Of dominostenen? Of...? :p

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • +2 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
RayNbow schreef op vrijdag 14 september 2018 @ 08:20:
[...]

Waarom stoppen bij asm? Waarom niet verder gaan en elke ontwikkelaar logic gates aan elkaar laten knopen op een breadboard? Mooie dingen maken als SR latches en timing-gebeuren te begrijpen. Of nog een stapje verder en logic gates maken met transistoren? Of dominostenen? Of...? :p
Das het leuke van coder zijn met een werktuigbouwkunde achtergrond. Ik heb nog wel pneumatische schakelingen ontworpen en gebouwd tijdens mijn studie :D

Acties:
  • +1 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

rutgerw schreef op vrijdag 14 september 2018 @ 08:04:
[...]


Zo'n lange functie is per definitie onduidelijk. Waar ik werk wordt zoiets zowel tijdens code review als de code analyzer afgewezen. Je kan het altijd opsplitsen in verschillende classes of methods.
Hij is onduidelijk omdat hij lang is? Dat is nieuw.

Het is een beetje hetzelfde als een verhaal lezen met een boel voetnoten, dat leest voor geen meter. Omdat je constant van je verhaal naar de achterkant van het boek loopt te bladeren om te zien wat iets nu weer betekend. Als je functie een ding doet, maar dat kost een hoop regels zie ik het probleem niet.

En over je IDE, tja dat maakt het misschien iets gemakkelijker maar andere kant ook weer een stuk complexer doordat er een hoop "magic" gebeurt waar je geen weet van hebt. Ik ben ook niet zo'n fan van Aspects in mijn code, is weer een hoop "extra" waar je moeilijk grip op krijgt.

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

RayNbow schreef op vrijdag 14 september 2018 @ 08:20:
[...]

Waarom stoppen bij asm? Waarom niet verder gaan en elke ontwikkelaar logic gates aan elkaar laten knopen op een breadboard? Mooie dingen maken als SR latches en timing-gebeuren te begrijpen. Of nog een stapje verder en logic gates maken met transistoren? Of dominostenen? Of...? :p
Waar gaan ze dan nog tijd voor sensitiviteitstraining vinden?

Acties:
  • +2 Henk 'm!

  • Tjolk
  • Registratie: Juni 2007
  • Laatst online: 10:26
Sandor_Clegane schreef op vrijdag 14 september 2018 @ 09:33:
[...]


Hij is onduidelijk omdat hij lang is? Dat is nieuw.

Het is een beetje hetzelfde als een verhaal lezen met een boel voetnoten, dat leest voor geen meter. Omdat je constant van je verhaal naar de achterkant van het boek loopt te bladeren om te zien wat iets nu weer betekend. Als je functie een ding doet, maar dat kost een hoop regels zie ik het probleem niet.
Op zich ben ik het een eind met je eens hoor; als er veel gebeurt heb je soms veel code nodig. Ik hou doorgaans met name DRY aan, maar als iets maar 1x nodig is splits ik het soms alsnog op in meerdere functies. Met name dingen die in loopjes gebeuren en om teveel nesting te voorkomen.

Qua voetnoten ben ik het niet helemaal met je eens; als je de de functie van de goede comments met uitleg over parameters en return values voorziet en logische namen gebruikt dan is er weinig bezwaar om het op te splitsen. Sterker nog; dan kan het dus inderdaad overzichtelijker worden doordat je een handeling van pakweg 50 regels in 1 regel samenvat.

Stel:
code:
1
2
3
4
5
6
7
8
9
Loop 10 meter
Sla linksaf
Steek plein over
Sla linksaf
Loop 100 meter
Sla rechtsaf
Loop 200 meter
Loop schoolplein op
Stap school binnen

Of
code:
1
loopNaarSchool()

Tjolk is lekker. overal en altijd.


Acties:
  • 0 Henk 'm!

  • Crazy D
  • Registratie: Augustus 2000
  • Nu online

Crazy D

I think we should take a look.

Sandor_Clegane schreef op vrijdag 14 september 2018 @ 09:33:
En over je IDE, tja dat maakt het misschien iets gemakkelijker maar andere kant ook weer een stuk complexer doordat er een hoop "magic" gebeurt waar je geen weet van hebt. Ik ben ook niet zo'n fan van Aspects in mijn code, is weer een hoop "extra" waar je moeilijk grip op krijgt.
Ben je een oplossing aan het maken of wil je full control over de code? Het boeit mij persoonlijk echt geen zak wat visual studio allemaal doet op de achtergrond, als ik maar de oplossing kan maken waar om gevraagd is.

Ik heb daardoor bv ook geen moeite met langere functies als ik ze in de IDE handig kan inklappen. Jammer dat het lastiger leesbaar is in notepad (...) maar I don't care.

Hoewel in het voorbeeld met LoopNaarSchool() dat wel een typisch voorbeeld is die ik (meestal?) ook wel als losse functie maak, ook al wordt ie maar vanaf 1 plek aangeroepen, gewoon omdat ik geen moeite heb met lange functies maar liever een rijtje zie a la
DoeOchtendRitueel();
Aankleden();
LoopNaarSchool();

dan 100 regels die uiteindelijk dat allemaal doen. Dat is voor de Quick scan handiger leesbaar, maar als ik er echt mee bezig ben maakt me dat weer weinig uit.

Exact expert nodig?


Acties:
  • 0 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 11:15
RayNbow schreef op vrijdag 14 september 2018 @ 08:20:
[...]

Waarom stoppen bij asm? Waarom niet verder gaan en elke ontwikkelaar logic gates aan elkaar laten knopen op een breadboard? Mooie dingen maken als SR latches en timing-gebeuren te begrijpen. Of nog een stapje verder en logic gates maken met transistoren? Of dominostenen? Of...? :p
Nou ja, je moet natuurlijk ergens een grens trekken, maar een wat meer fundamenteel begrip van wat een computer doet kan zeker geen kwaad. Ik heb een vrij brede opleiding gehad waarin het hele spectrum van hardware description languages tot aan 3/4GL talen voorbij kwam. Niet dat ik in de praktijk ooit nog iets met ASM of met AHDL zou doen, maar het kan geen kwaad om te snappen hoe dat soort zaken werken, juist ook als ze in het dagelijks gebruik zijn weggeabstraheerd.

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


Acties:
  • 0 Henk 'm!

  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 10:58

RayNbow

Kirika <3

Mugwump schreef op vrijdag 14 september 2018 @ 11:24:
[...]


Nou ja, je moet natuurlijk ergens een grens trekken, maar een wat meer fundamenteel begrip van wat een computer doet kan zeker geen kwaad. Ik heb een vrij brede opleiding gehad waarin het hele spectrum van hardware description languages tot aan 3/4GL talen voorbij kwam.
Oh, voor mij is dit ook wel zo'n 14-15 jaar geleden. :p
Niet dat ik in de praktijk ooit nog iets met ASM of met AHDL zou doen, maar het kan geen kwaad om te snappen hoe dat soort zaken werken, juist ook als ze in het dagelijks gebruik zijn weggeabstraheerd.
Ik kwam er laatst achter dat een voor de programma's waar ik tegenwoordig verantwoordelijk ben gebruikmaakt van inline asm. Dat wordt leuk als we besluiten om een keer het programma te porten naar 64 bits. :p

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


Acties:
  • +2 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Crazy D schreef op vrijdag 14 september 2018 @ 11:23:
[...]

Ben je een oplossing aan het maken of wil je full control over de code? Het boeit mij persoonlijk echt geen zak wat visual studio allemaal doet op de achtergrond, als ik maar de oplossing kan maken waar om gevraagd is.
Omdat het spul ook wel eens stuk gaat of zich net niet zo gedraagt zoals jij denkt. Dan is het handig dat je simpel van A tot Z kan zien wat er gedaan wordt, zonder dat er een hoop voor je verborgen wordt.

Visual Studio verbergt een hoop voor je, had ik laatst een probleem met dependencies kan je alsnog handmatig in de csproj of fsproj lopen miepen. En dan ineens kom je erachter wat voor meuk die "generated" dingen zijn.


Zoals ik al zei, ieder zijn ding.

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Sandor_Clegane schreef op vrijdag 14 september 2018 @ 11:29:
[...]
Visual Studio verbergt een hoop voor je, had ik laatst een probleem met dependencies kan je alsnog handmatig in de csproj of fsproj lopen miepen. En dan ineens kom je erachter wat voor meuk die "generated" dingen zijn.
[...]
Dat is voor mij de grootste ergernis met mijn 'simpele PHP achtergrond'. In Git commits mergen met die van collega's is ook zo leuk met die generated zooi.

Hoeder van het Noord-Meierijse dialect


Acties:
  • 0 Henk 'm!

  • Stoelpoot
  • Registratie: September 2012
  • Niet online
Sandor_Clegane schreef op vrijdag 14 september 2018 @ 11:29:
[...]


Omdat het spul ook wel eens stuk gaat of zich net niet zo gedraagt zoals jij denkt. Dan is het handig dat je simpel van A tot Z kan zien wat er gedaan wordt, zonder dat er een hoop voor je verborgen wordt.

Visual Studio verbergt een hoop voor je, had ik laatst een probleem met dependencies kan je alsnog handmatig in de csproj of fsproj lopen miepen. En dan ineens kom je erachter wat voor meuk die "generated" dingen zijn.


Zoals ik al zei, ieder zijn ding.
Zelf vind ik die generated dingen vaak wel erg duidelijk. Tenzij het echt generated code uit een designer is, vind ik het mergen van bijvoorbeeld een .csproj erg gemakkelijk. Uiteindelijk is het maar XML.

Acties:
  • +1 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Stoelpoot schreef op vrijdag 14 september 2018 @ 12:07:
[...]


Zelf vind ik die generated dingen vaak wel erg duidelijk. Tenzij het echt generated code uit een designer is, vind ik het mergen van bijvoorbeeld een .csproj erg gemakkelijk. Uiteindelijk is het maar XML.
Maar weer met zijn eigen schema, filetje kopiëren? Gaat dat in een <ItemGroup>? Of gaat het ergens anders in? ServiceReference leest niet alle strings? Kun je weer in in een XML de buffers gaan vergroten, waar gaat dat in? Hoort dat bij de reference zelf? Of hoort dat bij de globale config en hoe ziet dat er dan weer uit. En zo zijn er nog wel een paar.

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • Stoelpoot
  • Registratie: September 2012
  • Niet online
Crazy D schreef op vrijdag 14 september 2018 @ 11:23:
[...]

Ben je een oplossing aan het maken of wil je full control over de code? Het boeit mij persoonlijk echt geen zak wat visual studio allemaal doet op de achtergrond, als ik maar de oplossing kan maken waar om gevraagd is.

Ik heb daardoor bv ook geen moeite met langere functies als ik ze in de IDE handig kan inklappen. Jammer dat het lastiger leesbaar is in notepad (...) maar I don't care.

Hoewel in het voorbeeld met LoopNaarSchool() dat wel een typisch voorbeeld is die ik (meestal?) ook wel als losse functie maak, ook al wordt ie maar vanaf 1 plek aangeroepen, gewoon omdat ik geen moeite heb met lange functies maar liever een rijtje zie a la
DoeOchtendRitueel();
Aankleden();
LoopNaarSchool();

dan 100 regels die uiteindelijk dat allemaal doen. Dat is voor de Quick scan handiger leesbaar, maar als ik er echt mee bezig ben maakt me dat weer weinig uit.
Ik vind juist dat dat, als je er mee bezig bent, veel uit maakt. Je kan je dan namelijk er op focussen dat je DoeOchtendRitueel() aanpast als je je bed hebt verplaatst en aan de andere kant er uit moet stappen, zonder ook Aankleden() en LoopNaarSchool() aan te hoeven passen.

Acties:
  • +1 Henk 'm!

  • Tjolk
  • Registratie: Juni 2007
  • Laatst online: 10:26
Harrie_ schreef op vrijdag 14 september 2018 @ 12:05:
[...]


Dat is voor mij de grootste ergernis met mijn 'simpele PHP achtergrond'. In Git commits mergen met die van collega's is ook zo leuk met die generated zooi.
Wij houden de vendor map eigenlijk gewoon in .gitignore. Gewoon composer update en gaan met die banaan. Niet voor elk lullig dingetje, maar voor iedere nieuwe tag alvorens het naar acceptatie gaat (en lokaal natuurlijk).

Tjolk is lekker. overal en altijd.


Acties:
  • 0 Henk 'm!

  • Harrie_
  • Registratie: Juli 2003
  • Niet online

Harrie_

⠀                  🔴 🔴 🔴 🔴 🔴

Tjolk schreef op vrijdag 14 september 2018 @ 13:41:
[...]

Wij houden de vendor map eigenlijk gewoon in .gitignore. Gewoon composer update en gaan met die banaan. Niet voor elk lullig dingetje, maar voor iedere nieuwe tag alvorens het naar acceptatie gaat (en lokaal natuurlijk).
Inderdaad maar ik heb in Git dan ook geen problemen met PHP-projecten, juist wel met VS/C# projecten waar al die onleesbare generated code inzit van de designer.

Hoeder van het Noord-Meierijse dialect


Acties:
  • 0 Henk 'm!

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

Parody schreef op vrijdag 14 september 2018 @ 08:03:
[...]

Hmm, da's toch een gemis in een opleiding. Een gecompileerde taal heeft toch wat eigenschappen (zowel positief als negatief) die een script-taal of VM-taal mist.
Om even te mierenneuken: talen zijn niet inherent gecompileerd of geïnterpret (is dat Nederlands?), en Java-code en C#-code wordt doorgaans gecompileerd.

Ik ben het verder wel eens met je verhaal. :) Het bouwen van een compiler is sowieso een erg leuke programmeeropdracht, dus zonde om niet een keer gedaan te hebben.

[ Voor 16% gewijzigd door bwerg op 14-09-2018 15:03 ]

Heeft geen speciale krachten en is daar erg boos over.


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 11:18

Haan

dotnetter

Tjolk schreef op vrijdag 14 september 2018 @ 10:01:
[...]
Qua voetnoten ben ik het niet helemaal met je eens; als je de de functie van de goede comments met uitleg over parameters en return values voorziet en logische namen gebruikt dan is er weinig bezwaar om het op te splitsen. Sterker nog; dan kan het dus inderdaad overzichtelijker worden doordat je een handeling van pakweg 50 regels in 1 regel samenvat.

Stel:
code:
1
2
3
4
5
6
7
8
9
Loop 10 meter
Sla linksaf
Steek plein over
Sla linksaf
Loop 100 meter
Sla rechtsaf
Loop 200 meter
Loop schoolplein op
Stap school binnen

Of
code:
1
loopNaarSchool()
Da's niet zo'n heel goed voorbeeld, maar precies eentje om wél op te splitsen :>
code:
1
2
3
4
5
6
7
8
9
10
11
12
public void SlaAf(Richting richting) {..}
public void Loop(int meters) {.. }
public void SteekOver(Object obj) {..}
// etc. 

Loop(10);
SlaAf(Richting.Links);
SteekOver(plein);
SlaAf(Richting.Links);
Loop(100)
SlaAf(Richting.Rechts);
//etc

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

Haan schreef op vrijdag 14 september 2018 @ 14:46:
[...]

Da's niet zo'n heel goed voorbeeld, maar precies eentje om wél op te splitsen :>
Dit is geen opsplitsen, het maakt alleen sommige functies generieker (slaAf en steekOver). Jouw functie is precies even lang als de oorspronkelijke functie.

Sowieso een beetje moeilijk om precies te maken met pseudocode, natuurlijk.

[ Voor 9% gewijzigd door bwerg op 14-09-2018 14:50 ]

Heeft geen speciale krachten en is daar erg boos over.


Acties:
  • 0 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 11:15
bwerg schreef op vrijdag 14 september 2018 @ 13:55:
[...]

Om even te mierenneuken: talen zijn niet gecompileerd of geïnterpret (is dat Nederlands?), en Java-code en C#-code wordt doorgaans gecompileerd.

Ik ben het verder wel eens met je verhaal. :) Het bouwen van een compiler is sowieso een erg leuke programmeeropdracht, dus zonde om niet een keer gedaan te hebben.
Ik vond het ook leuk om te doen inderdaad, maar het is wel best pittig. Gaf me wel heel wat meer respect voor zaken als de JVM. :P

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


Acties:
  • 0 Henk 'm!

  • Jerrythafast
  • Registratie: September 2012
  • Nu online
Over het algemeen ben ik niet zo van het opsplitsen van functies, heb ook meer dan eens 100en regels in een functie gehad omdat opsplitsen er alleen maar toe zou leiden dat elke functie eenmaal zou worden aangeroepen (met een hoop argumenten heen en weer). Een fijn voordeel van opsplitsen is wel dat je op een lager niveau kunt profilen, als performance belangrijk is kun je met opgesplitste code veel beter zien waar de meeste pijn zit. Als je in het voorbeeld hierboven alleen maar loopNaarSchool() hebt weet je nog niks. Het wordt pas interessant als blijkt dat slaAf() bijvoorbeeld langer duurt dan loop(). Dan moet je blijkbaar iets doen aan je manier van afslaan om eerder op school te komen ;)

[ Voor 6% gewijzigd door Jerrythafast op 14-09-2018 20:53 ]


Acties:
  • 0 Henk 'm!

  • sig69
  • Registratie: Mei 2002
  • Laatst online: 11:09
Mij interesseert het me geen zak. Ik programmeer in C#. Daar ken ik alle ins en outs van. Waarom zou ik me druk moeten maken om C++, of zelfs assembly?

Roomba E5 te koop


Acties:
  • 0 Henk 'm!

  • PageFault
  • Registratie: April 2002
  • Laatst online: 10-09 19:15
sig69 schreef op vrijdag 14 september 2018 @ 21:26:
Mij interesseert het me geen zak. Ik programmeer in C#. Daar ken ik alle ins en outs van. Waarom zou ik me druk moeten maken om C++, of zelfs assembly?
De enige reden die ik kn bedenken: native code, geen framework nodig. Dat vind ik bij zowel Java als .NET het grootste nadeel.

Assembly kost je teveel tijd, maar wanneer het klein moet....
Pagina: 1 ... 15 ... 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. :)