🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: nl.comp.programmeren
Article #324

Re: Lijnen tellen van een project

#324
From: John Bokma
Date: Tue, 25 Jan 2005 21:07
113 lines
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-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> <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