🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: nl.comp.programmeren
Article #333

Re: Lijnen tellen van een project

#333
From: Dr.Ruud
Date: Wed, 26 Jan 2005 11:08
77 lines
4003 bytes
Toen ik John Bokma kietelde, kwam er dit uit:
> Dr.Ruud:

>> Nog zo'n voorbeeld:
>>
>>      if ((sex == 'F') || ((sex == 'f') && (sex = 'F'))) do_female;
>>      else if ((sex == 'M') || (sex = 'M')) do_male;

Je had toch wel gezien dat het de bedoeling was dat deze code hetzelfde
resultaat oplevert als die switch? (ik heb het niet getest)


>> Ik hou de literals overigens graag links van de '==', dus zo:
>>
>>      if (('F' == sex) || (('f' == sex) && (sex = 'F'))) do_female;
>>      else if (('M' == sex) || (sex = 'M')) do_male;

> Wat ik vreselijk onlogisch vind,

Je bent dan vast e1n van de velen die de "==" en "!=" niet echt als
symmetrische symbolen lezen. Ik zie veel liever een
if (NULL != lange-en-complexe-expressie)
dan andersom (en het liefst dus inclusief de onnodige "NULL !="),
want je weet meteen waarmee vergeleken wordt.

Heheh, dat kun je zelfs gebruiken om vreemde toekenningen
mee te "documenteren":

     if (('F' == sex) || (('f' == sex) && (NULL != (sex = 'F'))))
do_female;
     else if (('M' == sex) || (NULL != (sex = 'M'))) do_male;

of zo:

     if (('F' == sex) || (('f' == sex) && ('F' == (sex = 'F'))))
do_female;
     else if (('M' == sex) || ('M' == (sex = 'M'))) do_male;

Als motivatie voor het gebruiken van dit soort code stel ik me voor:
Scheelt warnings, en de compiler optimaliseert het wel schoon.


> en volgens mij ooit verzonnen om assignments in een if te ontdekken.

Ik legde het op aan beginnende C-programmeurs, dat scheelde een hoop
fouten en verdriet. Maar dan deden ze vervolgens natuurlijk zoiets:

  unsigned int uiLen;
  int i;
    :
    :
  for (i = 0; i++; i < uiLen) ...

en dan wilde dat soms niet stoppen.


> Ik meen mij te herinneren dat een
> beetje compiler daar een waarschuwing op geeft ( op: if ( sex = 'F' )
> that is ).

Als je het warning-level hoog genoeg zet, wel. En anders was er nog
lint.


> En zoniet, ik ga niet krom programmeren :-D.

Liever niet zeg. Toch zijn "How *NOT* to do it" lijstjes erg leerzaam,
nog veel meer als er een-verhaal-met-humor in de voorbeelden zit. En
het liefst een bewijs erbij dat een nette versie van de foute code
nauwelijks tot geen extra tijd kost en vaak minder aannames bevat
(denk bijvoorbeeld aan ASCII/EBCDIC/ISO-8859/UTF-8 afhankelijkheden).

-- 
Affijn, Ruud   `  -  ?
               + ` ? *
                 ? `     Jvr qvg yrrfg,
               ?  =  `   fgresg wbatre.
Technical Details
Message-ID: <ct818b.198.1@news.isolution.nl>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!news.glorb.com!news-in.ntli.net!newsrout1-win.ntli.net!ntli.net!border2.nntp.ams.giganews.com!nntp.giganews.com!transit.news.xs4all.nl!post.news.xs4all.nl!not-for-mail
References: <%XJId.2415$OZ2.252982@phobos.telenet-ops.be> <41f37378$0$140$e4fe514c@news.xs4all.nl> <ct2bdl$2p5$1@news1.zwoll1.ov.home.nl> <Xns95E88B1A63743castleamber@130.133.1.4> <41f55352$0$26219$18b6e80@news.wanadoo.nl> <Xns95E89B5FAF7C6castleamber@130.133.1.4> <41f587d8$0$11854$e4fe514c@news.xs4all.nl> <Xns95E8CE2C13FCcastleamber@130.133.1.4> <41f60627$0$11906$e4fe514c@news.xs4all.nl> <ct5e5s.104.1@news.isolution.nl> <Xns95E982F869770castleamber@130.133.1.4> <ct6veq.4f8.1@news.isolution.nl> <Xns95EA98A5B4Dcastleamber@130.133.1.4>

Show Full Headers
Complete Article Headers
X-Google-Thread: 107324,ab34a8b99e320381
X-Google-Thread: fcea4,ab34a8b99e320381
X-Google-Attributes: gid107324,gidfcea4,public
X-Google-Language: DUTCH,ASCII-7-bit
Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!news.glorb.com!news-in.ntli.net!newsrout1-win.ntli.net!ntli.net!border2.nntp.ams.giganews.com!nntp.giganews.com!transit.news.xs4all.nl!post.news.xs4all.nl!not-for-mail
Message-ID: <ct818b.198.1@news.isolution.nl>
From: "Dr.Ruud" <rvtol+news@isolution.nl>
Newsgroups: nl.comp.programmeren,be.comp.programming
References: <%XJId.2415$OZ2.252982@phobos.telenet-ops.be> <41f37378$0$140$e4fe514c@news.xs4all.nl> <ct2bdl$2p5$1@news1.zwoll1.ov.home.nl> <Xns95E88B1A63743castleamber@130.133.1.4> <41f55352$0$26219$18b6e80@news.wanadoo.nl> <Xns95E89B5FAF7C6castleamber@130.133.1.4> <41f587d8$0$11854$e4fe514c@news.xs4all.nl> <Xns95E8CE2C13FCcastleamber@130.133.1.4> <41f60627$0$11906$e4fe514c@news.xs4all.nl> <ct5e5s.104.1@news.isolution.nl> <Xns95E982F869770castleamber@130.133.1.4> <ct6veq.4f8.1@news.isolution.nl> <Xns95EA98A5B4Dcastleamber@130.133.1.4>
Subject: Re: Lijnen tellen van een project
Date: Wed, 26 Jan 2005 12:08:29 +0100
Organization: Chaos rules.
X-Newsreader: WMDIYB
X-Archive-Me: please
Approved: yesterday
X-Face: &CQ$FIr!=+=w,8`0Q^Ug"1>F[(/op8->E;NQet`5fe$;=e*!Z5&REvp<~Tj|"Y[|8OcJ{w#z&mB7B:I)XO*%_|\]|YW$C>>$Q[9-#K~c$tQ^Mf0,wMo?h\C)TE>f
Lines: 79
NNTP-Posting-Host: 194.109.164.102
X-Trace: 1106737803 news.xs4all.nl 15990 [::ffff:194.109.164.102]:34613
X-Complaints-To: abuse@xs4all.nl