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.
1
2
3
4
5
6
7
8
9
| public void maakOver(int van, int naar, double bedrag) { Rekening rvan = getRekening(van); Rekening rnaar = getRekening(naar); if (rvan != null && rnaar != null && rvan instanceof Betaalrekening) { if (rvan.neemOp(bedrag)) { rnaar.stort(bedrag); } } } |
Twee spaties?

Aldus alle code bij het vak Java van de OU. Gelukkig zijn er auto-indenters.
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.
Ja, dat vond ik ook meer een WTF.
Als je een rekening-klasse hebt, dan geef je toch 2 objecten van dat type mee aan de maakOver methode? Eventueel met een overload. En misschien moet je van de return-type een boolean maken om aan te geven of het overmaken gelukt is.
1
2
3
4
5
6
7
8
9
| public boolean maakOver(string rekeningVan, string rekeningNaar, double bedrag) { return maakOver(getRekening(rekeningVan), getRekening(rekeningNaar), bedrag); } public boolean maakOver(Rekening van, Rekening naar, double bedrag) { // Do stuff } |
Laten we het er op houden dat het hoofdstuk 1 van het boek is en er later nog uitgebreid wordt ingegaan op goed ontwerp.
Het punt was de onleesbaarheid van de code door een gebrek aan witregels en minimale indenting.
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
Hehe, wist ik veel
Ik heb jaren gewerkt met 2-spaties-indenting. Dat was de standaard bij een bedrijf waar ik toen begon en als je eraan gewend bent is het prima te doen. Vind ik een stuk fijner dan 8 spaties in elk geval, dan zit je na drie indents al halverwege de regel zowatkenneth schreef op maandag 31 januari 2011 @ 13:57:
Twee spaties?Zeker nooit langer dan een uur achtereen naar code gekeken?
Overigens hielden we daar wel altijd aan om twee witregels tussen methodes te laten, daar erger ik me zelf dan weer aan, mensen die hun methodes direct onderelkaar plakken, uiteraard zonder commentaar ertussen, zodat je mag lopen pluizen waar de ene begint en de andere eindigt


Let op: Mijn post bevat meningen, aannames of onwaarheden
Is het toevallig het boek waar je leert programmeren met behulp van BlueJ? (Gert Jan van der Laan uit m'n hoofd)?kenneth schreef op maandag 31 januari 2011 @ 14:14:
Om daar iets over te kunnen zeggen moet je de ontwerpoverwegingen van het project kennen
Laten we het er op houden dat het hoofdstuk 1 van het boek is en er later nog uitgebreid wordt ingegaan op goed ontwerp.
Het punt was de onleesbaarheid van de code door een gebrek aan witregels en minimale indenting.
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
Tja, waarom gebruiken ze dan niet gewoon een simpeler voorbeeld ("Hello World") in plaats van iets wat later toch weer overruled wordt?kenneth schreef op maandag 31 januari 2011 @ 14:14:
Om daar iets over te kunnen zeggen moet je de ontwerpoverwegingen van het project kennen
Laten we het er op houden dat het hoofdstuk 1 van het boek is en er later nog uitgebreid wordt ingegaan op goed ontwerp.
Het punt was de onleesbaarheid van de code door een gebrek aan witregels en minimale indenting.
en geldbedragen als double.

https://fgheysels.github.io/
whoami
[ Voor 3% gewijzigd door CodeCaster op 31-01-2011 15:12 ]
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
Verwijderd
Och, bij mijn course OOP werd een double als rekeningnummer gebruiktCodeCaster schreef op maandag 31 januari 2011 @ 15:12:
Ik vind het jammer (ja, daar ben ik weer) dat het over te maken bedrag een double is.
whoami
Toen ik vroeg waarom zei de docent dat het was omdat er dan "goed grote getallen in kunnen"

Je zit bij zo'n vak toch altijd op een punt dat je moet schipperen tussen didactiek en academische correctheid. Dit is ver voorbij de fase "hello, world" maar nog vóór zaken als interfaces, abstract classes en design patterns. Dan kan je wel iets helemaal correct maken maar dan wordt het weer erg complex voor mensen die nog nooit hebben geprogrammeerd of te simpel waardoor het tempo te laag ligt.Davio schreef op maandag 31 januari 2011 @ 14:55:
[...]
Tja, waarom gebruiken ze dan niet gewoon een simpeler voorbeeld ("Hello World") in plaats van iets wat later toch weer overruled wordt?
Het argument uit het boek om geen Rekening maar een rekeningnummer door te sturen is dat de Bank-class alle rekeningen beheert en men van buitenaf alleen het rekeningnummer weet en de Rekening-class niet kent. Valt wat voor te zeggen. Zeker als het doel van het hoofdstuk heel ergens anders over gaat
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
2 en 4 zijn mooie ronde getallen, 3 is dat niet. Als je lekker gegeten hebt voor 55 euro dan rond je dat toch ook af naar 64 euro?
Daarom vind ik onderstaande altijd duidelijker:kenneth schreef op maandag 31 januari 2011 @ 13:57:
Ik weet dat indenting een heilig huisje is maar:
[....]
Twee spaties?Zeker nooit langer dan een uur achtereen naar code gekeken?
Aldus alle code bij het vak Java van de OU. Gelukkig zijn er auto-indenters.
1
2
3
4
5
6
7
8
9
10
| public void maakOver(int van, int naar, double bedrag) { Rekening rvan = getRekening(van); Rekening rnaar = getRekening(naar); if (rvan != null && rnaar != null && rvan instanceof Betaalrekening) { if (rvan.neemOp(bedrag)) rnaar.stort(bedrag); } } |
Om de discussie niet te starten, ik vind dat je altijd de manier van de coding guidelines moet gebruiken.

[ Voor 1% gewijzigd door Guldan op 31-01-2011 15:41 . Reden: oeps ]
You know, I used to think it was awful that life was so unfair. Then I thought, wouldn't it be much worse if life were fair, and all the terrible things that happen to us come because we actually deserve them?
Tuurlijk rond je wel af naar 64 euro, dat is een mooi rond getal (100) in het acht tallig stelsel.BurningSheep schreef op maandag 31 januari 2011 @ 15:28:
[...]Als je lekker gegeten hebt voor 55 euro dan rond je dat toch ook af naar 64 euro?
Maar waarom indenten jullie met spaties en niet met een tab, dat is 1 teken en je kan in een redelijke editor de tabgrote netjes aangeven. Dan kan elke ontwikkelaar werken op de manier die hij het prettigst vindt.
Ik kom in systemen waar ik mee werk regelmatig floats tegen die gebruikt worden voor velden als 'aantal werknemers', 'beschikbare plaatsten', etc.Verwijderd schreef op maandag 31 januari 2011 @ 15:15:
[...]
Och, bij mijn course OOP werd een double als rekeningnummer gebruikt.
Toen ik vroeg waarom zei de docent dat het was omdat er dan "goed grote getallen in kunnen".
Kater? Eerst water, de rest komt later
Misschien wat off-topic, maar dat boek gebruiken wij op school ook en BlueJ is echt een afschuwelijke IDEEnfer schreef op maandag 31 januari 2011 @ 14:46:
[...]
Is het toevallig het boek waar je leert programmeren met behulp van BlueJ? (Gert Jan van der Laan uit m'n hoofd)?

Oh ja, over jou gesprokenCodeCaster schreef op maandag 31 januari 2011 @ 15:12:
Ik vind het jammer (ja, daar ben ik weer) dat het over te maken bedrag een double is.
whoami
Ik ben er nog steeds niet uit. Van wat ik ervan zie is dat een decimal wordt opgeslagen als: mantissa * 10exp, waarbij de mantissa uit een 96 bits int bestaat. Bij €42,50 is de berekende BTW als double exact 4545820873877094 * 2-49, oftewel ~8,0749999999999992894572642398998. Een decimal heeft genoeg precisie om dat getal aardig te benaderen: het zou dan 807499999999999928945726424 * 10-26 worden. Ik zie geen reden waarom hij het zou afronden naar 8,075.oisyn schreef op vrijdag 28 januari 2011 @ 00:28:
[...]
Dat lijkt me nog steeds fout. Jij convert het btw bedrag na decimal nádat je het als double hebt uitgerekend. Waarom er toevallig exact dezelfde uitkomst uit komt is me nog niet helemaal duidelijk.
[ Voor 15% gewijzigd door .oisyn op 31-01-2011 19:08 ]
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.
Ik vind het toch vreemd dat het de bank alles regelt. Ik zou het logischer vinden dat er een methode "transferGeld" oid in de Rekening klasse zit. De Bank beheert de rekeningen, dus het opzoeken adv een nummer kan de bank doen, maar dan zit je met een Rekening class waarmee je dan andere zaken kan doen. Zo was het toch in mijn Delphi (OOP) cursus 3 jaar geleden.
Beschikbare plaatsen is toch logisch als float... stoeltjes delen hé.Haan schreef op maandag 31 januari 2011 @ 15:45:
[...]
Ik kom in systemen waar ik mee werk regelmatig floats tegen die gebruikt worden voor velden als 'aantal werknemers', 'beschikbare plaatsten', etc.
Ik heb twee jaar gelden ook BlueJ gebruikt op mijn school. BlueJ is niet bedoeld als professionele IDE, maar als een academische tool. Het doel is om er voor te zorgen dat je de taal goed leert kennen (en dus niet blindelings de editor alles laat doen). Op die manier leer je ook sneller om minder fouten te typen. Zodra je de basis Java achter de kiezen hebt, werd er bij ons overgestapt naar Eclipse wegens enkele handige features. (Al zie ik nog steeds veel mensen gewoon typen en auto complete gebruiken zonder te weten wat te doen. Auto complete enter en dan testen, blindelings zonder na te denken.)Bv202 schreef op maandag 31 januari 2011 @ 15:49:
[...]
Misschien wat off-topic, maar dat boek gebruiken wij op school ook en BlueJ is echt een afschuwelijke IDE
EDIT:
Jep, je hebt gelijk.kenneth schreef op maandag 31 januari 2011 @ 15:54:
[...]
De bank regelt niet alles, de bank coordineert een storting/opname. Het debiteren/crediteren enz gebeurt in de Rekening-class.
Maar nogmaals: je kan obv een paar regels code geen conclusies trekken over het hele ontwerp of de didactische waarde en dat was ook het hele punt niet
[ Voor 48% gewijzigd door Styxxy op 31-01-2011 15:55 ]
De bank regelt niet alles, de bank coordineert een storting/opname. Het debiteren/crediteren enz gebeurt in de Rekening-class.Styxxy schreef op maandag 31 januari 2011 @ 15:50:
@ Bankdiscussie:
Ik vind het toch vreemd dat het de bank alles regelt. Ik zou het logischer vinden dat er een methode "transferGeld" oid in de Rekening klasse zit. De Bank beheert de rekeningen, dus het opzoeken adv een nummer kan de bank doen, maar dan zit je met een Rekening class waarmee je dan andere zaken kan doen. Zo was het toch in mijn Delphi (OOP) cursus 3 jaar geleden.
Maar nogmaals: je kan obv een paar regels code geen conclusies trekken over het hele ontwerp of de didactische waarde en dat was ook het hele punt niet
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
Het is wat spartaans ja, maar goed geschikt om mee te beginnen, zonder meteen verwend te worden met allerlei leuke IDE features. Maar na een aantal weken idd wel snel overstappen naar een 'echte' IDEBv202 schreef op maandag 31 januari 2011 @ 15:49:
[...]
Misschien wat off-topic, maar dat boek gebruiken wij op school ook en BlueJ is echt een afschuwelijke IDE
Kater? Eerst water, de rest komt later
Blegh, wij moesten op de opleiding verplicht het hele eerste jaar werken met BlueJ. Wat een verrot programma was dat zeg. Geen intelligentie en/of realtime-checks.Haan schreef op maandag 31 januari 2011 @ 15:55:
Het is wat spartaans ja, maar goed geschikt om mee te beginnen, zonder meteen verwend te worden met allerlei leuke IDE features. Maar na een aantal weken idd wel snel overstappen naar een 'echte' IDE
Bah bah, we deden vaak alles in Eclipse of Borland (vraag me overigens niet waarom) ontwikkelen en het uiteindelijke programma/broncode porten naar BlueJ. Docenten blij en wij geholpen, wat wil je nog meer
If money talks then I'm a mime
If time is money then I'm out of time
Gelijkaardige situaties hier, maar dan met DrJava.Matis schreef op maandag 31 januari 2011 @ 18:18:
[...] we deden vaak alles in Eclipse of Borland (vraag me overigens niet waarom) ontwikkelen en het uiteindelijke programma/broncode porten naar BlueJ. Docenten blij en wij geholpen, wat wil je nog meer
CoC: MISSeR | Steam: r3veng
Idem, misschien is het inderdaad goed om de eerste weken mee te beginnen, maar dat is bij ons helemaal niet het geval. Wij moeten er echt een heel jaar mee werken.Matis schreef op maandag 31 januari 2011 @ 18:18:
[...]
Blegh, wij moesten op de opleiding verplicht het hele eerste jaar werken met BlueJ. Wat een verrot programma was dat zeg. Geen intelligentie en/of realtime-checks.
Bah bah, we deden vaak alles in Eclipse of Borland (vraag me overigens niet waarom) ontwikkelen en het uiteindelijke programma/broncode porten naar BlueJ. Docenten blij en wij geholpen, wat wil je nog meer
Zelfs diegenen die nog nooit geprogrammeerd hadden waren BlueJ na een paar weken al beu

Af en toe wil iemand mij nog overtuigen van het geweldige Netbeans maardaar word ik nog steeds niet blij van.
IntelliJ wel, maar dat is voor thuis iets te prijzig/OS gebonden.
[ Voor 9% gewijzigd door Afvalzak op 31-01-2011 18:42 ]
Jupafvalzak schreef op maandag 31 januari 2011 @ 18:42:
Lol, Avans zeker?
Borland; Nog een geweldig IDE die de Avans preesOf is dat op meer scholen het geval, (BlueJ) gelukkig ben ik op MBO gelijk begonnen met toendertijd JBuilder, en later Eclipse en mocht dat als verkorte instroom ook gebruikt worden op het HBO.

Netbeans was al een heel stuk beter, we moesten het gebruiken voor QNX.Af en toe wil iemand mij nog overtuigen van het geweldige Netbeans maardaar word ik nog steeds niet blij van.
IntelliJ wel, maar dat is voor thuis iets te prijzig/OS gebonden.
De beste daarvoor blijft eigenlijk nog wel Eclipse. Het heeft zijn nukken, maar is vanaf Gallileo een heel stuk beter geworden. Ik doe momenteel alles in Eclipse. C(++), Java en PHP. Heerlijk werkt dat
If money talks then I'm a mime
If time is money then I'm out of time
Vervolgens een lijst wat je in ieder geval nodig hebt en een aanbeveling om Eclipse te gebruiken.We hebben daarom besloten om het cursusmateriaal onafhankelijk te maken van de gebruikte software.
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
Een currency wordt in Delphi opgeslagen als 64-bits integer waarbij de laatste vier decimalen als getal achter de komma worden gebruikt. Desalniettemin zou ,0749 niet moeten worden afgerond naar ,08..oisyn schreef op maandag 31 januari 2011 @ 15:49:
[...]
Oh ja, over jou gesproken
[...]
Ik ben er nog steeds niet uit. Van wat ik ervan zie is dat een decimal wordt opgeslagen als: mantissa * 10exp, waarbij de mantissa uit een 96 bits int bestaat. Bij €42,50 is de berekende BTW als double exact 4545820873877094 * 2-49, oftewel ~8,0749999999999992894572642398998. Een decimal heeft genoeg precisie om dat getal aardig te benaderen: het zou dan 807499999999999928945726424 * 10-26 worden. Ik zie geen reden waarom hij het zou afronden naar 8,075
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
Het ergste vond ik nog dat ze ieder blok weer een functionaliteit wilde gebruiken die alleen in de enterprise versie zat. Vaak ook nog alleen in de laatste versie. Je kon dus geen gebruik maken van de gratis versies, de trials waren over het algemeen niet lang genoeg te gebruiken voor een lesblok en doordat men iedere keer de laatste versie wilde gebruiken was het ook niet te doen om iedere keer je versie te upgraden of legaal aan te schaffen (zelfs de studenten versies worden prijzig als je ieder blok moet upgraden). Er was dus een grote handel in illegale versies van Borland JBuilder... Je werd min of meer verplicht illegale versies te gebruiken.
Er waren wel wat practica lokalen, maar die waren of in gebruik, of de pc waren stuk of weet ik veel wat... Ik heb destijds zelfs contact gehad met Borland omdat ik wilde weten of je de licentie ook mocht gebruiken na je studie, maar nooit iets van gehoord, nou dan niet

Heb pas mijn oude rommel opgeruimd maar had geloof ik 5 verschillende JBuilder releases liggen (in nog geen 4 jaar tijd). Daarbij komt wat moet ik met software uit 2001...
The #1 programmer excuse for legitimately slacking off: "My code's compiling"
Firesphere: Sommige mensen verdienen gewoon een High Five. In the Face. With a chair.
Het was een prima IDE om in te leren programmeren, dan maakt het nog niet zoveel uit, al vind ik BlueJ wel weer de andere wereld
Het punt is dat bij de conversie naar currency de 8,0749999.. wordt afgerond naar 8,075, en daarna doe je een round(2), dus wordt dat 8,08.CodeCaster schreef op maandag 31 januari 2011 @ 19:39:
[...]
Een currency wordt in Delphi opgeslagen als 64-bits integer waarbij de laatste vier decimalen als getal achter de komma worden gebruikt. Desalniettemin zou ,0749 niet moeten worden afgerond naar ,08.
In C# lijkt iets soortgelijks te gebeuren. Wellicht met opzet? De eerstvolgende double na 8,07499999..4 is 8,0750000..1
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.
In 2003 leerden we op de uni Java met JCreator LE, was wel een aardige IDE'tje, maar na mijn uni-tijd eigenlijk nooit meer gebruikt; eerder Netbeans / Eclipse.afvalzak schreef op maandag 31 januari 2011 @ 21:02:
Zelf vond ik JBuilder 2005 wel aardig, die was gratis voor school/thuisgebruik geloof ik, maar JBuilder 2007 was echt heul slecht, dat was Eclipse alleen dan tien keer zo traag.
Het was een prima IDE om in te leren programmeren, dan maakt het nog niet zoveel uit, al vind ik BlueJ wel weer de andere wereld
Maar ik moet ook zeggen dat ik na mijn uni-tijd ook niet veel meer in Java programmeer.
Ik ben ooit drie uur aan het zoeken waarom Textfield niet werkte. Lettertype in de IDE was nogal lastig om te lezen.Davio schreef op maandag 31 januari 2011 @ 22:37:
[...]
In 2003 leerden we op de uni Java met JCreator LE, was wel een aardige IDE'tje, maar na mijn uni-tijd eigenlijk nooit meer gebruikt; eerder Netbeans / Eclipse.
Maar ik moet ook zeggen dat ik na mijn uni-tijd ook niet veel meer in Java programmeer.
Het had TextField moeten wezen.
Nu gebruik ik visual studio met intellisense en autocomplete
Na de eerste 2-4 letters control+space voor autocomplete, heerlijk.
Geh.oisyn schreef op maandag 31 januari 2011 @ 22:13:
[...]
Het punt is dat bij de conversie naar currency de 8,0749999.. wordt afgerond naar 8,075, en daarna doe je een round(2), dus wordt dat 8,08.
In C# lijkt iets soortgelijks te gebeuren. Wellicht met opzet? De eerstvolgende double na 8,07499999..4 is 8,0750000..1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| using System; using System.Diagnostics; using System.Text; class Program { static void Main(string[] args) { double v = 42.50; double d = v * 19 / 100; decimal m = (decimal)d; double pd = 4545820873877094d / (1L << 49); Console.WriteLine(d == pd); decimal pm = 4545820873877094m / (1L << 49); Console.WriteLine(m == pm); Console.WriteLine(pm); Console.WriteLine(m - pm); } } |
Output:
True False 8,07499999999999928945726424 0,00000000000000071054273576
Volgens Windows Calculator (in scientific mode) is de double gelijk aan 8,07499999999999928945726423989981. Mijn eigen benadering met de decimal 'pm' komt dus veel dichterbij de daadwerkelijke double dan de gewone conversie 'm'. Heel apart...
.edit: ah
Ergens wel logisch, een double heeft maar ~15.95 significante cijfers. Mocht je toch een preciezere conversie willen:The Decimal value returned by this method contains a maximum of 15 significant digits. If the value parameter contains more than 15 significant digits, it is rounded using rounding to nearest.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| static decimal ToDecimal(double d) { long bits = BitConverter.DoubleToInt64Bits(d); int exponent = (int)(bits >> 52) & 0x7ff; decimal mantissa = (bits & ((1L << 52) - 1)) + (1L << 52); if ((bits >> 63) != 0) // negative numbers mantissa = -mantissa; exponent -= 1023 + 52; if (exponent >= 0) return mantissa * (decimal)Math.Pow(2.0, exponent); else if (exponent < -95 - 52) return 0; else if (exponent < -95) return ((long)mantissa >> (-95 - exponent)) / (decimal)Math.Pow(2.0, 95); else return mantissa / (decimal)Math.Pow(2.0, -exponent); } |
Handlet wel denormals, geen infinities en NaNs
[ Voor 38% gewijzigd door .oisyn op 01-02-2011 10:25 ]
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.
Was JCreator niet die IDE zonder code completion? Wij hadden ook een JCreator versie, maar daar was geen codecompletion, dat was toen een gratis versie (maar ja dat was 2001 toen was codecompletion schijnbaar een enterprise functionaliteit) er was wel een versie met code completion, maar die was betaald en mochten we niet gebruiken. Volgens mij was de enige toevoeging van die IDE boven notepad dat je kleurtjes kreeg en dat er een compiler gekoppeld was.Davio schreef op maandag 31 januari 2011 @ 22:37:
[...]
In 2003 leerden we op de uni Java met JCreator LE, was wel een aardige IDE'tje, maar na mijn uni-tijd eigenlijk nooit meer gebruikt; eerder Netbeans / Eclipse.
Maar ik moet ook zeggen dat ik na mijn uni-tijd ook niet veel meer in Java programmeer.
Men dacht bij Avans (toen nog HS 's-Hertogenbosch) schijnbaar dat je een betere programmeur wordt als je al je variabelen en dergelijk iedere keer zelf moet intypen, geregeld aan het ragen bent omdat je perongeluk de casing verkeerd hebt en jezelf een RSI aan het typen bent...

JCreator was daarnaast volgens mij ook een Windows Executable dus de mensen die met een Mac of Linux machine hadden er een probleem bij, want men hamerde nogal op het gebruik van JCreator. Het voordeel van JBuilder (toen we eindelijk naar een "echt" programma mochten) was dan wel dat het in JAVA was gemaakt zodat het op ieder platform met een java VM draaide (maar tevens een nadeel vanwege de performance vroeger, tegenwoordig is Java vrij snel, maar vroeger was java toch niet zo snel als een native executable, zeker op wat beroerdere hardware).
The #1 programmer excuse for legitimately slacking off: "My code's compiling"
Firesphere: Sommige mensen verdienen gewoon een High Five. In the Face. With a chair.
Maar wij wisten ook niet beter toen, was voor veel mensen (waaronder mijzelf) de eerste IDE die ze ooit gezien hadden. Daarvoor had ik wel eens QBasic gebruikt en dan is het toch wel een hele stap.
Het kan ook goed zijn dat JCreator alleen op Windows draaide, maar dat was toen geen probleem, omdat ervan uitgegaan werd dat iedereen dat toch wel had. Daarbij hadden we vaak zat werkuren en tussenuren zodat we in het Buys Ballot Lab op de 4e verdieping konden gaan klooien.
Dat leer je ook wel (imo) als je IDE er mooie rooie lijntjes onder tekent, en ook nog sneller. Zelfde concept als spellchecker in Word, als je er gelijk op gewezen word dat je een woordt verkeerdt gespeldt hebdt, zul je die fout minder snel maken slash het sneller in één keer goed doen.Men dacht bij Avans (toen nog HS 's-Hertogenbosch) schijnbaar dat je een betere programmeur wordt als je al je variabelen en dergelijk iedere keer zelf moet intypen, geregeld aan het ragen bent omdat je perongeluk de casing verkeerd hebt en jezelf een RSI aan het typen bent...
Programmeurs moet je net zo trainen als honden en kinderen - gelijk straffen als ze het fout doen, niet pas 10 minuten later als ze weer een compile doen
Zelfde met code completion, je leert sneller dat je String.substring() of String.subString() moet doen als je het binnen een seconde voor je snuffert krijgt.
En wat een opleiding al helemaal zou moeten leren: het gaat er helemaal niet om dat je functies uit je hoofd kent, het gaat erom dat je snel kunt vinden welke functie je waarvoor kunt gebruiken. Als je alleen al de metrics van Java 1.1.5 erbij pakt (te lui om 1.5 erbij te halen) heb je al 5000+ methods, die kun je misschien uit je hoofd leren met moeite, maar (1) wat heeft het voor nut, en (2) die kennis is binnen anderhalf jaar verouderd.
Bij "Java"* doen ze daar wel wat langer overYopY schreef op dinsdag 01 februari 2011 @ 12:56:
(2) die kennis is binnen anderhalf jaar verouderd.
* RobIII rent
*Ja, ja, Sun, Oracle, wat is 't tegenwoordig?
[ Voor 16% gewijzigd door RobIII op 01-02-2011 13:00 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
RobIII schreef op dinsdag 01 februari 2011 @ 12:59:
Bij "Java"* doen ze daar wel wat langer over
* RobIII rent
Wel makkelijker om bij te blijven voor JAVA developers..

Ik denk eerlijkgezegd dat dat een afweging is tussen lagere leesbaarheid door (weinig) indenting, en lagere leesbaarheid door wraparound van te lange regels.kenneth schreef op maandag 31 januari 2011 @ 13:57:
Twee spaties?Zeker nooit langer dan een uur achtereen naar code gekeken?
Aldus alle code bij het vak Java van de OU. Gelukkig zijn er auto-indenters.
Ik heb een paar jaar geleden Java-cursussen gedaan aan de OU. Over het algemeen zijn die cursussen van goed niveau als je nog niet veel over programmeren weet, maar als je al een redelijke programmeerkennis heb dan struikel je nog wel eens over simplificaties die om didactische redenen worden gedaan.
Overigens gebruikten die cursussen wel open en sluit braces op hun eigen regel.
Afhankelijk van de solution explorer kunnen er zelfs nog iets meer op een regel.
Eigenlijk zou dit toch zat moeten zijn en dus niet mogen uitmaken of de identation per 2 of per 8 tekens gaat?
486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22
Ik doel dan ook niet op hoe het op scherm eruit ziet. Het cursus materiaal van de OU is (deels) in boekvorm. Ik denk dat minder indent dan een goede afweging is om linewrap te voorkomen.PiepPiep schreef op dinsdag 01 februari 2011 @ 14:34:
Ik heb even geteld, er passen bij mij in vs2008 147 tekens op een regel hier op kantoor, thuis zelfs meer omdat ik daar met 1920 ipv 1600 breedte van mijn scherm zit.
Afhankelijk van de solution explorer kunnen er zelfs nog iets meer op een regel.
Eigenlijk zou dit toch zat moeten zijn en dus niet mogen uitmaken of de identation per 2 of per 8 tekens gaat?
Dan begrijp ik wel dat er voor kleinere indentation is gekozen. Sommige woorden zijn ook onoverkomelijk lang.
(System.Windows.Forms.)IDataGridColumnStyleEditingNotificationService bijvoorbeeld.
Dit was een copypaste uit de beschikbaar gestelde broncode. Een massief blok code. De whitespace is denk ik bij het downloaden verloren gegaanRemus schreef op dinsdag 01 februari 2011 @ 14:43:
[...]
Ik doel dan ook niet op hoe het op scherm eruit ziet. Het cursus materiaal van de OU is (deels) in boekvorm. Ik denk dat minder indent dan een goede afweging is om linewrap te voorkomen.
Met een iets ruimere indent zit je perfect wat betreft leesbaarheid en schermruimte. Als je met een tab van 4 (of zelfs
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
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.
1
2
3
| mijnObjectMetDuidelijkeNaam.DuidelijkeFunctieNaam(argument, argumentMetNaam, anderArgument); |
1
2
| var o = mijnObjectMetDuidelijkeNaam; o.DuidelijkeFunctieNaam(argument, argumentMetNaam, anderArgument); |
We are shaping the future
Ik deed het vroeger ook zo, nu doe ik meer zo:MBV schreef op dinsdag 01 februari 2011 @ 16:32:
Ik vind het altijd een irritant dilemma: moet je zoiets nou wel of niet afbreken, en hoe doe je het dan met indenting?
Java:
1 2 3 mijnObjectMetDuidelijkeNaam.DuidelijkeFunctieNaam(argument, argumentMetNaam, anderArgument);
1
2
3
4
| mijnObjectMetDuidelijkeNaam.DuidelijkefunctieNaam ( argument, argumentMetNaam, anderArg); |
https://fgheysels.github.io/
Verwijderd
Verwijderd
Nou, in Objective-C vind ik het anders reuze handig dat uitlijnen:Verwijderd schreef op dinsdag 01 februari 2011 @ 16:57:
Zo doe ik het ook, niet proberen uit te lijnen, maar gewoon een enkele indent. Uitlijning is compleet zinloos als iemand anders z'n indent groter of kleiner heeft staan. De indenting dan maar met spaties doen is helemaal belachelijk, de tab is er immers voor gemaakt en instelbaar naar de voorkeuren van de gebruiker.
1
2
3
| [object setIdentifier: @"Naam" setLocale: @"Dutch"]; |
Zo wordt je code ook overzichtelijker vind ik, beter dan wanneer je het zo doet:
1
| [object setIdentifier: @"Naam" setLocale: @"Dutch"]; |
Zeker wanneer je meerdere messages naar een object stuurt.
Dan moet ik er wel bij zetten dat ik altijd soft-tabs aan het staan in TextMate, waardoor m'n code ook in bijvoorbeeld nano of vi er nog fatsoenlijk uitziet
Uitlijning is geen indenting. Uitlijning doe je met spaties, indenting met tabs. En dan werkt het ongeacht de tab-instellingen van de viewerVerwijderd schreef op dinsdag 01 februari 2011 @ 16:57:
Zo doe ik het ook, niet proberen uit te lijnen, maar gewoon een enkele indent. Uitlijning is compleet zinloos als iemand anders z'n indent groter of kleiner heeft staan. De indenting dan maar met spaties doen is helemaal belachelijk, de tab is er immers voor gemaakt en instelbaar naar de voorkeuren van de gebruiker.
Dus:
1
2
3
4
| Bladiebla(bla, bla, bla); ^tab^tab^^^^^^^^^^spaties |
Overigens doe ik zelf ook gewoon 1 niveau dieper indenten.
[ Voor 13% gewijzigd door .oisyn op 01-02-2011 17:16 ]
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.
(Neej, dat afvangen met een autoreleasepool is vals
edit: Overigens over de discussie met tabjes. Waarom hebben jullie ook van die ellenlange functienamen
1
2
| doeIetsMetDeVariabelenDieIkMeeStuurEnDezeLangeNaamIsAlsVoorbeeld( id, score, tegenstander, punten, resultaat, false, 0); |
[ Voor 27% gewijzigd door Aloys op 01-02-2011 17:19 ]
Je zou ook gewoon een nieuwe string van de literal kunnen maken, dan kun je 'm ook gewoon vrijgeven.Aloys schreef op dinsdag 01 februari 2011 @ 17:17:
Ik wordt er elke keer weer gek van, want op een of andere manier moet je bijhouden hoe je string gemaakt is.
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
1
| NSString* tekst = [[NSString alloc] initWithString:@"Hier de tekst"]; |
Voor het meegeven aan een init van een class kan je dan beter kiezen om bij de argumenten gewoon @"tekst" te doen.
Het blijft voor mij gewoon een beetje stom
- Allereerst iframes.
- Inline CSS.
- Het hoofdmenu is opgebouwd uit een table, de cellen daarin vertegenwoordigen de parents van de dropdown, menu's. Daarin zit dan weer een table, waarin 3 cellen zijn opgenomen, links en rechts voor de openening en sluiting + spacing van de buttons.
- Het dropdrown menuutje is gewoon een voorgedefinieerde div, met daarin alleen de switch tussen zichbaar of onzichtbaar maken van het specifieke divje. De spacers zijn ook op dezelfde manier opgebouwd.
- Een statcounter als inline afbeelding.
- De footer als plaatje (lekker indexeerbaar
).
- De BG-image van het iframe is een afbeelding van 1x4096px. Welke iedere keer ingeladen moet worden, waardoor je de hele layout ziet verspringen in kleur.
- De iframes hebben als titel "naamloze pagina". Wat me al een onderbuikgevoel geeft over de IDE van de ontwikkelaar welke (volgens de bron) Yashin Verburgt heet.
De zoekbaarheid van de site is ook zeer zeer slecht, wanneer de termen [google=aap alphen restaurant] gebruikt worden, wordt er een welkomspagina weergegeven die op het eerste oog aanspreekt, totdat er naar beneden gescrolled wordt. De aansprekende welkomstpagina, blijkt gewoon een header te zijn die 290px hoog is

Wanneer er doorgeklikt wordt naar de echte pagina, begint de ellende pas echt.
Ook geeft deze pagina prijs waar ik al voor vreesde
1
| <meta content="Parallels Plesk Sitebuilder 4.5.0" name="GENERATOR"> |
Jammer, want ik denk toch dat ze op deze manier een hoop klanten mislopen. Misschien vanavond even vragen of ze nog een fatsoenlijke site willen
[ Voor 3% gewijzigd door Matis op 01-02-2011 17:34 ]
If money talks then I'm a mime
If time is money then I'm out of time
Uiteraard heb je met al je punten gelijk, maar de normale gebruiker kijkt gewoon naar die pagina en ziet een fraaie site, en zal het een worst wezen of er iframes worden gebruikt.
Matis schreef op dinsdag 01 februari 2011 @ 17:31:
De zoekbaarheid van de site is ook zeer zeer slecht, wanneer de termen [google=aap alphen restaurant] gebruikt worden, wordt er een welkomspagina weergegeven
Dat een restaurant klanten misloopt als ze niet gevonden kunnen worden vind ik nog aannemelijk, maar ik geloof er niks van dat iemand zin heeft in afrikaans, het restaurant opzoekt, de site bekijkt en dan besluit er niet te eten omdat de site wat brak in elkaar zit. Jezelf overschatten is ook een vak, zo belangrijk is een website echt niet, zeker niet voor een restaurant. Heck, ik kan me niet herinneren dat ik de afgelopen tien jaar op meer dan drie sites geweest ben van restaurants (respectievelijk NY Pizza, Peking Groningen en thuisbezorgd.nl, elke keer om daar wat online te bestellen
Ook een technisch hoogstandje.
[ Voor 45% gewijzigd door Gamebuster op 01-02-2011 18:51 ]
Let op: Mijn post bevat meningen, aannames of onwaarheden
Daarbij moeten kleine restaurantjes het voornamelijk hebben van mond op mond reclame en als het eten gewoon goed is, dan zit dat wel snor.CyCloneNL schreef op dinsdag 01 februari 2011 @ 17:43:
Ik denk niet dat ze veel klanten missen, met het design van de pagina is weinig mis.
Uiteraard heb je met al je punten gelijk, maar de normale gebruiker kijkt gewoon naar die pagina en ziet een fraaie site, en zal het een worst wezen of er iframes worden gebruikt.
Vaak beslis ik vantevoren naar welk restaurant ik ga (tip van vriend / familie) en zoek ik op internet alleen het adres even op.
Die site heeft iemand van het restaurant die een beetje handig is met computers zelf in elkaar geflanst.
Misschien niet professioneel, maar dat hoeft misschien ook niet.
[ Voor 8% gewijzigd door .oisyn op 01-02-2011 18:54 ]
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.
Altijd leuk om te zien hoeveel fouten een validator bij zo'n code weergeeftGamebuster schreef op dinsdag 01 februari 2011 @ 18:51:
http://hinloopen.nl/
Ook een technisch hoogstandje.
http://validator.w3.org/c...29&doctype=Inline&group=0
En dan geeft die validator de semantische fouten niet eens weer
Validatie is ook maar een hulpmiddel en geen doel.Bv202 schreef op dinsdag 01 februari 2011 @ 18:58:
[...]
Altijd leuk om te zien hoeveel fouten een validator bij zo'n code weergeeft
http://validator.w3.org/c...29&doctype=Inline&group=0
En dan geeft die validator de semantische fouten niet eens weer
Ach, mond-op-mondreclame staat zelfs hoger in Google.
Het mooie van taal is: als je het maar lang genoeg met zoveel genoeg fout doet, wordt het vanzelf goed.
Het erge is dat die site gemaakt is met de WYSIWYG tool "Claris Home Page", al die foute code is dus gegenereerd door een programma wat zelf blijkbaar HTML niet zo goed snapt. Hoewel, dat is ook niet helemaal eerlijk aangezien de laatste versie van Claris volgens wiki uit kwam in 1998Bv202 schreef op dinsdag 01 februari 2011 @ 18:58:
[...]
Altijd leuk om te zien hoeveel fouten een validator bij zo'n code weergeeft
http://validator.w3.org/c...29&doctype=Inline&group=0
En dan geeft die validator de semantische fouten niet eens weer

Overigens is het merendeel van die fouten veroorzaakt doordat er geen doctype is, waardoor de verkeerde vorm van (X)HTML in het achterhoofd gehouden wordt tijdens het zoeken naar fouten.
[ Voor 6% gewijzigd door roy-t op 01-02-2011 21:07 ]
Het browser-component heeft echter geen OnClose-event, dus tsja, hoe gaan we dat dan OO-technisch verantwoord oplossen? Nou, gewoon, zo:
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
| procedure TFrmWebBrowser.FormActivate(Sender: TObject); var id :Integer; begin try with Query1 do begin active:=false; sql.clear; sql.add('SELECT VALUE FROM SETTINGS'); sql.add('WHERE SETTINGID = 123'); open; fetchall; end; id := StrToInt(Query1.fieldbyname('VALUE').asstring); Timer1.Interval := id; Timer1.Enabled := True; except on E: Exception do begin ShowMessage(E.Message); end; end; end; procedure TFrmWebBrowser.FormClose(Sender: TObject; var Action: TCloseAction); begin Timer1.Enabled := False; end; procedure TFrmWebBrowser.Timer1Timer(Sender: TObject); var e: string; begin try e:=WebBrowser1.OleObject.Document.all.tags('FORM').Length; except Close; end; end; |
Er wordt dus iedere X seconden gekeken of het WebBrowser-component nog een FORM-tag in z'n HTML heeft staan. Na het uitvoeren van window.close() staat er natuurlijk geen Document meer in het OleObject, dus treedt er een exception op en wordt het Delphi-form ge-Close()'d.
Oh, en ook als het laden van een pagina bijvoorbeeld door drukte langer duurt dan de timeout.
Dus ik heb maar even het OnClose()-event aangemaakt in een uitbreiding van de TWebBrowser-component.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| type TWebBrowserWithClose = class(TWebBrowser) private FClose: TNotifyEvent; procedure WMClose(var Msg : TWMClose); message WM_CLOSE; // Capture WM_CLOSE message published property OnClose: TNotifyEvent read FClose write FClose; // Published, dat betekent dat Delphi het herkent als event end; implementation // window.close() is aangeroepen in JavaScript procedure TWebBrowserWithClose.WMClose(var Msg : TWMClose); begin // Event raisen if Assigned(OnClose) then OnClose(Self); end; |
En de eerste lap code is nu gereduceerd tot dit:
1
2
3
4
5
| procedure TFrmWebBrowser.WebBrowser1Close(Sender: TObject); begin // window.close() is aangeroepen in JavaScript Close(); end; |
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
Kun je niet op je Delphi-form een form aanmaken die onderhuids communiceert met een server?
Wat bedoel je precies met je tweede zin?
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
Maar ik weet ook niet precies waar je de webapp voor nodig hebt...
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
Zie ook: http://www.delphidabbler.com/articles?article=22&part=1
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
Klopt, de software die gebruikt wordt (ja, nu nog steeds) komt uit 1996 en draait in Classic op een oude Apple G4 macbook. Mijn pa wilt niet upgraden, omdat het oude nog goed werktroy-t schreef op dinsdag 01 februari 2011 @ 21:06:
[...]
Het erge is dat die site gemaakt is met de WYSIWYG tool "Claris Home Page", al die foute code is dus gegenereerd door een programma wat zelf blijkbaar HTML niet zo goed snapt. Hoewel, dat is ook niet helemaal eerlijk aangezien de laatste versie van Claris volgens wiki uit kwam in 1998
Overigens is het merendeel van die fouten veroorzaakt doordat er geen doctype is, waardoor de verkeerde vorm van (X)HTML in het achterhoofd gehouden wordt tijdens het zoeken naar fouten.
Heb 'm dreamweaver voor z'n neus geduwd, maar hij vind het niet fijn werken
[ Voor 4% gewijzigd door Gamebuster op 03-02-2011 16:32 ]
Let op: Mijn post bevat meningen, aannames of onwaarheden
Enkel releasen als je een init / copy e.d doet.Aloys schreef op dinsdag 01 februari 2011 @ 17:17:
Nu je het over Objective-C hebt, wordt jij ook wel eens gek van NSString? Een NSString object moet je retainen/releasen, maar niet als het object gemaakt wordt aan de hand van een constant string, dan wil een release niet en levert een error op. Dan kan je het geheugen immers niet meer vrijgeven. Ik wordt er elke keer weer gek van, want op een of andere manier moet je bijhouden hoe je string gemaakt is.
1
2
3
4
5
| //Releasen [[NSString alloc] initWithString: @"Cookie"]; //Niet releasen [NSString stringWithString: @"Cookie"]; |
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.
Je moet releasen als je een alloc-init hebt staan en als je een retain doet.
Bij een alloc-init zeg je eigenlijk: "Maak geheugen vrij en stop er dit in."
Bij een retain zeg je eigenlijk: "Als iemand anders dit object probeert te releasen, dan wil ik hem nog houden."
Je moet wel oppassen met het initialiseren van je properties, omdat sommige automatisch een retain doen (in hun door 'synthesize' gegenereerde setter icm retain in de declaratie), zeker als je het keyword self gebruikt, en dan is je retaincount soms hoger dan je denkt.
Voorbeeld
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| @interface Bla : NSObject { NSObject *object; } @property (nonatomic, retain) NSObject *object; - (void) Foo; @end @implementation Bla @synthesize object; - (void) Foo { // self.object = [[NSObject alloc] init]; // Retaincount is nu 2, na een [self.object release] dus nog steeds 1! // Beter is NSObject *obj = [[NSObject alloc] init]; // Retaincount is nu 1 vanwege de alloc-init. self.object = obj; // Retaincount is nu 2 [obj release]; // Retaincount is weer 1 } @end |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| Using P As New Process() P.StartInfo.WindowStyle = ProcessWindowStyle.Hidden 'Set the script to run the standard command shell P.StartInfo.FileName = "cmd.exe" 'Required to redirect output, don't both worrying what it means P.StartInfo.UseShellExecute = False 'Tell the system that you want to read/write to it P.StartInfo.RedirectStandardOutput = True P.StartInfo.RedirectStandardInput = True 'Start your batch P.Start() 'Send your various commands P.StandardInput.WriteLine("nfc-list.exe") 'Very important, send the "exit" command otherwise STDOUT will never close the stream P.StandardInput.WriteLine("exit") 'Read the entire stream Output = P.StandardOutput.ReadToEnd() 'Wait until the batch is done running P.WaitForExit() End Using 'Do something with the output Trace.WriteLine(Output) Dim TagidA As String = Output |
[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]
Voor de volgende keerCodeCaster schreef op donderdag 03 februari 2011 @ 16:26:
Dat ziet er op zich leuk uit, maar is een bak meer code en vereist aanpassingen aan de site. Waarom moeilijk doen als het makkelijk kan?
1
| if (sqrt(a * a) - sqrt(a * b) == 0) |
lekker omslachtig...
Leuk als a negatief is en b nietJiriB schreef op vrijdag 04 februari 2011 @ 13:58:
Ooit eens een stukje code tegengekomen dat moest controleren of 2 getallen gelijk waren:
code:
1 if (sqrt(a * a) - sqrt(a * b) == 0)
lekker omslachtig...
- This line is intentionally left blank -
Zo scherp als een voetbal!
sqrt(0) levert geen exceptie op, maar sqrt(-1) wel
- This line is intentionally left blank -
Ik heb hier een validator plugin in firefox. Die geeft 259 fouten op die site. Deze forum pagina geeft er 707.Bv202 schreef op dinsdag 01 februari 2011 @ 18:58:
[...]
Altijd leuk om te zien hoeveel fouten een validator bij zo'n code weergeeft
http://validator.w3.org/c...29&doctype=Inline&group=0
En dan geeft die validator de semantische fouten niet eens weer
Geen exceptie, maar wat is de output volgens jou bij a = 0 en b = 18?Knutselsmurf schreef op vrijdag 04 februari 2011 @ 15:00:
[...]
sqrt(0) levert geen exceptie op, maar sqrt(-1) wel
Zo scherp als een voetbal!
De w3c validator geeft op dit forum 6 errors, 26 warnings. Waar jij die 707 vandaan haalt, vraag ik me dan ook ten zeerste af. De meeste errors worden zelfs veroorzaakt door een spatie in de URL van mijn eigen avatar die niet naar %20 geconverteerd wordt.jvo schreef op vrijdag 04 februari 2011 @ 15:05:
[...]
Ik heb hier een validator plugin in firefox. Die geeft 259 fouten op die site. Deze forum pagina geeft er 707.
sqrt(-1) levert doorgaans gewoon een NaN op. NaN in een berekening levert ook NaN op, en NaN is niet gelijk aan 0.Knutselsmurf schreef op vrijdag 04 februari 2011 @ 15:00:
[...]
sqrt(0) levert geen exceptie op, maar sqrt(-1) wel
[ Voor 13% gewijzigd door .oisyn op 04-02-2011 15:28 ]
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
| void DoSomething() { for (int i = 1; i < 5; i++) { if (strlen(names[i])) { switch(i) { case 1: { Handle tmp1(names[i]); tmp1.Foo(); break; } case 2: { Handle tmp2(names[i]); tmp2.Foo(); break; } case 3: { Handle tmp3(names[i]); tmp3.Foo(); break; } case 4: { Handle tmp4(names[i]); tmp4.Foo(); break; } case 5: { Handle tmp5(names[i]); tmp5.Foo(); break; } } } else { break; } } } |
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.
Verwijderd
Maar het zou eigenlijk i moeten opleveren.oisyn schreef op vrijdag 04 februari 2011 @ 15:26:
[...]
sqrt(-1) levert doorgaans gewoon een NaN op. NaN in een berekening levert ook NaN op, en NaN is niet gelijk aan 0.
[ Voor 53% gewijzigd door .oisyn op 04-02-2011 15:55 ]
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.
Die haal ik zoals gezegd uit een validator plugin. Hij heet html validator. Let wel dat w3c waarschijnlijk een andere pagina te zien krijgt, omdat ze niet ingelogd zijn. Ik wil de lijst wel voor je posten, maar ik ben bang dat dat een beetje te lang wordt.Davio schreef op vrijdag 04 februari 2011 @ 15:21:
[...]
De w3c validator geeft op dit forum 6 errors, 26 warnings. Waar jij die 707 vandaan haalt, vraag ik me dan ook ten zeerste af. De meeste errors worden zelfs veroorzaakt door een spatie in de URL van mijn eigen avatar die niet naar %20 geconverteerd wordt.
Ik vind het ook wel bijzonder eerlijk gezegd. Als je gewoon via de w3c-website valideert dan geeft hij hier 5 errors, waarvan één omdat er cellspacing wordt gebruikt en de andere omdat er een spatie in de url van het usericon van Davio zit.jvo schreef op vrijdag 04 februari 2011 @ 17:58:
[...]
Die haal ik zoals gezegd uit een validator plugin. Hij heet html validator. Let wel dat w3c waarschijnlijk een andere pagina te zien krijgt, omdat ze niet ingelogd zijn. Ik wil de lijst wel voor je posten, maar ik ben bang dat dat een beetje te lang wordt.
@hierboven: Jouw aantal verschilt vermoedelijk een beetje omdat je een andere posts-per-page hebt. Die 707 lijkt me inmiddels wel ontkracht, misschien zijn er bepaalde instellingen automatisch anders bij die validator plugin.
[ Voor 13% gewijzigd door Patriot op 04-02-2011 18:21 ]
Die 707 lijkt me, zelfs met een andere posts per page instelling, gewoon onmogelijk.
Misschien komt het doordat jouw validator de doctype niet snapt? De doctype is namelijk HTML5 en dan gelden alle normale (minder stricte) HTML-regels weer die door XHTML overhoop werden gegooid, onder andere:
- Lege elementen zonder /> op het eind mogen, dus <meta ...>
- <p>s hoeven niet in alle gevallen een end-tag te hebben, dus <p>bla<p>bloe<p>bliep
Als jouw validator probeert via XHTML strict te valideren, gaat dat niet echt.
Dat is toch wel een behoorlijk kromme regel lijkt mij... Een paragraaf is altijd een blok tekst en het lijkt mij dus dat je dat blok moet aangeven door een start en een eind. Zo werkt software als Word en InDesign ook. Een paragraaf is een blok tekst. De enige manier waarop ik me kan voorstellen dat een P niet hoeft te worden geopend of gesloten is als je een tag hebt die een paragraaf splitser opgeeft (zoals de "harde enter" in Word/InDesign), dan krijg je een P tag die zich gedraagt als een BR element (maar in plaats van linebreak een paragraaf break uitoefent).Davio schreef op vrijdag 04 februari 2011 @ 18:36:
- <p>s hoeven niet in alle gevallen een end-tag te hebben, dus <p>bla<p>bloe<p>bliep
The #1 programmer excuse for legitimately slacking off: "My code's compiling"
Firesphere: Sommige mensen verdienen gewoon een High Five. In the Face. With a chair.
Ahh, het bekende FOR-CASE paradigma (zie hier en hier en zelfs op Wikipedia.).oisyn schreef op vrijdag 04 februari 2011 @ 15:36:
Trouwens, een fraai stukje uit de Kane&Lynch 2 codebase, dat ongeveer zo ging:
(Was het feit dat case 5 nooit gehit wordt ook onderdeel van de oorspronkelijke code?)
Dat het schijnbaar zo werkt voor Word en/of InDesign is leuk voor ze, de specificaties van html geven duidelijk aan wat wel en wat niet nodig is. Zo is een sluittag voor <p> elementen niet verplicht onder bepaalde voorwaarden..Gertjan. schreef op zaterdag 05 februari 2011 @ 13:33:
[...]
Dat is toch wel een behoorlijk kromme regel lijkt mij... Een paragraaf is altijd een blok tekst en het lijkt mij dus dat je dat blok moet aangeven door een start en een eind. Zo werkt software als Word en InDesign ook. Een paragraaf is een blok tekst. De enige manier waarop ik me kan voorstellen dat een P niet hoeft te worden geopend of gesloten is als je een tag hebt die een paragraaf splitser opgeeft (zoals de "harde enter" in Word/InDesign), dan krijg je een P tag die zich gedraagt als een BR element (maar in plaats van linebreak een paragraaf break uitoefent).
Zie hier de hele rits van optionele tags: html syntax
Dit topic is gesloten.
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.