🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: nl.comp.programmeren
Article #250

Re: Lijnen tellen van een project

#250
From: John Bokma
Date: Thu, 27 Jan 2005 00:36
95 lines
4882 bytes
moi wrote:

> John Bokma wrote:
>> moi wrote:
> 
>> 
>> Eens, een truuk om fouten op te vangen die je normaal met de compiler
>> hoort te zien. 
> 
> Eens. eens. Ooit.
> 't is gewoon defensief. Net als overmaat () haakjes.

Ik ga voor leesbare code, dus overmaat aan haakjes gebruik ik niet. Soms
kan je door een expressie iets anders op te schrijven *en* duidelijk
maken hoe het berekend wordt, en haakjes besparen. 

En defensief programmeren: je bedoelt de compiler warnings bijna uit
zetten, en dan de rommel met truukjes opvangen? Liever niet. 

>> 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 :-) ). 
> 
> Het eigenlijke onderwerp is "human readability", IMHO.
> er is een continuum tussen ja/nee, multiple choice, en "open vragen".
> Daartussen zijn allerlei gradaties mogelijk. Daarvoor moet de
> schrijver verstandige keuzes maken. Belangrijk voor de keuze is het
> overbrengen van de bedoeling.
> in C is de keuze makkelijk: 1,2,veel.
> veel is dus altijd lastig, dus switch(){} , dus lastig.

Eh, dus switch? Welnee, hashtables zijn een prima optie. Of soms een
array. 

> Er zijn twee soorten "veel": makkelijk_veel en moeilijk_veel.
> 
> Moeilijk_veel wil meestal zeggen dat de "switch" heel veel losliggende
> cases kent ("sparse"), die dus ook nog in clusters optreden
> (voorbeeld: [a-zA-Z] [0-9] [+-@_] [ \t] , etc. Of nog erger: 
> instruktiesets!)
> Er zijn twee strategieen: een extra laag van abstraktie
> (isalnum() etc), of data_als_data_behandelen.

Als: array vullen met pointers naar functies?
 
> Voor dat laatste geval heeft perl (terecht) associatieve arrays,

Of een gewoon array. En daarnaast natuurlijk reguliere expressies.

> die C programmeurs node moeten missen 8-)

Een hash table schrijf je zo zelf, vaak genoeg gedaan in C :-D (De hash
functie is meestal het lastigste). 

> [ik kan geen perl, trouwens, maar ik hoop, dat ik
> -op een onbewoond eiland, met alleen maar de code, en heel veel tijd
> om te lezen, de bedoeling van de programmeur, en ook nog
> de wetten van perl zou kunnen doorgronden ]

De syntax van Perl is niet zo heel veel anders vergeleken met C. Alleen
heeft Perl wat extra dingen om de notatie te vereenvoudigen (reguliere
expressies b.v.). 

>>>while (cp = fgets(fp, buff, sizeof buff)) {}
>> 
>> Dit soort dingen kunnen fout gaan als cp zowel NULL als 0 kan worden,
>> vzviw. 
> 
> Hier moet ik je corrigeren: return type is char*.

En wat als die char * naar adres 0 wijst?

>> Yup, Hungarian zou verboden moeten worden :-D.
> 
> Bij nader inzien bleek het humor.
> [meestal als je iets niet snapt is het kunst. Of humor!]
> Hongaars is ook defensief, BTW...

Nee, het is een vreselijke notatie die niemand hopelijk meer gebruikt in
een nieuw project. 

>>>BTW leuk draadje, waar ging het over, eigenlijk ?
>> 
>> Iets met afvallen?
> 
> Ik moet U hier afvallen ;-)

Lijnen = afvallen :-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: <Xns95EABD554BD21castleamber@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> <Xns95EAA9F3B378Acastleamber@130.133.1.4> <MrmdnaRgN4o_tGXcRVnyiQ@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: 27 Jan 2005 00:36:44 GMT
Organization: Castle Amber - software development
Lines: 95
Message-ID: <Xns95EABD554BD21castleamber@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> <Xns95EAA9F3B378Acastleamber@130.133.1.4> <MrmdnaRgN4o_tGXcRVnyiQ@casema.nl>
X-Trace: individual.net 8i3S02Nw2ZSEdeanlcUAtQ3P+Bw7OZ3b3YUEDenYDeou0HGbok
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