Article View: nl.comp.programmeren
Article #324Re: Lijnen tellen van een project
From: John Bokma
Date: Tue, 25 Jan 2005 21:07
Date: Tue, 25 Jan 2005 21:07
113 lines
3915 bytes
3915 bytes
Edwin Martin wrote:
> Dr.Ruud wrote:
>
>> Zo zijn er ook coders die dit soort 'academische truken'
>> niet graag zien:
>>
>> switch(sex) {
>> case 'm':
>> default:
>> sex = 'M';
>> case 'M':
>> do_male();
>> break;
>> case 'f':
>> sex = 'F';
>> case 'F':
>> do_female();
>> }
>
> En terecht. Die is zeer foutgevoelige code. Iemand die een
gebruikelijke
> switch-case verwacht kan iets veranderen waardoor het fout gaat.
Die snapt dan fall through niet. Ik gebruik voor de duidelijkheid iets
als:
switch(sex) {
case 'm':
default:
sex = 'M';
/* fall through */
case 'M':
do_male();
break;
case 'f':
sex = 'F';
/* fall through * /
case 'F':
do_female();
}
Uiteraard zou ik bovenstaande zo niet programmeren (maar iets als):
if ( sex == 'F' || sex == 'f' ) {
sex = 'F';
do_female();
} else {
sex = 'M';
do_male();
}
> Nu kun je wel zeggen dat die persoon beter moet uitkijken,
Zeker, want die zal vlug fouten maken. Uiteraard is zo'n blokje code
gedocumenteerd.
> maar goede
> code schrijven is makkelijker dan bij elke wijziging eerst de hele
code
> doornemen.
Goede keuze van namen e.d. helpt. Af en toe een hint als documentatie
wat meer.
> Kwaliteitscode is code die gemakkelijk onderhouden en uitgebreid kan
> worden. Alleen als de code heel snel of heel klein moet zijn, zou je
> daarvan kunnen afwijken.
Hangt helemaal van het probleem af wat opgelost moet worden. Soms moet
je lelijk programmeren om code sneller te krijgen.
> Betere code is:
>
> // Maak sex-variabele uppercase
> // nog makkelijker is toupper() gebruiken
> switch (sex) {
> case 'f':
> sex = 'F';
> break;
> case 'm': // Hoeft eigenlijk niet
> default:
> sex = 'M';
> break; // Hoeft eigenlijk niet
> }
>
> // Voer sexe-afhankelijke code uit
> // Kan ook met een if()-statement
> switch (sex) {
> case 'F':
> do_female();
> break;
> case 'M':
> default:
> do_male();
> break;
> }
Dit verdient zeker geen prijs, zie boven :-D.
--
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:
<Xns95E999E3BCAACcastleamber@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> <wWxJd.20572$PH1.7083@amsnews05.chello.com>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: 25 Jan 2005 21:07:41 GMT
Organization: Castle Amber - software development
Lines: 113
Message-ID: <Xns95E999E3BCAACcastleamber@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> <wWxJd.20572$PH1.7083@amsnews05.chello.com>
X-Trace: individual.net cHIwux0ucavfrZ9mzErMjA6OrtkdU655iqBzY3RfH2pQ915plp
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