Kwam dit laatst tegen in een project waar ik vroeger met wat mede studenten aan heb gewerkt.

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag
Sinds de 2 dagen regel reageer ik hier niet meer
Dacht het nietCurlyMo schreef op donderdag 09 juni 2016 @ 21:25:
Je krijgt vrouw terug als het geen man is. Dus ook bij onbekend of onzijdig.
[ Voor 9% gewijzigd door Damic op 09-06-2016 21:30 ]
Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag
Er wordt Equals gebruikt, niet Contains.Damic schreef op donderdag 09 juni 2016 @ 21:30:
[...]
Dacht het nietals de tekst Male bevat ga je 1 if verder dan doe je weer een check en daar bepaal je man/vrouw. of die else moest op de eerst if slagen maar denk het niet.
🇪🇺 pro Europa! | Puinhoop Veroorzaken en Vertrekken (PVV)
[ Voor 24% gewijzigd door CurlyMo op 09-06-2016 22:00 ]
Sinds de 2 dagen regel reageer ik hier niet meer
Nog nooit een diff tool gezien? ^^Damic schreef op donderdag 09 juni 2016 @ 21:30:
[...]
Dacht het nietals de tekst Male bevat ga je 1 if verder dan doe je weer een check en daar bepaal je man/vrouw. of die else moest op de eerst if slagen maar denk het niet.
Nog niet zo heel lang geleden was dat ook prima geaccepteerd gedrag. Afhankelijk van de leeftijd van de code dus niet echt een wtf.CurlyMo schreef op donderdag 09 juni 2016 @ 21:25:
Je krijgt vrouw terug als het geen man is. Dus ook bij onbekend of onzijdig.
De laatste edit is van 9 juni 2016mcDavid schreef op donderdag 09 juni 2016 @ 22:08:
Nog niet zo heel lang geleden was dat ook prima geaccepteerd gedrag. Afhankelijk van de leeftijd van de code dus niet echt een wtf.
Sinds de 2 dagen regel reageer ik hier niet meer
Ach, als ik naar de commit message kijk dan heb ik ook niet zo'n hoge pet op van de programmeur in kwestie...
Als die mensen nu eens de { ook zouden sluiten is het makkelijker om te zien wat er zou gebeuren }, nu zien ik het alsRhapsody schreef op donderdag 09 juni 2016 @ 21:43:
[...]
Er wordt Equals gebruikt, niet Contains.
En die rode regel is vervangen door de groene. (of begrijp ik ne post nou verkeerd)
CurlyMo schreef op donderdag 09 juni 2016 @ 21:49:
In de oude situatie was een SheMale een Man geweest, in de nieuwe situatie is het een Vrouw.
Nu ga ik zelf de fout inHet is equals inderdaad.
Nope
Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag
Waarom zou hij een uitgebreide commit message plaatsen voor een oud project waar hoogstwaarschijnlijk niet meer aan gewerkt wordt? Hoezo speel je het meteen "op de man" (met een opmerking dat je geen hoge pet op hebt van hem)? Laat die jongen lekker gaan ipv stoer lullige opmerkingen te maken (je HOEFT namelijk geen lullige opmerking te maken, je kan er ook gewoon even om lachen en denken "laat gaan, ik was ook ooit jong").Gomez12 schreef op donderdag 09 juni 2016 @ 22:47:
[...]
Ach, als ik naar de commit message kijk dan heb ik ook niet zo'n hoge pet op van de programmeur in kwestie...
Dit is echt van het nivo : git commit -m "Wrote some code"
Waarom zou hij überhaupt een wijziging doorvoeren voor een oud project waar hoogstwaarschijnlijk niet meer aan gewerkt wordt?Killah_Priest schreef op vrijdag 10 juni 2016 @ 07:50:
[...]
Waarom zou hij een uitgebreide commit message plaatsen voor een oud project waar hoogstwaarschijnlijk niet meer aan gewerkt wordt?
Ja leuk hoor. Maar ooit moet je wellicht wat terug zoeken of iemand anders moet er wat mee en dan heb je niets aan van die lollige commits.Killah_Priest schreef op vrijdag 10 juni 2016 @ 07:50:
[...]
Waarom zou hij een uitgebreide commit message plaatsen voor een oud project waar hoogstwaarschijnlijk niet meer aan gewerkt wordt? Hoezo speel je het meteen "op de man" (met een opmerking dat je geen hoge pet op hebt van hem)? Laat die jongen lekker gaan ipv stoer lullige opmerkingen te maken (je HOEFT namelijk geen lullige opmerking te maken, je kan er ook gewoon even om lachen en denken "laat gaan, ik was ook ooit jong").
En dat geeft jou het recht om lullig te reageren op hem? Laat hem lekker gaan, als hij zijn commits in (oude niet actieve projecten) op die manier wilt plaatsen dan mag hij dat toch? Niet alles hoeft serieus en op de corporate manier te gaan in het leven, een beetje plezier mag ook wel.Gomez12 schreef op vrijdag 10 juni 2016 @ 07:56:
[...]
Waarom zou hij überhaupt een wijziging doorvoeren voor een oud project waar hoogstwaarschijnlijk niet meer aan gewerkt wordt?
Of je doet het goed of je doet het niet.
Maak je toch niet zo druk yoKillah_Priest schreef op vrijdag 10 juni 2016 @ 09:46:
[...]
En dat geeft jou het recht om lullig te reageren op hem? Laat hem lekker gaan, als hij zijn commits in (oude niet actieve projecten) op die manier wilt plaatsen dan mag hij dat toch? Niet alles hoeft serieus en op de corporate manier te gaan in het leven, een beetje plezier mag ook wel.
Het ging mij niet om wat hij had geplaatst en om welke reden : het gaat om de lullige (ietwat arrogante) reactie van jouw kant wat ik gewoon niet vind kunnen (ik bedoel : WIE ben JIJ om op zo'n manier iemand af te zeiken??)
Ik maak mij niet druk hoor, ik heb wel betere dingen te doen
De code style is helder en consistent in beide revisies.Damic schreef op vrijdag 10 juni 2016 @ 06:42:
[...]
Als die mensen nu eens de { ook zouden sluiten is het makkelijker om te zien wat er zou gebeuren }, nu zien ik het als ...
{signature}
Over de achtergrondkleur valt te twisten... zo'n 5% van de mannelijke bevolking kan het verschil tussen rood en groen niet zienVoutloos schreef op vrijdag 10 juni 2016 @ 10:45:
[...]
De code style is helder en consistent in beide revisies.
Dat het een commit is, met een view met dubbele regelnummers, -/+ aan begin van regel en ook nog een achtergrondkleur zou toch voldoende hint moeten zijn, zelfs al diff je niet vaak.
[ Voor 10% gewijzigd door Jerrythafast op 10-06-2016 13:28 ]
Nope, helemaal niet, usability zegt niet dat je geen gebruik van kleur mag maken, alleen dat je niet uitsluitend op kleur mag vertrouwen om betekenis over te dragen.Jerrythafast schreef op vrijdag 10 juni 2016 @ 13:27:
[...]
Over de achtergrondkleur valt te twisten... zo'n 5% van de mannelijke bevolking kan het verschil tussen rood en groen niet zienEigenlijk is zo'n diff-tool dus ook een voorbeeld van een slecht programmeervoorbeeld, vanuit usability bekeken.
Never explain with stupidity where malice is a better explanation
Oké, goed punt. De +/- en de regelnummering zijn er natuurlijk ook nogincaz schreef op vrijdag 10 juni 2016 @ 13:57:
[...]
Nope, helemaal niet, usability zegt niet dat je geen gebruik van kleur mag maken, alleen dat je niet uitsluitend op kleur mag vertrouwen om betekenis over te dragen.
Maar dat is nadrukkelijk niet het geval, je hebt namelijk ook de regelnummering en de +/- indicator.
5%? Dus 1 op de 20 mannen kunnen het verschil tussen rood en groen niet zien? Lekker gevaarlijk in het verkeer.Jerrythafast schreef op vrijdag 10 juni 2016 @ 13:27:
[...]
Over de achtergrondkleur valt te twisten... zo'n 5% van de mannelijke bevolking kan het verschil tussen rood en groen niet zienEigenlijk is zo'n diff-tool dus ook een voorbeeld van een slecht programmeervoorbeeld, vanuit usability bekeken.
Inhakend op het onderwerp XSD validatie, wat vinden jullie het belang hiervan? Heb voor werk een XML API van een (grote) leverancier moeten integreren met ons systeem. Aangezien er 30 verschillende calls zijn besloot ik braaf elke request en response tegen de meegeleverde XSD's te valideren.Xiphalon schreef op woensdag 04 mei 2016 @ 11:42:
[...]
Da's leuk, maar als je een XSD valideerbaar XML oplevert/verwacht en je het attribuut aanmerkt als een xsd:decimal of xsd:double móet er dus altijd een punt gebruikt worden. bron
Het komt er op neer dat de opsteller dus zelf mag bepalen hoe hij getallen verwacht, de andere partij heeft dat maar te volgen.
"There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors."
Hoe moet een applicatie richtlijnen begrijpen dan? Volgens mij spreek je met een XSD af wat je mag/moet verwachten als er data verstuurd wordt. Je kan een ruime XSD opstellen zodat de ontvanger overal rekening mee moet houden. Of een hele strakke zodat de ontvanger precies weet wat hij krijgt.Murk schreef op vrijdag 10 juni 2016 @ 20:39:
[...]
Inhakend op het onderwerp XSD validatie, wat vinden jullie het belang hiervan? Heb voor werk een XML API van een (grote) leverancier moeten integreren met ons systeem. Aangezien er 30 verschillende calls zijn besloot ik braaf elke request en response tegen de meegeleverde XSD's te valideren.
Uiteindelijk moest ik voor 4 calls in de response XSD's elementen verplaatsen, toevoegen of datatypes wijzigen om deze overeen te laten komen met wat ik terugkreeg. De leverancier ging dit niet doen omdat het "maar richtlijnen zijn". Ik krijg wel eens het verwijt een pietje precies te zijn, maar je API specificatie op orde hebben lijkt me toch niet teveel gevraagd?
👑
Klopt. Gelukkig zien ze wel het verschil tussen boven en onder.ErikKo schreef op vrijdag 10 juni 2016 @ 16:24:
[...]
5%? Dus 1 op de 20 mannen kunnen het verschil tussen rood en groen niet zien? Lekker gevaarlijk in het verkeer.
👑
Ik weet natuurlijk niet de exacte case.Murk schreef op vrijdag 10 juni 2016 @ 20:39:
[...]
Inhakend op het onderwerp XSD validatie, wat vinden jullie het belang hiervan? Heb voor werk een XML API van een (grote) leverancier moeten integreren met ons systeem. Aangezien er 30 verschillende calls zijn besloot ik braaf elke request en response tegen de meegeleverde XSD's te valideren.
Uiteindelijk moest ik voor 4 calls in de response XSD's elementen verplaatsen, toevoegen of datatypes wijzigen om deze overeen te laten komen met wat ik terugkreeg. De leverancier ging dit niet doen omdat het "maar richtlijnen zijn". Ik krijg wel eens het verwijt een pietje precies te zijn, maar je API specificatie op orde hebben lijkt me toch niet teveel gevraagd?
1
2
3
| if(contains(" Linux") == true || contains(" linux")) { interject() } |
Dus als iemand GNU/Linux zegt, krijgt diegene ook een melding, aangezien je met Strpos de GNU/ eruit stript?SampleUser schreef op vrijdag 10 juni 2016 @ 23:25:
Ik had dit voor een testje 3 maanden geleden gemaakt... Het is een Richard Stallman IRCbot die gaat zeuren als je Linux zegt maar niet als je GNU/Linux zegt. In plaats van contains gebruik ik iets met strpos ofzo, kan het niet meer voor de geest halen
PHP:
1 2 3 if(contains(" Linux") == true || contains(" linux")) { interject() }
Nee, er staat een spatie ervoor, niet zo'n nette manier want als je zin met Linux begint doet ie dus helemaal niks. Beter is zoiets te doen met regexHatsieflatsie schreef op zaterdag 11 juni 2016 @ 03:18:
[...]
Dus als iemand GNU/Linux zegt, krijgt diegene ook een melding, aangezien je met Strpos de GNU/ eruit stript?
Yikes, why?SampleUser schreef op zaterdag 11 juni 2016 @ 09:24:
[...]
Nee, er staat een spatie ervoor, niet zo'n nette manier want als je zin met Linux begint doet ie dus helemaal niks. Beter is zoiets te doen met regex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| public static class DataTableExtensions { public static DataTable Table(this DataSet ds, string tableName) { if (ds.Tables.Contains(tableName)) return ds.Tables[tableName]; return null; } public static DataTable Table(this DataSet ds, int tableIndex) { return ds.Tables[tableIndex]; } } |
[ Voor 7% gewijzigd door Styxxy op 29-06-2016 18:37 ]
Ben nog vers in het programmeercircuit, ik vroeg me dus af wat het probleem was.Styxxy schreef op woensdag 29 juni 2016 @ 18:37:
C#:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public static class DataTableExtensions { public static DataTable Table(this DataSet ds, string tableName) { if (ds.Tables.Contains(tableName)) return ds.Tables[tableName]; return null; } public static DataTable Table(this DataSet ds, int tableIndex) { return ds.Tables[tableIndex]; } }
Why???![]()
![]()
Extension Methods maken om Extension Methods te maken denk ik.
Als Tables een package-local item is en deze extensions class in dezelfde package zit is het niet 100% overbodig. Alleen had het dan net zo goed direct geïmplementeerd kunnen worden.Styxxy schreef op woensdag 29 juni 2016 @ 18:37:
C#:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public static class DataTableExtensions { public static DataTable Table(this DataSet ds, string tableName) { if (ds.Tables.Contains(tableName)) return ds.Tables[tableName]; return null; } public static DataTable Table(this DataSet ds, int tableIndex) { return ds.Tables[tableIndex]; } }
Why???![]()
![]()
Extension Methods maken om Extension Methods te maken denk ik.
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
| { "BookDate": "2016-12-18T10:39:05.276Z", "BusinessObject": "SO1", "Table": { "Definition": { "Name": "SO_HDR", "Fields": [ { "Name": "RowId", "FieldType": "C" }, { "Name": "INV_DATE", "FieldType": "T" }, { "Name": "RPL_INV", "FieldType": "C" }, { "Name": "DEL_DATE", "FieldType": "T" }, { "Name": "COMMENT1", "FieldType": "C" }, { "Name": "ORD_DATE", "FieldType": "T" }, { "Name": "ORD_NR", "FieldType": "C" }, { "Name": "RPL_DEL", "FieldType": "C" }, { "Name": "VAT_TOT", "FieldType": "N" } ] }, "DetailDefinitions": [ { "Name": "SO_LINE", "Fields": [ { "Name": "RowId", "FieldType": "C" }, { "Name": "HeaderId", "FieldType": "C" }, { "Name": "DEL_DATE", "FieldType": "T" }, { "Name": "REC_ID", "FieldType": "C" }, { "Name": "ORD_NR", "FieldType": "C" }, { "Name": "ART_CODE", "FieldType": "C" }, { "Name": "VART_CODE", "FieldType": "C" }, { "Name": "ART_DESC1", "FieldType": "C" }, { "Name": "ORD_QTY", "FieldType": "N" } ] } ] }, "TableData": { "Data": { "Rows": [ { "Values": [ "1", "2016-11-30T13:37:37.450Z", "TEST", "2016-11-30T13:37:37.450Z", "Test", "2016-11-30T13:37:37.450Z", "TEST", "TEST", 1337 ] } ] }, "DetailData": [ { "Rows": [ { "Values": [ "1", "1", "2016-11-30T13:37:37.450Z", "TEST", "TEST", "TEST", "TEST", "Test", 1337 ] } ] } ] } } |
“Never underestimate the bandwidth of a station wagon full of tapes hurtling down the highway.”
1
2
3
| new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0) // versus DateTime.Today |
Kater? Eerst water, de rest komt later
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| public function calculate_date_extension($subscription_id) { $subscription = new Subscription($subscription_id); $subscription_period = new Subscription_Period($subscription->period_id); $subscription_invoice = new Subscription_invoice(); $subscription_invoice->where("subscription_id", $subscription_id)->get(); $count = 0; if ($subscription_invoice->exists()) { $count = $subscription_invoice->where("subscription_id", $subscription_id)->count(); } $count++; if ($subscription_period->name == "Jaarlijks") { return date("Y-m-d", strtotime($subscription->date_start . "+ {$count} year")); } } |
GeertJam schreef op maandag 11 juli 2016 @ 13:59:
Voor abonnementen in ons interne systeem gebruiken we periodes. Deze staan als volgt in een tabel:
name, seconds
Dus bijvoorbeeld:
Jaarlijks, 31557600
Opzich snap ik de logica erachter. Maar zou ik het zelf aan pakken. Nu ging ik de code voor het berekenen van de verlengingsdatum bekijken:
PHP:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 public function calculate_date_extension($subscription_id) { $subscription = new Subscription($subscription_id); $subscription_period = new Subscription_Period($subscription->period_id); $subscription_invoice = new Subscription_invoice(); $subscription_invoice->where("subscription_id", $subscription_id)->get(); $count = 0; if ($subscription_invoice->exists()) { $count = $subscription_invoice->where("subscription_id", $subscription_id)->count(); } $count++; if ($subscription_period->name == "Jaarlijks") { return date("Y-m-d", strtotime($subscription->date_start . "+ {$count} year")); } }
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
| class BaseLookupTable { int ID { get; set; } string Name { get; set; } } class FooType : BaseLookupTable { private FooTypeEnum fooType; new FooTypeEnum ID { get { return fooType; } set { fooType = value; base.ID = (int) value; } } } enum FooTypeEnum { FirstType = 1, SecondType = 2, ThirdType = 3 } /*****/ class Foo { FooType fooType { get; set; } } /****/ if(foo.fooType.ID == FooTypeEnum.FirstType) { ... } // op het eerste gezicht een enorme wtf |
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
Glass Eye Photography | Zelfbouw wireless fightstick | Mijn puzzel site
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
Maar waarom zou je überhaupt een enum als losse tabel in de DB opslaan? Als je een nieuwe enum toevoegt bijv. kan je geen simpele schema compare of watdanook doen omdat dan dus de applicatie omvalt ivm missende gegevens in de db. Daar gaat het dus al mis. Imo dan.Acid_Burn schreef op vrijdag 15 juli 2016 @ 22:37:
Leesbaarheid? Anders moet je vergelijken met 1. En wat is dat dan 1 of 2 of 3? Nu kan je zien dat het FirstType is. Waarbij FirstType dan natuurlijk iets leesbaar is als CREDIT of DEBET is bijvoorbeeld.
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
Glass Eye Photography | Zelfbouw wireless fightstick | Mijn puzzel site
Enum wordt opgeslagen als een integer...F.West98 schreef op zaterdag 16 juli 2016 @ 00:02:
[...]
Maar waarom zou je überhaupt een enum in de DB opslaan?
[ Voor 15% gewijzigd door Styxxy op 16-07-2016 01:01 ]
Enum als losse tabel* bedoel ik. De enum is in dit geval ook gerepresenteerd als int dus je kan prima een kolom INT aanmaken en daar die int in doen. Doet vrijwel elk ORM en is een prima oplossing.Styxxy schreef op zaterdag 16 juli 2016 @ 01:00:
[...]
Enum wordt opgeslagen als een integer...
Overigens dit doe ik bij mijn bedrijf ook. Keuze mogelijkheden zijn codes, die in Enums staan (maar via DB uitbreidbaar zijn). In code wordt er vergeleken met een enum om eventueel bepaalde acties uit te voeren.
Behalve de stijl waarop dit geprogrammeerd is, is het concept van de enum als INT value op te slaan, niet compleet verkeerd (zoals jij probeert te suggereren).
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
Kater? Eerst water, de rest komt later
"New is the new goto"Haan schreef op zaterdag 16 juli 2016 @ 15:44:
Je ziet eigenlijk al aan het gebruik van het new keyword dat er iets niet in de haak is, imo is dat keyword altijd een code smell als je het in je eigen code gebruikt.
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
1 + 1 = 3, for large values of 1?Edwin__ schreef op zaterdag 23 juli 2016 @ 18:50:
Laatst een keer tegengekomen in iemands C# code...
ToUpper() op een string doen om vervolgens te vergelijken met een numerieke waarde
if(value.ToUpper() == "3") { ... }
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
De vergelijking is daar gewoon met een string.Edwin__ schreef op zaterdag 23 juli 2016 @ 18:50:
Laatst een keer tegengekomen in iemands C# code...
ToUpper() op een string doen om vervolgens te vergelijken met een numerieke waarde
if(value.ToUpper() == "3") { ... }
Komt d'r in, dan kö-j d’r oet kieken
Kan je deze eens toelichten? Want ik produceer continue nieuwe objecten in mijn code met new... Juist omdat het gewoon nieuwe objecten zijn.Haan schreef op zaterdag 16 juli 2016 @ 15:44:
Je ziet eigenlijk al aan het gebruik van het new keyword dat er iets niet in de haak is, imo is dat keyword altijd een code smell als je het in je eigen code gebruikt.
Het gaat hier om het gebruik van new als modifier op een fieldGomez12 schreef op zaterdag 23 juli 2016 @ 21:30:
[...]
Kan je deze eens toelichten? Want ik produceer continue nieuwe objecten in mijn code met new... Juist omdat het gewoon nieuwe objecten zijn.
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
De vraag is dan wel wat ToLower() dan doet als je het toepast op "3". Deze code lijkt te impliceren dat de lowercase van "3" niet gelijk is aan "3"D4NG3R schreef op zaterdag 23 juli 2016 @ 20:29:
[...]
De vergelijking is daar gewoon met een string.
Misschien denk de auteur dat "3.14".toLower() gelijk is aan "3". Wellicht door PHP achtergrond. /satiredcm360 schreef op zaterdag 23 juli 2016 @ 22:14:
[...]
De vraag is dan wel wat ToLower() dan doet als je het toepast op "3". Deze code lijkt te impliceren dat de lowercase van "3" niet gelijk is aan "3"
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
Sinds de 2 dagen regel reageer ik hier niet meer
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
Hoezo? Een string is geen onderdeel van een gebouw, maar een kledingstuk van een persoon eventueel in een gebouw.CurlyMo schreef op zaterdag 23 juli 2016 @ 23:37:
Of gewoon een verwarring met ceil en floor.
[ Voor 0% gewijzigd door DJMaze op 24-07-2016 01:49 . Reden: Grrr smilies, nu uit ]
Maak je niet druk, dat doet de compressor maar
DJMaze schreef op zondag 24 juli 2016 @ 01:48:
[...]
Hoezo? Een string is geen onderdeel van een gebouw, maar een kledingstuk van een persoon eventueel in een gebouw.
En veel personen zien graag de string to lower for "<3".
Dus "3" had "<3" moeten zijn.
2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI
Precies dit inderdaad. En het stond niet eens op 1 plek hahaGomez12 schreef op zondag 24 juli 2016 @ 04:53:
Waarschijnlijk zit die persoon gewoon zo zwaar te micro-optimaliseren dat het tegenwerkt...
.ToUpper() is in Dotnet net iets sneller als .ToLower() en het kan bij switches nog wel eens makkelijk zijn om als je geen case-sensitivity mee wenst te nemen dan dus op allebei de waarden maar .ToUpper() te doen.
Echter bij if-statements heb je daar gewoon ignorecase comparers voor die nog weer iets sneller zijn.
Oftewel ik gok dat het een leuke poging was tot een half begrepen micro-optimalisatie (want die geldt niet voor deze situatie) en tja, dat je dan ook nog eens voor die micro-optimalisatie een extra functie aanroep doet die nutteloos is gezien waar je mee compared maakt het helemaal onbegrepen.
[ Voor 6% gewijzigd door PWSteal op 24-07-2016 11:21 ]
Wat is er mis met de oude?
1
2
3
4
| public void SomeMethod() { var @break = new Klant(); } |
Zeker wel nodig, bv in Razor views met anonymous object voor html attributes:Gaius schreef op woensdag 27 juli 2016 @ 16:12:
[...]
Ik kwam een tijdje terug nog een constructie tegen in de code hier waarvan ik even op moest zoeken wat het was, en vervolgens niet kon bedenken waarom het a) mogelijk gemaakt is, en b) je dat zou willen gebruiken:
code:
1 2 3 4 public void SomeMethod() { var @break = new Klant(); }
Het gaat om het gebruik van het @-teken voor de naam van de variabele. Voor degenen die het ook zouden moeten opzoeken: hiermee kun je in C# keywords (zoals class, in, out, goto, break, continue, etc etc) gebruiken als variabel-namen. Leuk dat het kan, maar waarom zou je in hemelsnaam keywords willen gebruiken hiervoor?
1
| new { @class = "mycustomclass", @readonly = "readonly" } |
[ Voor 4% gewijzigd door Styxxy op 27-07-2016 17:27 ]
De enige die ik in het echte wereld vaak zie is @event omdat dat zowel een domeinterm als keyword is. Dan kun je wel kunstmatig een andere naam verzinnen maar dan vind ik (en blijkbaar genoeg anderen) de @-variant praktischer.Gaius schreef op woensdag 27 juli 2016 @ 16:12:
Het gaat om het gebruik van het @-teken voor de naam van de variabele. Voor degenen die het ook zouden moeten opzoeken: hiermee kun je in C# keywords (zoals class, in, out, goto, break, continue, etc etc) gebruiken als variabel-namen. Leuk dat het kan, maar waarom zou je in hemelsnaam keywords willen gebruiken hiervoor?
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
Goeie, Razor views was ik even vergeten. Nu ik dat zo teruglees bedenk ik me dat ik het waarschijnlijk al veel eerder ben tegengekomen.Styxxy schreef op woensdag 27 juli 2016 @ 17:27:
[...]
Zeker wel nodig, bv in Razor views met anonymous object voor html attributes:
C#:
1 new { @class = "mycustomclass", @readonly = "readonly" }
Verder inderdaad volledig gellijk dat het niet echt interessant is om te gebruiken.
Je bedoelt een event zoals een feestje, optreden of braderie ergens ofzo? Dat kan ik me nog wel voorstellen ja, al zou ik dan toch m'n best doen om dat keyword te omzeilen.kenneth schreef op woensdag 27 juli 2016 @ 17:27:
[...]
De enige die ik in het echte wereld vaak zie is @event omdat dat zowel een domeinterm als keyword is. Dan kun je wel kunstmatig een andere naam verzinnen maar dan vind ik (en blijkbaar genoeg anderen) de @-variant praktischer.
Voor je PHP aanvalt is het misschien handig om eerst even te kijken of je een idee hebt van waar je het over hebt.RobV schreef op zaterdag 23 juli 2016 @ 23:05:
[...]
Misschien denk de auteur dat "3.14".toLower() gelijk is aan "3". Wellicht door PHP achtergrond. /satire
1
2
3
4
| php > $x = "3.14"; php > print strtolower($x); 3.14 php > |
Of als je event sourcing gebruikt.Gaius schreef op woensdag 27 juli 2016 @ 23:25:
Je bedoelt een event zoals een feestje, optreden of braderie ergens ofzo? Dat kan ik me nog wel voorstellen ja, al zou ik dan toch m'n best doen om dat keyword te omzeilen.
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
Of je mist even de '/satire' aan het einde van zijn berichtXantios schreef op donderdag 28 juli 2016 @ 09:32:
[...]
Voor je PHP aanvalt is het misschien handig om eerst even te kijken of je een idee hebt van waar je het over hebt.
[...]
ben benieuwd waar die 3 vandaan komt dan, leg uitdcm360 schreef op donderdag 28 juli 2016 @ 10:52:
[...]
Of je mist even de '/satire' aan het einde van zijn bericht
Je gaat nog al hard in op de zin 'Wellicht door PHP achtergrond', terwijl dat helemaal niet serieus bedoeld was. Je kan er een bloedserieus codevoorbeeld tegenaangooien, maar dat maakt niet uit.Xantios schreef op donderdag 28 juli 2016 @ 11:10:
[...]
ben benieuwd waar die 3 vandaan komt dan, leg uit
Tjolk is lekker. overal en altijd.
Met ToUpper heb ik nog een keer leuke meegemaakt, als je een case sensitive database hebt, en je doet een to upper, dan word de index genegeerdEdwin__ schreef op zaterdag 23 juli 2016 @ 18:50:
Laatst een keer tegengekomen in iemands C# code...
ToUpper() op een string doen om vervolgens te vergelijken met een numerieke waarde
if(value.ToUpper() == "3") { ... }
Vermoed beetje opgekropte woede door het altijd maar belachelijk maken van PHP door mensen die er nog nooit wat zinnigs in gedaan hebben. Of erger nog, de mensen die dit soort argumenten beginnen na te papegaaien zonder überhaupt een idee te hebben van wat ze roepen.dcm360 schreef op donderdag 28 juli 2016 @ 11:21:
[...]
Je gaat nog al hard in op de zin 'Wellicht door PHP achtergrond', terwijl dat helemaal niet serieus bedoeld was. Je kan er een bloedserieus codevoorbeeld tegenaangooien, maar dat maakt niet uit.
De eerdere versies van PHP hadden zeker bijzondere eigenaardigheden.Ger schreef op donderdag 28 juli 2016 @ 11:25:
PHP heeft nogal eens wat quirks of gewoon dingen die vanuit historisch oogpunt (toen PHP voor het eerst het levenslicht zag) logisch waren, maar nu als een tang op een varken slaan.
Ik werk vrijwel alleen in PHP dus nee, ik val PHP niet aan.
[ Voor 35% gewijzigd door Xantios op 28-07-2016 17:50 ]
1
2
| $res = true && false; // false $res = true AND false; // true |
[ Voor 17% gewijzigd door mbarie op 29-07-2016 09:02 ]
{signature}
Tsja, voor velen is het redelijk hetzelfde, maar het eerste is een logische AND (beide waarden moeten TRUE opleveren) terwijl het tweede een bitwise AND (beter: &) is (vergelijkt per bit of het gelijkwaardig is en geeft de resulterende bitwaarde terug).mbarie schreef op vrijdag 29 juli 2016 @ 07:10:
Of...
code:
1 2 $res = true && false; // false $res = true AND false; // true
Erg veel quirks blijven ook nog wel even... Maar het blijft voorlopig de taal waarin ik het snelst resultaat boel
[edit]Hier klaagde een collega recent over. Ik kan het alleen niet reproduceren
[ Voor 8% gewijzigd door Tjolk op 29-07-2016 09:21 ]
Tjolk is lekker. overal en altijd.
Krijg toch echt:mbarie schreef op vrijdag 29 juli 2016 @ 07:10:
Of...
code:
1 2 $res = true && false; // false $res = true AND false; // true
Erg veel quirks blijven ook nog wel even... Maar het blijft voorlopig de taal waarin ik het snelst resultaat boel
[edit]Hier klaagde een collega recent over. Ik kan het alleen niet reproduceren
1
| bool(false) bool(false) |
Zou wel het gedocumenteerde gedrag zijn. && heeft een hogere presedence dan =, terwijl 'and' een lagere heeft. Daardoor zou de 2e expressie in je voorbeeld equivalent zijn aanmbarie schreef op vrijdag 29 juli 2016 @ 07:10:
Of...
code:
1 2 $res = true && false; // false $res = true AND false; // true
Erg veel quirks blijven ook nog wel even... Maar het blijft voorlopig de taal waarin ik het snelst resultaat boel
[edit]Hier klaagde een collega recent over. Ik kan het alleen niet reproduceren
1
| ($res=TRUE) and FALSE; |
Volgens mij waren we dezelfde stackoverflow aan het lezen:Lye schreef op vrijdag 29 juli 2016 @ 09:25:
[...]
Zou wel het gedocumenteerde gedrag zijn. && heeft een hogere presedence dan =, terwijl 'and' een lagere heeft. Daardoor zou de 2e expressie in je voorbeeld equivalent zijn aancode:
1 ($res=TRUE) and FALSE;
Al zou ik ook geloven dat dit soort quirks heel stil gefixed worden, om de fuckup maar te verbergen.
1
2
3
4
5
6
7
8
9
10
| $res = true && false; var_dump($res); $res = true AND false; var_dump($res); bool(false) bool(true) |
(16 x 300Wp) 4800Wp + (sinds 14 feb 2023) (7 x 405Wp) 2835Wp = 7635Wp @Zuid op 4.5kW omvormer
Klopt niet. && en AND zijn beide logical. Maar de precedence van AND staan na die van assignment operators, waar die && voor de assignment operators staat.Ger schreef op vrijdag 29 juli 2016 @ 09:19:
[...]
Tsja, voor velen is het redelijk hetzelfde, maar het eerste is een logische AND (beide waarden moeten TRUE opleveren) terwijl het tweede een bitwise AND (beter: &) is (vergelijkt per bit of het gelijkwaardig is en geeft de resulterende bitwaarde terug).
[ Voor 10% gewijzigd door mbarie op 29-07-2016 10:09 ]
Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.
Nou ben ik geen PHP'er, maar hoort een bitwise and/or niet gewoon hetzelfde te doen als een logische and/or als je boolean argumenten hebt? Zo niet, dan vraag ik me af wat je bitrepresentatie voor true/false dan wel niet is...Ger schreef op vrijdag 29 juli 2016 @ 09:19:
[...]
Tsja, voor velen is het redelijk hetzelfde, maar het eerste is een logische AND (beide waarden moeten TRUE opleveren) terwijl het tweede een bitwise AND (beter: &) is (vergelijkt per bit of het gelijkwaardig is en geeft de resulterende bitwaarde terug).
Heeft geen speciale krachten en is daar erg boos over.
1
2
| $result = true & false; var_dump($result) // int(0) |
[ Voor 15% gewijzigd door Jerrythafast op 29-07-2016 15:43 ]
Als ze dat anders gaan doen gaat waarschijnlijk 99% van alle php scripts kapot, of datcht je dat 'or die('error')' een speciale language construct was?Lye schreef op vrijdag 29 juli 2016 @ 09:25:
Al zou ik ook geloven dat dit soort quirks heel stil gefixed worden, om de fuckup maar te verbergen.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Janoz schreef op vrijdag 05 augustus 2016 @ 15:33:
[...]
Als ze dat anders gaan doen gaat waarschijnlijk 99% van alle php scripts kapot, of datcht je dat 'or die('error')' een speciale language construct was?
1
2
| ($a = false) or die(); $a = (false or die()); |
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
1
2
3
4
5
6
7
8
9
| foreach (var item in items) { if (item.ID == id) { // do something with item break; } } |
1
2
3
4
5
6
7
8
9
10
| var res = items.Where(i => i.ID == id); if (res.Count() < 1) { return; } var item = res.ElementAt(0); // do something with item |
3
| if (!res.Any()) |
1
2
3
4
5
6
7
8
| var item = items.FirstOrDefault(i => i.ID == id); if (item == null) { return; } // do something with item |
Afhankelijk van de mate van hardening van je code kun je ook SingleOrDefault gebruiken om een race condition te vermijden/asserten.Styxxy schreef op donderdag 11 augustus 2016 @ 19:48:
Sowieso is het laatste (FirstOrDefault) preferred. Anders ga je de enumerator meerdere keren uitvoeren (ook met Any).
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
1
| Using objWriter As New StreamWriter(FileToSaveTo, IIf(File.Exists(FileToSaveTo), True, False)) |
[ Voor 12% gewijzigd door Damic op 11-08-2016 22:07 ]
Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag
Hoe dan? Beiden zullen stoppen zodra er een element is gevonden dat aan het predicaat voldoet. En beiden lopen de gehele collection af als dat element niet bestaat.Styxxy schreef op donderdag 11 augustus 2016 @ 19:48:
Sowieso is het laatste (FirstOrDefault) preferred. Anders ga je de enumerator meerdere keren uitvoeren (ook met Any).
[ Voor 9% gewijzigd door .oisyn op 11-08-2016 22:13 ]
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.
We are shaping the future
Any returnt een bool hier. Het object wordt dus niet opgehaald.Alex) schreef op donderdag 11 augustus 2016 @ 22:18:
en eentje om het object op te halen uit de database.
Any retourneert inderdaad een boolean, maar er wordt wél een query uitgevoerd in de database. Deze query retourneert dan een boolean die EF weer doorgeeft aan de caller. Afhankelijk van de criteria die zijn opgesteld als Wheres kan dat nog best een zware query zijn ook, de querybuilder van EF is niet altijd even efficiënt namelijk.diondokter schreef op donderdag 11 augustus 2016 @ 23:03:
[...]
Any returnt een bool hier. Het object wordt dus niet opgehaald.
Ook dit wordt dus maar één keer uitgevoerd.
1
2
3
4
5
6
7
8
9
10
| var query = dbContext.Products.Where(p => p.Name.Contains("sokken") && p.Colour == "Blue"); if(query.Any()) { var sokken = query.ToList(); Console.WriteLine("Ik heb {0} blauwe sokken gevonden!", sokken.Count); } else { Console.WriteLine("Geen blauwe sokken gevonden, ga naar de winkel!"); } |
We are shaping the future
Verwijderd
Inderdaad, ik heb werkelijk nog nooit een regel LINQ to Entities geschreven. LINQ to Objects daarentegenCaelorum schreef op donderdag 11 augustus 2016 @ 23:34:
Waarom wordt altijd EF erbij gehaald als mensen het hebben over LINQ. Leuk dat er een EF provider/implementatie/whatever is, maar dat hoeft hier niet eens van toepassing te zijn. Of het slecht is/preferred is ligt dus heel erg aan de implementatie van de IEnumerable/IObservable/IQueryable/Iwhatever
Apple iPhone 16e LG OLED evo G5 Google Pixel 10 Samsung Galaxy S25 Star Wars: Outlaws Nintendo Switch 2 Apple AirPods Pro (2e generatie) Sony PlayStation 5 Pro
Tweakers is onderdeel van
DPG Media B.V.
Alle rechten voorbehouden - Auteursrecht © 1998 - 2025
•
Hosting door TrueFullstaq