[alg] Slechtste programmeervoorbeelden deel 5 Vorige deel Overzicht

Pagina: 1 ... 10 ... 20 Laatste
Acties:

Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je krijgt een infinite loop als iemand DeleteInstance() aanroept. Die overigens ook "fout" is, je zou verwachten dat hij 'instance' op nullptr zet. Zelfs als je de dtor fixed dan zal GetInstance() en DeleteInstance() niet goed meer werken na het aanroepen van DeleteInstance()

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


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 15:29
Goed punt, 2e ding wat ik niet goed heb overgetypt ;) Volgende keer toch maar copy/paste en dan de herkenbare productnamen find/replace doen :X
De infinite loop zou ik ergens verwachten ja, maar treedt niet op. Misschien omdat DeleteInstance() effectief niet wordt aangeroepen, misschien omdat VC++ en GCC daartegen beschermen. I'll never know, die overduidelijke fouten heb ik weggehaald zonder te testen met wat print-statements :P

Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 19:26
Afbeeldingslocatie: http://cihs.cf/2n

Ergens heb ik toch het gevoel dat ik dit vorig jaar beter niet zo genoemd had... Maar ik heb nog steeds niet direct een idee hoe ik hem wel zou kunnen noemen :'(

Acties:
  • +1 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Dat moet natuurlijk FileNotFound zijn :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:
  • +1 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

azerty schreef op maandag 31 augustus 2015 @ 17:08:
[afbeelding]

Ergens heb ik toch het gevoel dat ik dit vorig jaar beter niet zo genoemd had... Maar ik heb nog steeds niet direct een idee hoe ik hem wel zou kunnen noemen :'(
Trilean ;)

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


Acties:
  • 0 Henk 'm!

  • XyritZz
  • Registratie: Augustus 2003
  • Laatst online: 15-09 15:21
ajakkes schreef op dinsdag 23 juni 2015 @ 10:42:
Niet om alles goed te praten. Maar vergeten we hier niet dat India een groot land is met veel inwoners.

En dat je ook in zo'n land betaald voor kwaliteit?

Geef je project aan een Nederlandse kleine ontwikkelaar en je krijgt mogelijk ook een draak van een product terug.

Bepaalde zaken zijn zeker waar, zoals cultuur verschillen en minder communicatie door afstand. Maar afspraken moeten gewoon duidelijk gemaakt worden. Zoals opleveren van werkende modules. En niet eindeloos bij dezelfde ontwikkelaars blijven hangen terwijl problemen open blijven staan.

Maar dat gebeurd in Nederland zelf ook te vaak.
Mijn ervaringen met outsourcing naar India zijn best positief, het kost wat tijd qua opstarten maar zodra je eenmaal een paar developers hebt waarin je geïnvesteerd hebt en die je taal/domein begrijpen zijn ze erg goed. Die paar developers kunnen het vervolgens uitleggen aan hun collega's en uiteindelijk heb je een prima team.

Je moet alleen niet de verwachting hebben dat de eerste opdracht goed zal gaan, net zoals je die verwachting niet bij een junior of een stagiair hebt.

I think there is a world market for maybe five computers. - Thomas Watson (1874-1956), Directeur van IBM (1943)


Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 19:26
Ah, dat ik daar niet op gedacht had 8)7

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 15:29
XyritZz schreef op maandag 31 augustus 2015 @ 17:16:
[...]


Mijn ervaringen met outsourcing naar India zijn best positief, het kost wat tijd qua opstarten maar zodra je eenmaal een paar developers hebt waarin je geïnvesteerd hebt en die je taal/domein begrijpen zijn ze erg goed. Die paar developers kunnen het vervolgens uitleggen aan hun collega's en uiteindelijk heb je een prima team.

Je moet alleen niet de verwachting hebben dat de eerste opdracht goed zal gaan, net zoals je die verwachting niet bij een junior of een stagiair hebt.
Tja, mijn ervaringen zijn totaal anders. Situatie: een ex-Philips-manager vond het een leuk idee om wat werk in India te laten doen. Dat was bij Philips ook hopeloos mis gegaan, dus dat zou bij het volgende bedrijf vast helemaal goed gaan _O- Dat was al een jaar bezig voordat ze mij in zo'n 'team' zetten. Ze kregen in mijn 'team' (6 man in Nederland, 10 man in India) taken die een junior in Nederland makkelijk zou kunnen doen. Helaas werkte het niet, was de code onleesbaar, waarna ik een code-review heb gedaan en duidelijke aanwijzingen teruggegeven. De volgende keer werd het weer verprutst. Na dat een paar keer te hebben gedaan heb ik aan mijn team-lead gevraagd of ik die taak alsjeblieft zelf mocht doen, dat zou minder tijd en energie kosten dan die teringzooi reviewen.
Uiteraard zaten er grote verschillen tussen de developers daar, maar gemiddeld...

Ik heb daarnaast wel meer gedetailleerde verhalen gehoord van betrouwbare personen, maar die durf ik niet op te schrijven ;)
Mijn ervaring is vrij simpel: als je als Nederlander een opdracht zo duidelijk gaat omschrijven dat het in India gemaakt kan worden, en genoeg project-management doet om te zorgen dat het af komt, en genoeg doet om onderhoudbaarheid te waarborgen, dan kost dat zoveel tijd dat je het beter hier kunt maken.

[ Voor 4% gewijzigd door MBV op 31-08-2015 23:20 ]


Acties:
  • 0 Henk 'm!

  • LennardF1989
  • Registratie: September 2011
  • Laatst online: 23-02-2024
@MBV Ik had de horrorverhalen van iemand anders wel eens gehoord die voor Samsung werkte, nu heeft mijn Scrum-team het ook aan de lijven ondervonden. Momenteel werkt mijn bedrijf voor een partij aan een groot project, delen hiervan zijn door deze partij uitbesteed aan Indiërs. Het niveau van de mensen met wie wij moeten samenwerken is niet om over naar huis te schrijven.

Even een XSD importeren is de heer in kwestie werkelijk 2 weken bezig geweest omdat zijn tools haperden. Uiteindelijk meerdere versies opgeleverd op verschillende SOAP versies, met zijn eigen toolset (Eclipse) aangetoond dat de import prima werkt, stap voor stap voor hem uitgeschreven hoe het moest, en nog lukte het hem niet. Hij bleef ook maar vragen waarom de namespaces (tempuri.org) geen geldige URL waren en dat hij daar 404's van kreeg.

Een andere waar mijn klomp wel om brak was dat we een export hadden aangeleverd van een paar miljoen records, volgens hun eigen specificaties in een .csv file, kregen we het verzoek of we er een .txt van wilde maken want nu opende het verkeerde programma als ze erop dubbel klikte...

Er komen hier vast nog veel meer hilariteit uit. We hebben nu maar besloten gewoon zoveel mogelijk voor te kouwen om het proces niet te verstoren, maar zelfs daar hebben ze dus nog moeite mee.

Acties:
  • 0 Henk 'm!

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

F.West98

Alweer 16 jaar hier

azerty schreef op maandag 31 augustus 2015 @ 17:08:
[afbeelding]

Ergens heb ik toch het gevoel dat ik dit vorig jaar beter niet zo genoemd had... Maar ik heb nog steeds niet direct een idee hoe ik hem wel zou kunnen noemen :'(
Ik neem aan C# als ik de syntax en alles zo zie? Dan maak ik altijd gebruik van een nullable boolean.
C#:
1
2
3
public class Some {
    public bool? IsActive; // True: Active, False: Not Active, Unset: Inherit
}

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • 0 Henk 'm!

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 16:57
LennardF1989 schreef op dinsdag 01 september 2015 @ 12:40:
We hebben nu maar besloten gewoon zoveel mogelijk voor te kouwen om het proces niet te verstoren
Dat is misschien wel de grootste fout die je kan maken. Het team ondergeschikt maken aan het proces. Laat het maar pijnlijk duidelijk worden waar de problemen zitten. Nooit een mank proces proberen verdoezelen.

Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 19:26
F.West98 schreef op dinsdag 01 september 2015 @ 17:44:
[...]

Ik neem aan C# als ik de syntax en alles zo zie? Dan maak ik altijd gebruik van een nullable boolean.
C#:
1
2
3
public class Some {
    public bool? IsActive; // True: Active, False: Not Active, Unset: Inherit
}
Dan moet ik weer gaan checken als ik ze wil afprinten op mogelijke null values... Nu is het met de enum juist iets gemakkelijker (moet er toch geen true/false statements mee uitvoeren).

Acties:
  • 0 Henk 'm!

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

F.West98

Alweer 16 jaar hier

azerty schreef op dinsdag 01 september 2015 @ 18:00:
[...]


Dan moet ik weer gaan checken als ik ze wil afprinten op mogelijke null values... Nu is het met de enum juist iets gemakkelijker (moet er toch geen true/false statements mee uitvoeren).
Ja ok. ALs je het nu al zo hebt is dat wel makkelijker. Maar voor in de DB is dit volgens mij makkelijker (iig duidelijker als je in de db gaat snuffelen)

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Kwistnix schreef op dinsdag 01 september 2015 @ 17:53:
Dat is misschien wel de grootste fout die je kan maken. Het team ondergeschikt maken aan het proces. Laat het maar pijnlijk duidelijk worden waar de problemen zitten. Nooit een mank proces proberen verdoezelen.
Dat lijkt mij ook. Je riskeert anders dat management een succes ziet waar in werkelijkheid alleen maar mislukking is. Op basis daarvan kunnen dan weer verkeerde beslissingen worden genomen.

Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Inderdaad. Als je alles maar met de mantel der liefde bedekt om zo te voorkomen dat men 'hogerop' problemen ziet, graaf je alleen maar een dieper gat voor jezelf.

Als over een tijd een collega vertrekt (nieuwe baan bijvoorbeeld) wordt het gat dat hij achterlaat niet opgevuld met een lokale slimmerik, in plaats daarvan komt er een resource bij in India. "Want," aldus de verantwoordelijke manager, "tot nu toe hebben ze altijd prima werk geleverd." En kom dan maar eens aan met het tegendeel, je wordt gewoon niet meer geloofd.

We are shaping the future


Acties:
  • 0 Henk 'm!

  • LennardF1989
  • Registratie: September 2011
  • Laatst online: 23-02-2024
Kwistnix schreef op dinsdag 01 september 2015 @ 17:53:
[...]

Dat is misschien wel de grootste fout die je kan maken. Het team ondergeschikt maken aan het proces. Laat het maar pijnlijk duidelijk worden waar de problemen zitten. Nooit een mank proces proberen verdoezelen.
Oh, we laten het ook zeker wel merken en alle communicatie naar de partij gaat ook naar projectmanagers. Dus op het moment dat meneer 30 mailtjes stuurt dat het niet lukt, terwijl het bij ons wel werkt, ziet management dat. Maar helaas er gaat aan de situatie niks veranderen want er is geen ander team beschikbaar, en wij hebben er dan als bedrijf niks aan dat wij 2 weken moeten wachten tot één of andere lummel eindelijk aan de slag kan. We gaan ze iig. geen code sturen, dat is hun eigen zorg, wij willen alleen horen of een API draait en goed reageert :P En als zelfs dat te lastig is, gaan we er gewoon vanuit dat het werkt tot het tegendeel wordt bewezen.

[ Voor 20% gewijzigd door LennardF1989 op 01-09-2015 20:21 ]


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Natuurlijk heb je daar wel wat aan. In de tijd dat je zit te wachten kun je andere dingen doen (refactoren bijvoorbeeld) en je kunt het als leverage gebruiken wanneer er een beoordelingsmoment komt.

We are shaping the future


Acties:
  • 0 Henk 'm!

  • LennardF1989
  • Registratie: September 2011
  • Laatst online: 23-02-2024
Alex) schreef op dinsdag 01 september 2015 @ 20:21:
Natuurlijk heb je daar wel wat aan. In de tijd dat je zit te wachten kun je andere dingen doen (refactoren bijvoorbeeld) en je kunt het als leverage gebruiken wanneer er een beoordelingsmoment komt.
Dat doen we ook wel, maar vanuit management willen ze bepaalde zaken geregeld hebben die wij door onkunde van andere niet kunnen waarmaken. En dat verdoezelen we absoluut niet.

Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 19:26
F.West98 schreef op dinsdag 01 september 2015 @ 18:02:
[...]

Ja ok. ALs je het nu al zo hebt is dat wel makkelijker. Maar voor in de DB is dit volgens mij makkelijker (iig duidelijker als je in de db gaat snuffelen)
Ook niet in een DB opgeslagen, dus allemaal geen probleem :*)

(Output van ander programma die geparset moet worden (of er iets ofwel voorkomt, niet voorkomt of afwezig is), en het wordt ook onmiddelijk verder verwerkt en opgeslagen in tekstueel formaat (html pagina). De enum voldoet dus perfect hiervoor, maar de benaming was dus niet ideaal...

Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Ik ken je situatie wel. Ik heb ook zoiets meegemaakt.

Situatie: grote klant, "India" doet bugfixing en deployments en "wij" doen nieuwe functionaliteit.

Na 2 maanden ontwikkelen en testen staat de nieuwe versie eindelijk op productie. En warempel, het werkt niet. Velden verschijnen niet in de UI en op pagina's. Degene die de deployments doet kwam er niet aan uit en vroeg mij om hulp. Wat bleek? Hun oplossing voor merge conflicts is standaard "Keep my version". :')

We are shaping the future


Acties:
  • 0 Henk 'm!

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

Sebazzz

3dp

Alex) schreef op dinsdag 01 september 2015 @ 20:27:
Wat bleek? Hun oplossing voor merge conflicts is standaard "Keep my version". :')
:X Wie weet wat voor wijzigingen nog meer verloren zijn gegaan...

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


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
Sebazzz schreef op woensdag 02 september 2015 @ 08:27:
[...]

:X Wie weet wat voor wijzigingen nog meer verloren zijn gegaan...
Dat weet ik. Veel.

En als je daar vervolgens wat van zei (tegen hun, of tegen de opdrachtgever) kreeg je het lid op de neus "want dit is niet constructief".

We are shaping the future


Acties:
  • 0 Henk 'm!

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

C#:
1
2
3
4
public static double ToPositive(this double value)
{
    return value >= 0 ? value : -value;
}


En dan ergens anders, in dezelfde class...

C#:
1
return Math.Abs(value - value2).ToPositive();


Wait... wut? 8)7

My personal website


Acties:
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

OZ-Gump schreef op woensdag 02 september 2015 @ 16:07:
C#:
1
2
3
4
public static double ToPositive(this double value)
{
    return value >= 0 ? value : -value;
}


En dan ergens anders, in dezelfde class...

C#:
1
return Math.Abs(value - value2).ToPositive();


Wait... wut? 8)7
Soms wil je het gewoon zeker weten :)

Acties:
  • +1 Henk 'm!

  • gekkie
  • Registratie: April 2000
  • Laatst online: 17-09 19:11
Tsss niet zo negatief heh !

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
Ik kwam deze tegen:
C++:
1
2
3
4
5
  uint32_t Altitude;
  Altitude = TinyGPSPlus::altitude.meters();
  
  if(Altitude <0)
    return 1;


Een bug waar we alleen in Nederland last van hebben :+

Acties:
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

mcDavid schreef op maandag 14 september 2015 @ 15:55:
Een bug waar we alleen in Nederland last van hebben :+
Valt mee.

Afbeeldingslocatie: http://upload.wikimedia.org/wikipedia/commons/7/78/Badwater_elevation_sign.jpg

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Ik ben er geweest, prachtig O+ !

Acties:
  • 0 Henk 'm!

  • ZaPPZion
  • Registratie: Februari 2009
  • Laatst online: 28-08 12:46
downtime schreef op woensdag 02 september 2015 @ 16:20:
[...]

Soms wil je het gewoon zeker weten :)
Volgens mij werkt deze zelfs averechts in edge cases: +0.0000 wordt -0.0000, dat kan toch met doubles :)

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
HuHu schreef op maandag 14 september 2015 @ 16:03:
[...]

Ik ben er geweest, prachtig O+ !
Inderdaad, zeker vanaf het bijna 2 km hoger gelegen Dante's view echt adembenemend.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Squ1zZy
  • Registratie: April 2011
  • Niet online
Ik wil er geen topic voor aanmaken en gezien ik slecht kan programmeren dan maar hier :P

Modbreak:En zo werkt het hier dus niet. ;) Als je een probleem hebt dan kun je een topic openen waarbij je de Quickstart in acht neemt. Het is niet de bedoeling dat je die vraag maar in de grote topics dumpt.

[ Voor 93% gewijzigd door NMe op 14-09-2015 18:31 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:36

Creepy

Tactical Espionage Splatterer

Maak toch maar een eigen topic aan ;)
[edit] NMe is me voor...

[ Voor 26% gewijzigd door Creepy op 14-09-2015 18:32 ]

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


Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 19:26
Afbeeldingslocatie: http://cihs.cf/5d

Die moet dringend onder handen genomen worden |:(

Acties:
  • 0 Henk 'm!

  • Afvalzak
  • Registratie: Oktober 2008
  • Laatst online: 31-08 12:02

Afvalzak

Zet jij mij even buiten?

azerty schreef op maandag 21 december 2015 @ 20:19:
[afbeelding]

Die moet dringend onder handen genomen worden |:(
:'( Succes

Last.fm | Code Talks


Acties:
  • 0 Henk 'm!

  • AtlasDev
  • Registratie: Maart 2012
  • Laatst online: 31-08 16:26
Deze vond ik wel mooi: https://twitter.com/Atlas...s/632217435769315328?s=09

Wat ik fout had gedaan was dat ik een variable had waar ik van uit ging dat het een boolean was, maar het bleek een string te zijn. Een kort voorbeeldje:
var deVariable = "true";
//stond er niet letterlijk, had het uit de url gehaald.

if(deVariable === true) {
alert("dit stukje zal nooit draaien");
} else {
errorFunc();
}
Dit heeft me behoorlijk wat hoofdpijn gebracht, en nog meer toen ik er achter kwam wat er aan de hand was :+ .

Acties:
  • 0 Henk 'm!

  • VeQVQUCjsxagUCH
  • Registratie: Juni 2015
  • Laatst online: 23-06-2024
Tja...

JavaScript:
1
2
3
4
5
6
7
$.post('/save/something', { id: 1, title: 'Test' }, function(response) {
    if(response == '{"success": true}') {
        alert('Success');
    } else {
        alert('Fail');
    }
});

Acties:
  • 0 Henk 'm!

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

Firesphere

Yoshis before Hoshis

VeQVQUCjsxagUCH schreef op dinsdag 22 december 2015 @ 21:08:
Tja...

JavaScript:
1
2
3
4
5
6
7
$.post('/save/something', { id: 1, title: 'Test' }, function(response) {
    if(response == '{"success": true}') {
        alert('Success');
    } else {
        alert('Fail');
    }
});
Bijna echt JSON!

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
AtlasDev schreef op dinsdag 22 december 2015 @ 12:15:
Deze vond ik wel mooi: https://twitter.com/Atlas...s/632217435769315328?s=09

Wat ik fout had gedaan was dat ik een variable had waar ik van uit ging dat het een boolean was, maar het bleek een string te zijn. Een kort voorbeeldje:


[...]


Dit heeft me behoorlijk wat hoofdpijn gebracht, en nog meer toen ik er achter kwam wat er aan de hand was :+ .
Ik had ook zo'n mooie derp vandaag. Collega kwam met een bug aanzetten met local storage. Wat had ik gedaan, boolean in de local storage opgeslagen. Alleen jammer dat de string 'false' truthy is. :+

(Overigens achterlijk dat local storage alleen strings aan kan, en niet andere primitives.)

[ Voor 6% gewijzigd door Grijze Vos op 22-12-2015 21:24 ]

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


Acties:
  • 0 Henk 'm!

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
Woy schreef op maandag 29 juni 2015 @ 18:37:
[...]

Krijg je niet überhaupt een compiler error dat je een non-static field gebruikt in een static context?
constructor en destructor als private?
:?

Acties:
  • +1 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
BoringDay schreef op woensdag 23 december 2015 @ 00:17:
[...]


constructor en destructor als private?
:?
Een private constructor is niet zo vreemd bij een Singleton, je wil immers niet dat iemand zelf instances aan gaat maken.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Oude post, maar ik moet toch even de betweter uithangen :Y)
ZaPPZion schreef op maandag 14 september 2015 @ 17:08:
[...]

Volgens mij werkt deze zelfs averechts in edge cases: +0.0000 wordt -0.0000, dat kan toch met doubles :)
Dat kan idd met doubles, maar wat je zegt zal niet optreden. ToPositive() maakt alles kleiner dan 0 negatief. +0 zal dus nooit -0 worden, want +0 >= 0. Overigens ook -0 >= +0, want -0 == +0, en niet -0 < +0.

Je kunt hooguit zeggen dat -0 ook -0 blijft, terwijl dat met Abs() waarschijnlijk niet het geval is (aangezien een typische abs operatie op de CPU gewoon de sign bit op 0 zet). Maar dat kan natuurlijk alleen als je direct ToPositive() aanroept zonder eerst Abs() aan te roepen.

[ Voor 21% gewijzigd door .oisyn op 23-12-2015 10: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.


Acties:
  • 0 Henk 'm!

  • BoringDay
  • Registratie: Maart 2009
  • Laatst online: 13-05 21:49
Woy schreef op woensdag 23 december 2015 @ 08:11:
[...]

Een private constructor is niet zo vreemd bij een Singleton, je wil immers niet dat iemand zelf instances aan gaat maken.
Wellicht voor C++ (of compiler afhankelijk), maar mij is geleerd dat dit altijd public moet zijn.

Acties:
  • 0 Henk 'm!

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

BoringDay schreef op woensdag 23 december 2015 @ 12:10:
[...]


Wellicht voor C++ (of compiler afhankelijk), maar mij is geleerd dat dit altijd public moet zijn.
Dat heb je verkeerd geleerd. Ook in C#, Java en vast een dozijn andere OO-talen mag een ctor private zijn.

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!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

BoringDay schreef op woensdag 23 december 2015 @ 12:10:
[...]


Wellicht voor C++ (of compiler afhankelijk), maar mij is geleerd dat dit altijd public moet zijn.
Als je de klasse in kwestie van buitenaf wil kunnen instantiëren, ja.

Een ctor moet niet public zijn. Mag private of protected, denk aan factories en inheritance waarbij je de (base) constructor niet van buitenaf wil laten aanroepen. Uiteraard gebruik je daar in het geval van inheritance ook een abstracte base class voor.

[ Voor 31% gewijzigd door CodeCaster op 23-12-2015 12:15 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 19:12

AW_Bos

Liefhebber van nostalgie... 🕰️

Geen slechte code, maar meer een WTF en een programmeur die koffie nodig had :D
Leuke discussie op een forum m.b.t. februari...

Code:
code:
1
strtotime("+1 month",$date);


>> Ja, maar dan komt er ' 02-03-2013' uit, dat kan niet.
<< Dacht jij dan 30 feb.
>> Dat vraag ik toch'?
<< Pak je kalender er eens bij....

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • 0 Henk 'm!

  • Saven
  • Registratie: December 2006
  • Laatst online: 08:44

Saven

Administrator

azerty schreef op maandag 21 december 2015 @ 20:19:
[afbeelding]

Die moet dringend onder handen genomen worden |:(
Maar het scheelt wel een extra query 8) 8) 8)

Acties:
  • 0 Henk 'm!

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

Firesphere

Yoshis before Hoshis

azerty schreef op maandag 21 december 2015 @ 20:19:
[afbeelding]

Die moet dringend onder handen genomen worden |:(
:D

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 19:12

AW_Bos

Liefhebber van nostalgie... 🕰️

azerty schreef op maandag 21 december 2015 @ 20:19:
[afbeelding]

Die moet dringend onder handen genomen worden |:(
Ha, zo werkte het rechtensysteem van mijn vorige site ook:
edit_users, delete_users, read_usernotes, delete_usernotes, write_usernotes, add_news, edit_news, delete_news, add_reviews, edit_reviews, delete_reviews etc..... dan nog 20 velden verder ofzo :P

Nu heb ik een mooie CRUD-implementatie gemaakt op een vindsel hier in de diepe krochten van GoT ;)

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • +1 Henk 'm!

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Gisteren ook weer wat tegengekomen:

Python:
1
2
3
4
5
6
7
8
9
10
def doe_iets_specifiek_voor_1_toestel(...):
  initialisatie = blah
  do_device_reboot=False
  for i in list_of_device_properties:
    vanalles_en_nog_wat()
    do_device_reboot = True
  
  if do_device_reboot:
    trigger_reboot()
  sleep(10)


In heel veel gevallen is die list_of_device_properties leeg en doet de functie niet meer dan sleep(10).
Saillant detail: deze code werd opgeroepen tijdens het begin van elke aanroep van het script.
Met andere woorden: elke developer (grootteorde enkele tientallen) werd bij elke aanroep 10s beziggehouden.

Mijn echte probleem hiermee:
- dat dit überhaupt geschreven is
- in code die verplicht gereviewed moet worden
- en dat geen van die tientallen developers denkt: "godverdomme, dit duurt lang! ik zoek ff uit waarom..."

Samen met wat andere opstart optimalisaties (30s opstarttijd -> 5s) heb ik dus grosso modo 2-3 manweken per jaar aan tijd bespaard! Beste baas, bij deze neem ik 2 weken verlof op :+

ASSUME makes an ASS out of U and ME


Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 19:26
Saven schreef op zaterdag 30 januari 2016 @ 19:31:
[...]

Maar het scheelt wel een extra query 8) 8) 8)
Hmm, voor invoegen van nieuws misschien wel, maar niet noodzakelijk voor andere zaken... Ah well, het gaat eruit in de volgende versie :p

Acties:
  • 0 Henk 'm!

  • jip_86
  • Registratie: Juli 2004
  • Laatst online: 18:03
H!GHGuY schreef op zaterdag 30 januari 2016 @ 20:05:
Gisteren ook weer wat tegengekomen:

Python:
1
2
3
4
5
6
7
8
9
10
def doe_iets_specifiek_voor_1_toestel(...):
  initialisatie = blah
  do_device_reboot=False
  for i in list_of_device_properties:
    vanalles_en_nog_wat()
    do_device_reboot = True
  
  if do_device_reboot:
    trigger_reboot()
  sleep(10)


In heel veel gevallen is die list_of_device_properties leeg en doet de functie niet meer dan sleep(10).
Saillant detail: deze code werd opgeroepen tijdens het begin van elke aanroep van het script.
Met andere woorden: elke developer (grootteorde enkele tientallen) werd bij elke aanroep 10s beziggehouden.

Mijn echte probleem hiermee:
- dat dit überhaupt geschreven is
- in code die verplicht gereviewed moet worden
- en dat geen van die tientallen developers denkt: "godverdomme, dit duurt lang! ik zoek ff uit waarom..."

Samen met wat andere opstart optimalisaties (30s opstarttijd -> 5s) heb ik dus grosso modo 2-3 manweken per jaar aan tijd bespaard! Beste baas, bij deze neem ik 2 weken verlof op :+
Ha maar dat is overal hetzelfde. Zijn van die klusjes die je 'een keer' wil doen maar zo lang mogelijk uitstelt. Terwijl er eventjes de tijd voor nemen je bakken tijd danwel irritaties bespaart :+

Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 19:26
Afbeeldingslocatie: http://cihs.cf/5m

We hebben er maar 50 nodig hoor :+ |:(

Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 19:12

AW_Bos

Liefhebber van nostalgie... 🕰️

En bij elke INSERT natuurlijk een stukje code die de velden telt om de 'column count doesn't match' meldingen tegen te gaan :P :+

[ Voor 10% gewijzigd door AW_Bos op 31-01-2016 13:32 ]

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 19:26
AW_Bos schreef op zondag 31 januari 2016 @ 13:31:
[...]

En bij elke INSERT natuurlijk een stukje code die de velden telt om de 'column count doesn't match' meldingen tegen te gaan :P :+
Insert is er nog niet zo te zien :+

En natuurlijk gaat het updaten in een php loopje... Als je ze alle 50 aanpast zijn dat 50 update queries 8)7

Acties:
  • 0 Henk 'm!

  • Mebus
  • Registratie: September 2006
  • Laatst online: 17-09 13:12
code:
1
2
3
4
app.get('/#_=_', function(req, res, next)
{

});



Even vergeten dat /#_=_ client side is. Uiteindelijk ook het probleem aan de client side opgelost :)

Facebook....

BABYMETAL LoL - Twitch


Acties:
  • 0 Henk 'm!

  • Bv202
  • Registratie: Oktober 2006
  • Laatst online: 14-11-2021
Facebook SDK (PHP):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
try {
      // need to circumvent json_decode by calling _oauthRequest
      // directly, since response isn't JSON format.
      $access_token_response =
        $this->_oauthRequest(
          $this->getUrl('graph', '/oauth/access_token'),
          $params = array('client_id' => $this->getAppId(),
                          'client_secret' => $this->getAppSecret(),
                          'redirect_uri' => $redirect_uri,
                          'code' => $code));
    } catch (FacebookApiException $e) {
      // most likely that user very recently revoked authorization.
      // In any event, we don't have an access token, so say so.
      return false;
    }


Systeem werkte niet omdat er dus een exception optrad (die natuurlijk niet zichbaar was en enkel bugs veroorzaakte). En wat gebeurt er dan? Niks, nada, noppes. Niet eens de exception loggen. De fout had ook niks te maken met de dingen die in de commentaar vermeld staan.

[ Voor 5% gewijzigd door Bv202 op 01-02-2016 14:11 ]


Acties:
  • 0 Henk 'm!

  • mbarie
  • Registratie: Mei 2011
  • Laatst online: 04-08-2021
En je oplossing was om de try/catch weg te halen? Of logging toe te voegen?
Daarna ben ik wel benieuwd hoe je dan om gaat met evt. update van je dependencies, want dan wordt de wijziging weer weggehaald...

Storyteller @ soundcloud


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Zo generiek vangen en onder tapijtje vegen is altijd slecht plan. En de auteur weet het, als je 'most likely' op schrijft ben je er (*&%@ bewust van dat je error handling niet correct is.

{signature}


Acties:
  • 0 Henk 'm!

  • windwarrior
  • Registratie: Januari 2009
  • Laatst online: 12-07-2024

windwarrior

ʍıupʍɐɹɹıoɹ

Bij mijn studievereniging heb ik de (Python/Django) website eens gescanned op try/except's die niets loggen. We hadden er honderden, nu gaan ze er langzaam uit :P

Grepje voor gebruikt uiteraard

Acties:
  • 0 Henk 'm!

  • YellowOnline
  • Registratie: Januari 2005
  • Laatst online: 28-03-2023

YellowOnline

BEATI PAVPERES SPIRITV

PowerShell:
1
$objWrongEvent | Add-Member -MemberType NoteProperty -Name SourceComputer -Value $("[System.Net.Dns]::GetHostEntry($($($arrWrong[0].ReplacementStrings[5]))).HostName.Split(".")[0] ($($($arrWrong[0].ReplacementStrings[5])))")


Het moment dat ik zelf niet meer zeker ben waar de haakjes openen en stoppen is het moment dat ik het leesbaarder moet schrijven waarschijnlijk :+

[ Voor 4% gewijzigd door YellowOnline op 04-02-2016 14:02 ]


Acties:
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

YellowOnline schreef op donderdag 04 februari 2016 @ 14:01:
Het moment dat ik zelf niet meer zeker ben waar de haakjes openen en stoppen is het moment dat ik het leesbaarder moet schrijven waarschijnlijk :+
Ik ben zelf ook geen fan van $variabelen in een string. Het wordt al snel onleesbaar. Ik gebruik liever formatted strings zodat je tekst en variabelen duidelijk scheidt.

Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 19:26
PHP:
1
$password = addslashes(strip_tags(md5($_POST['sPassword'])));


Jup, zo gaan er zeker geen sql injecties mogelijk zijn :+

uiteraard zwijgen we maar over het feit dat het plain md5 is :X

Acties:
  • 0 Henk 'm!

  • xoniq
  • Registratie: April 2005
  • Laatst online: 18:37
azerty schreef op vrijdag 05 februari 2016 @ 00:18:
PHP:
1
$password = addslashes(strip_tags(md5($_POST['sPassword'])));


Jup, zo gaan er zeker geen sql injecties mogelijk zijn :+

uiteraard zwijgen we maar over het feit dat het plain md5 is :X
Niet alleen dat MD5 ..... Die volgorde ook .........
  • Je hebt een wachtwoord.
  • Gooit daar MD5 overheen
  • Daar ga je tags uit strippen (die er niet zijn want het is een MD5 hash)
  • En dan nog slashes toevoegen aan aanhalingstekens die er niet zijn (want het is een MD5 hash)
8)7 8)7 8)7

Acties:
  • 0 Henk 'm!

  • xoniq
  • Registratie: April 2005
  • Laatst online: 18:37
mbarie schreef op dinsdag 02 februari 2016 @ 10:41:
[...]


En je oplossing was om de try/catch weg te halen? Of logging toe te voegen?
Daarna ben ik wel benieuwd hoe je dan om gaat met evt. update van je dependencies, want dan wordt de wijziging weer weggehaald...
Als het een class was, had ik die gewoon lekker extended met een eigen wrapper class die die functie override.

En de oplossing is NIET om de try/catch weg te halen. Die exception is er niet voor niets. Dan ga iets naar een logsysteem toegooien (de trace + message) en laat je het script daar ophouden door een melding terug te geven aan de front-end dat er iets is mis gegaan en dat er een melding van gemaakt is met daarbij dat dit z.s.m. wordt opgelost. (Wat dus kan als je een wrapper gebruikt)

Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 19:26
CRXDelSol schreef op vrijdag 05 februari 2016 @ 00:39:
[...]

Niet alleen dat MD5 ..... Die volgorde ook .........
  • Je hebt een wachtwoord.
  • Gooit daar MD5 overheen
  • Daar ga je tags uit strippen (die er niet zijn want het is een MD5 hash)
  • En dan nog slashes toevoegen aan aanhalingstekens die er niet zijn (want het is een MD5 hash)
8)7 8)7 8)7
Waarom denk je dat ik hem hier post? :p

Acties:
  • 0 Henk 'm!

  • xoniq
  • Registratie: April 2005
  • Laatst online: 18:37
azerty schreef op vrijdag 05 februari 2016 @ 00:48:
[...]


Waarom denk je dat ik hem hier post? :p
Ik vond 'm gewoon geniaal.
Het had net zo goed iets kunnen zijn als:

code:
1
2
$password = '';
$password = preg_replace('/\s*/', '', striptags(md5($password)));


Mooie geordende wachtwoord kolom in de user tabel van de database :o .

Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 19:26
azerty schreef op vrijdag 05 februari 2016 @ 00:18:
PHP:
1
$password = addslashes(strip_tags(md5($_POST['sPassword'])));


Jup, zo gaan er zeker geen sql injecties mogelijk zijn :+

uiteraard zwijgen we maar over het feit dat het plain md5 is :X
Opvolgertje:

PHP:
1
2
3
if (strlen($_POST['sPassword_New']) == strlen($_POST['sPassword_Current'])) {    
    $sErrorMsg .= "- Je nieuwe wachtwoord mag niet gelijk zijn aan je huidig wachtwoord.";
}


Ja hoor :+

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
CRXDelSol schreef op vrijdag 05 februari 2016 @ 00:39:
[...]

Niet alleen dat MD5 ..... Die volgorde ook .........
  • Je hebt een wachtwoord.
  • Gooit daar MD5 overheen
  • Daar ga je tags uit strippen (die er niet zijn want het is een MD5 hash)
  • En dan nog slashes toevoegen aan aanhalingstekens die er niet zijn (want het is een MD5 hash)
8)7 8)7 8)7
Wees blij dat 'ie zich in ieder geval bewust was van het gevaar van SQL injectie :P

Acties:
  • +1 Henk 'm!

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

Firesphere

Yoshis before Hoshis

azerty schreef op vrijdag 12 februari 2016 @ 22:07:
[...]


Opvolgertje:

PHP:
1
2
3
if (strlen($_POST['sPassword_New']) == strlen($_POST['sPassword_Current'])) {    
    $sErrorMsg .= "- Je nieuwe wachtwoord mag niet gelijk zijn aan je huidig wachtwoord.";
}


Ja hoor :+
Ah, als ze even lang zijn zijn ze automatisch hetzelfde :D

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 19:26
Firesphere schreef op vrijdag 12 februari 2016 @ 23:03:
[...]

Ah, als ze even lang zijn zijn ze automatisch hetzelfde :D
Uiteraard, wat kan het anders zijn? :+

Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 19:26
*fout*

[ Voor 97% gewijzigd door azerty op 13-02-2016 05:35 ]


Acties:
  • 0 Henk 'm!

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

Firesphere

Yoshis before Hoshis

Nogal ja.

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


Acties:
  • 0 Henk 'm!

  • Zerfox
  • Registratie: April 2010
  • Laatst online: 16-06 00:53

Zerfox

^this guy

Afgelopen kwartiel op school een groepsproject moeten doen met drie medestudenten. Midden in de nacht (uiteraard vlak voor de deadline :+ ) kwam ik deze code van iemand tegen:

Afbeeldingslocatie: http://i.imgur.com/7BwJFqm.png

8)7

Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 17:07

Damic

Tijd voor Jasmijn thee

Zerfox schreef op zaterdag 13 februari 2016 @ 14:45:
Afgelopen kwartiel op school een groepsproject moeten doen met drie medestudenten. Midden in de nacht (uiteraard vlak voor de deadline :+ ) kwam ik deze code van iemand tegen:

[afbeelding]

8)7
Die is goed :p

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • +1 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 17:16

Dido

heforshe

Pseudocode, maar op vele plekken in class constructors gevonden op mijn huidige klus:
C#:
1
2
3
4
private ISomeDBContext dbContext;
...
SomeIOC.register<ISomeDBContext>().Instance(SomeDBContext);
this.dbContext = new SomeDBContext();


Als je dan vraagt wat men denkt dat dit doet is het antwoord "ach, het werkt" 8)7

Voeg daarbij een standaard write-only oracle DB, een implementatie van NHibernate waarin SessionFactory wordt gebruikt om een singleton Session aan te maken en het idee dat EF slecht idee "omdat dat problemen geeft", en je wordt heel inventief als het gaat om database I/O :|

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • ajakkes
  • Registratie: Maart 2004
  • Laatst online: 16-05 22:32

ajakkes

👑

Firesphere schreef op vrijdag 12 februari 2016 @ 23:03:
[...]

Ah, als ze even lang zijn zijn ze automatisch hetzelfde :D
Dacht eerst dat het z'n methode was om te controleren of de wachtwoorden gelijk waren, om toegang te verlenen

👑


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 16-09 13:49

Patriot

Fulltime #whatpulsert

Zerfox schreef op zaterdag 13 februari 2016 @ 14:45:
Afgelopen kwartiel op school een groepsproject moeten doen met drie medestudenten. Midden in de nacht (uiteraard vlak voor de deadline :+ ) kwam ik deze code van iemand tegen:

[afbeelding]

8)7
Ach, het is beter dan wat die programmeur van de Facebook SDK deed. Ik weet alleen niet of ik daarom moet lachen of huilen.

Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 17:16

Dido

heforshe

ajakkes schreef op zaterdag 13 februari 2016 @ 16:32:
Dacht eerst dat het z'n methode was om te controleren of de wachtwoorden gelijk waren, om toegang te verlenen
In principe kan hij daar natuurlijk dezelfde logica voor gebruiken :P

Hoewel het dan nog veel veiliger kan: vergelijk de lengte van de MD5 hashes met elkaar 8)7

[ Voor 13% gewijzigd door Dido op 13-02-2016 16:38 ]

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • Kevinp
  • Registratie: Juni 2001
  • Laatst online: 10:55
Zerfox schreef op zaterdag 13 februari 2016 @ 14:45:
Afgelopen kwartiel op school een groepsproject moeten doen met drie medestudenten. Midden in de nacht (uiteraard vlak voor de deadline :+ ) kwam ik deze code van iemand tegen:

[afbeelding]

8)7
Geziend de code (waarschijnlijk) onderuit gaat is connection.close() nu niet echt heel erg om aan te roepen :P

d'r is maar één ding in het leven wat moet, en dat is dood gaan.


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Volgens mij gaat het meer om de rethrow... Waarbij het type van de oorspronkelijke exception maar even onder het tapijt wordt geveegd.

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


Acties:
  • 0 Henk 'm!

  • gr8-jen
  • Registratie: Juni 2011
  • Laatst online: 15:14
Bij mijn eerste bedrijf waar ik kwam werken hadden ze software opgekocht die ik mocht gaan onderhouden. Ik vond meerdere stukken slechte code maar dit blijft me altijd bij:

if (bla...bla....)
{
// do nothing
} else
{
*code die iets doet*
}

Waar ik het meeste mee zat was het comentaar //do nothing......

WP: ME SUZ-SWM80VA + ERST20D-VM2D || PV: 4500Wp ZWW || BENG, Rc6 rondom, tripple glas, WTW, 165m2 verwarmd || Gasloos sinds sep 2023


Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Een collega schrijft steeds zulke code (soms met nog meer nesting):
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
foreach (var f in foo)
{
    if (f.id == x)
    {   
        foreach (var b in bar)
        {
            if (b.id == y)
            {   
                // do something with foo with id: x and bar with id: y
            }
        }
    }
}


Zelf ben ik meer van de
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
f = null;
foreach (var item in foo)
{
    if (item.id == x)
    {
        f = item;
        break;
    }
}

b = null;
foreach (var item in bar)
{
    if (item.id == y)
    {
        b = item;
        break;
    }
}

if (f != null && b != null)
{
    // do something with foo with id: x and bar with id: y
}


of met Linq
C#:
1
2
3
4
5
6
7
f = foo.SingleOrDefault(item => item.id == x);
b = bar.SingleOrDefault(item => item.id == y);

if (f != null && b != null)
{
    // do something with foo with id: x and bar with id: y
}

Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je bent je er bewust van dat die twee stukken code niet hetzelfde doen?

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


Acties:
  • 0 Henk 'm!

  • sympa
  • Registratie: December 2013
  • Laatst online: 12:07
Jaar of 12 gelden, een stukje code duurde erg lang. Ging om het wijzigen van wat nummers. Allemaal Java. Men eiste van ons (systeembeheer) een snellere Sun want dit was niet bruikbaar.

Ik "goh je wil 250 nieuwe nummers toekennen - dat kan toch geen probleem zijn om vrije nummers te vinden in je database. Je moet eens een profiler gebruiken en kijken hoe vaak wat wordt aangeroepen."

Antwoord: "Profilewattuh?"

Uiteindelijk waren er wat geneste loops die heel leuk hetzelfde deden, waardoor het probleem van orde N^3 werd. Plus wat inefficient Java geneuzel...

Acties:
  • 0 Henk 'm!

  • sympa
  • Registratie: December 2013
  • Laatst online: 12:07
Nog een: collega maakt een handige unix utility om een projectmapje naar keus te verwijderen. Iets als:

#!/bin/sh
rm -rf /docs/$1/*

Shell "programmeren" is echt gevaarlijk.

Acties:
  • 0 Henk 'm!

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

F.West98

Alweer 16 jaar hier

.oisyn schreef op zaterdag 13 februari 2016 @ 23:40:
Je bent je er bewust van dat die twee stukken code niet hetzelfde doen?
Wel als de property "id" niet uniek is. Anders toch wel? Of mis ik iets?

2x Dell UP2716D | R9 7950X | 128GB RAM | 980 Pro 2TB x2 | RTX2070 Super
.oisyn: Windows is net zo slecht in commandline als Linux in GUI


Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Ik was vergeten te melden dat id uniek is.

Die nesting in onze code is echt verschrikkelijk (soms 7-8 levels diep) en is met een beetje nadenken makkelijk te herschrijven.

Ander voorbeeld:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
if (foo)
{
    if (bar)
    {
        if (baz)
        {
            // do something
        }
        else
        {
            throw new Exception("baz");
        }
    }
    else
    {
        throw new Exception("bar");
    }
}
else
{
    throw new Exception("foo");
}


vs.

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if (!foo)
{
    throw new Exception("foo");
}

if (!bar)
{
    throw new Exception("bar");
}

if (!baz)
{
    throw new Exception("baz");
}

// do something

Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

F.West98 schreef op zondag 14 februari 2016 @ 00:01:
[...]

Wel als de property "id" niet uniek is. Anders toch wel? Of mis ik iets?
Misschien is 'bar' wel null als het id niet bestaat.

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


Acties:
  • 0 Henk 'm!

  • D4NG3R
  • Registratie: Juli 2009
  • Laatst online: 18:59

D4NG3R

kiwi

:)

Daos schreef op zondag 14 februari 2016 @ 00:16:
Ik was vergeten te melden dat id uniek is.

Die nesting in onze code is echt verschrikkelijk (soms 7-8 levels diep) en is met een beetje nadenken makkelijk te herschrijven.

Ander voorbeeld:
[...]
Beide stukken code doen heel wat anders, al snap ik wel waar je op doelt. :+

Komt d'r in, dan kö-j d’r oet kieken


Acties:
  • 0 Henk 'm!

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

Firesphere

Yoshis before Hoshis

sympa schreef op zondag 14 februari 2016 @ 00:01:
Nog een: collega maakt een handige unix utility om een projectmapje naar keus te verwijderen. Iets als:

#!/bin/sh
rm -rf /docs/$1/*

Shell "programmeren" is echt gevaarlijk.
./projectdelete "../"?

I'm not a complete idiot. Some parts are missing.
.Gertjan.: Ik ben een zelfstandige alcoholist, dus ik bepaal zelf wel wanneer ik aan het bier ga!


Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 08-09 11:33
Zerfox schreef op zaterdag 13 februari 2016 @ 14:45:
Afgelopen kwartiel op school een groepsproject moeten doen met drie medestudenten. Midden in de nacht (uiteraard vlak voor de deadline :+ ) kwam ik deze code van iemand tegen:

[afbeelding]

8)7
Je ziet ook vaak
code:
1
2
3
4
catch(Exception e)
{
    throw e;
}


Zo heb ik het ook vaak geschreven. Maar dan klopt de stack trace niet meer. Ik kwam er pas een jaar geleden achter dat de juiste manier zo is:

code:
1
2
3
4
catch(Exception e)
{
    throw;
}

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

In C++ maak je op die manier ook slicing copies :)

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>

struct Foo { virtual const char * msg() { return "Luke without hand"; } };
struct Bar : Foo { virtual const char * msg() { return "Luke with hand"; } };

int main()
{
    try
    {
        try
        {
            throw Bar();
        }
        catch(Foo & f)
        {
            std::cout << f.msg() << std::endl;
            throw f;
        }
    }
    catch(Foo & f)
    {
        std::cout << f.msg() << std::endl;
    }
}


Output:
Luke with hand
Luke without hand

NOOOoooo...

[ Voor 6% gewijzigd door .oisyn op 16-02-2016 10:20 ]

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


Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
roy-t schreef op dinsdag 16 februari 2016 @ 09:27:
[...]

Zo heb ik het ook vaak geschreven. Maar dan klopt de stack trace niet meer. Ik kwam er pas een jaar geleden achter dat de juiste manier zo is:

code:
1
2
3
4
catch(Exception e)
{
    throw;
}
Als je er verder toch niets mee doet kun je de hele catch ook gewoon weglaten, IMHO

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 15:29
.oisyn schreef op dinsdag 16 februari 2016 @ 10:10:
In C++ maak je op die manier ook slicing copies :)

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>

struct Foo { virtual const char * msg() { return "Luke without hand"; } };
struct Bar : Foo { virtual const char * msg() { return "Luke with hand"; } };

int main()
{
    try
    {
        try
        {
            throw Bar();
        }
        catch(Foo & f)
        {
            std::cout << f.msg() << std::endl;
            throw f;
        }
    }
    catch(Foo & f)
    {
        std::cout << f.msg() << std::endl;
    }
}


Output:
Luke with hand
Luke without hand

NOOOoooo...
WTF?! Je geeft een referentie door, en toch wordt er een kopie gemaakt? :F

Acties:
  • 0 Henk 'm!

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

.oisyn

Moderator Devschuur®

Demotivational Speaker

De WTF is dat jij denkt dat een throw een ref captured. Dat doet ie niet. Een throw invoked een copy ctor. Een noncopyable object (deleted of private copy ctor) kun je niet throwen.

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


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 15:34
RobV schreef op dinsdag 16 februari 2016 @ 10:28:
[...]

Als je er verder toch niets mee doet kun je de hele catch ook gewoon weglaten, IMHO
Ik gok dat hij hier nog logging e.d. wil toevoegen, maar voor het gemak dit weggelaten heeft in z'n voorbeeld ;)

Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Merethil schreef op dinsdag 16 februari 2016 @ 11:13:
[...]


Ik gok dat hij hier nog logging e.d. wil toevoegen, maar voor het gemak dit weggelaten heeft in z'n voorbeeld ;)
Dat vermoeden heb ik ook, maar een voorbeeld geven waar je het doel van je voorbeeld weglaat (namelijk het loggen van de error op een goede manier) is niet het beste voorbeeld en past dan ook prima in dit topic :X Maargoed, ik snap dat *dit* specifieke voorbeeld bedoeld was om de throw; te demonstreren en dan is het wel weer een prima voorbeeld. O-)

[ Voor 17% gewijzigd door RobV op 16-02-2016 11:21 ]

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 15:34
RobV schreef op dinsdag 16 februari 2016 @ 11:19:
[...]

Een voorbeeld geven waar je het doel van je voorbeeld weglaat (namelijk het loggen van de error op een goede manier) is niet het beste voorbeeld en past dan ook prima in dit topic :X
Het enige wat hij toch aangeeft is dat je, als je je error mét stacktrace intact houden wilt throwen, je alleen throw hoeft te gebruiken? Wat hij verder daarin doet boeit niemand, het ging hem om dit specifieke stukje syntax.

Acties:
  • 0 Henk 'm!

  • RobV
  • Registratie: Juni 2013
  • Niet online

RobV

Welcome to the grid, Program.

(overleden)
Merethil schreef op dinsdag 16 februari 2016 @ 11:21:
[...]


Het enige wat hij toch aangeeft is dat je, als je je error mét stacktrace intact houden wilt throwen, je alleen throw hoeft te gebruiken? Wat hij verder daarin doet boeit niemand, het ging hem om dit specifieke stukje syntax.
Zie mijn edit. Sorry als ik te vroeg was met posten, ik zag in dat mijn verwoording niet netjes en niet aardig was.

 | Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 15:34
RobV schreef op dinsdag 16 februari 2016 @ 11:22:
[...]

Zie mijn edit. Sorry als ik te vroeg was met posten, ik zag in dat mijn verwoording niet netjes en niet aardig was.
Je edit is mijn reactie :+
Verwoording maakte mij niet zo uit, het ging me meer om het principe. ;)

Het is eigenlijk hele rare syntax, want je zegt niets anders dan "throw", zonder aan te geven wat je precies gooit, maar goed...
Hoe vaak ik trouwens heb gezien dat er niets anders dan een println van de error gebeurt in de catch; op mijn werk waren ze daar echt heel erg fan van :P
Pagina: 1 ... 10 ... 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. :)