Article View: nl.comp.programmeren
Article #245Re: Lijnen tellen van een project
From: John Bokma
Date: Wed, 26 Jan 2005 22:42
Date: Wed, 26 Jan 2005 22:42
77 lines
4158 bytes
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-mailReferences:
<%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