🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: nl.comp.programmeren
Article #245

Re: Lijnen tellen van een project

#245
From: John Bokma
Date: Wed, 26 Jan 2005 22:42
77 lines
4158 bytes
moi wrote:

> Dr.Ruud wrote:

>>>>     if (('F' == sex) || (('f' == sex) && (sex = 'F'))) do_female;
>>>>     else if (('M' == sex) || (sex = 'M')) do_male;
> 
> Mijn bezwaar hiertegen is, dat het veel-te-veel tokens zijn.
> Het *dwingt* de lezer om op de () te letten, zoals ook sommige
> construkties de lezer in de *illusie* brengen dat
> whitespace/indentering belangrijk is. Die belachelijke ('f' == gender)
> is *defensief*. 

Eens, een truuk om fouten op te vangen die je normaal met de compiler
hoort te zien. 

> Het voordeel van de switch is, dat ie makkelijk is, omdat iedereen
> hem onmiddelijk herkent. Bovendien *weet* iedereen dat er meer-dan 1 
> cases kunnen zijn (itt if/else, waarbij er altijd precies twee opties 
> zijn) Vandaar:
> switch(gender) {
> case 'm': gender = 'M';
> case 'M': do_gozert();
>    break;
> case 'f': gender = 'F';
> case 'F': do_wijffie();
>    break;
> default: do_teiltje("illegal gender: %x\n",  gender);
>      }
> 
> Iedere "getrainde" lezer zal hier een switch herkennen, zich
> realiseren dat fall-tru mogelijk is, en (wellicht bij tweede lezing)
> constateren dat dat ook daadwerkelijk (hopelijk) goed gebruikt wordt.
> IMHO kost de switch 2* zo weinig tijd *om te lezen* als de geneste 
> if-construktie. De rest van de tijd kan besteed worden aan begrijpen,
> wat 4* zo weinig tijd kost.

Bij langere zaken, in Perl, (maar ook in C hoor) gebruik ik een hash
table ipv. een lange switch. (Switch, Perl heeft geen switch, maar
gelukkig kan je op veel manieren er een maken, of je gebruikt de Switch
module :-) ). 

>> 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.
> 
> 
> Nee hoor. Ook hier kan je weer eea *weglaten*, waardoor de
> leesbaarheid verhoogd wordt: die "NULL !=" kan worden vervangen door
> "". Vergelijk:
> 
> while (NULL != (cp = fgets(fp, buff, sizeof buff))) {}
> 
> met:
> 
> while (cp = fgets(fp, buff, sizeof buff)) {}

Dit soort dingen kunnen fout gaan als cp zowel NULL als 0 kan worden,
vzviw. 

>>   unsigned int uiLen;
>>   int i;
> Variabelenamen om te HuiLen ....

Yup, Hungarian zou verboden moeten worden :-D.

> BTW leuk draadje, waar ging het over, eigenlijk ?

Iets met afvallen?

-- 
John Bokma
                 Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Ervaren Perl / Java programmeur beschikbaar:  http://castleamber.com/
Tevreden opdrachtgevers:     http://castleamber.com/testimonials.html
Technical Details
Message-ID: <Xns95EAA9F3B378Acastleamber@130.133.1.4>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!fu-berlin.de!uni-berlin.de!individual.net!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> <ct818b.198.1@news.isolution.nl> <hcWdnSBGdt9kZmrcRVnyvA@casema.nl>

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!news1.google.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From: John Bokma <postmaster@castleamber.com>
Newsgroups: nl.comp.programmeren,be.comp.programming
Subject: Re: Lijnen tellen van een project
Date: 26 Jan 2005 22:42:25 GMT
Organization: Castle Amber - software development
Lines: 77
Message-ID: <Xns95EAA9F3B378Acastleamber@130.133.1.4>
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> <ct818b.198.1@news.isolution.nl> <hcWdnSBGdt9kZmrcRVnyvA@casema.nl>
X-Trace: individual.net pv4bYL+sYmZ/kByGDJHUxgwIoCHTbGSAcTGdEZl6OxFHJKWzBq
User-Agent: Xnews/5.04.25
X-Face: $7h&5K*ZL9*ZQ\6Hco2"V?1dD*C<ab^>zlws[S%i0b,@gKk|[,)Y-<hk143{.Ov"x{({zo( l,N\m`-_^nJfVQdEyt+-uAP^7WG]5mHj9&::7X-qK;Yv;xmRvNWQR"_igw+cr5WMj;6:zlj<R80Ei@ $gGWq&*{FL*kC*a