Gathering of Tweakers

Quicksearch
quote:
Nick_S schreef op woensdag 16 juli 2008 @ 15:18:
[...]

Omdat je voor fouten die je niet verwacht ook geen afhandeling kan geven. Dit zal dus ook niet door jouw laag afgehandeld moeten worden, maar door de laag er boven (of hoger) tot het uiteindelijk door de GUI, VM o.i.d. wordt afgevangen, die er wel wat mee kan. (Melding naar gebruiker geven, VM plat gooien) Fouten opslokken of half afvangen heeft niemand wat aan.

Dit soort constructie "verbergt" ook vaak andere, programmeer, fouten, zoals NullPointerExceptions.
Bijvoorbeeld:
Java:
1
2
3
4
5
6
Product product = productDAO.getProduct();
try {
   product.verwerk();
catch (Exception exception) {
   throw new ProductNotFoundException();
}

Dit is in ieder geval netter (en ook efficienter):
Java:
1
2
3
4
5
6
Product product = productDAO.getProduct();
if (product == null) {
    throw new ProductNotFoundException();
else {
    product.verwerk();
}

Zeker als product.verwerk() ook nog een exceptie kan gooien. Bij het eerste voorbeeld slok je deze dus op met een ProductNotFoundException. Bij het tweede voorbeeld zou je deze exceptie wel expliciet te zien krijgen.
Ik ben geen java expert. Maar als je het nou zo oplost
Java:
1
2
3
4
5
6
7
8
9
10
11
Product product = productDAO.getProduct();
try {
   product.verwerk();

catch(NullException Exception) {
  throw new ProductNotFoundException();
}
catch (Exception exception) {
// throw same exception once more
 throw new Exception();
}

Currently Reading | Ik los geen problemen op, ik maak ze alleen...


Acties: [view][quote]


Door: Creepy Moderator PRG/SEA/DTE
Eye Have You

Als je de exceptie 1 op 1 doorgooit hoef je die natuurlijk niet af te vangen. dus die tweede catch is totaal overbodig wat mij betreft. Daarnaast, als je weet dat die methode een null kan teruggeven lijkt mij het eenvoudiger om met een if te checken of dat ook zo is of niet. Dan gebruik ik toch echt liever de code van Nick_S.

Los daarvan: een exceptie vangen en gooien is duurder dan een simpele if.

Jij schijt ook altijd op die showmodel toiletpotten bij de Gamma? "Ja, ik zag een toiletpot en..."
"Intelligent input darlin'. Why don't you just have another beer then? - Kate Nash.

quote:
denheer schreef op woensdag 16 juli 2008 @ 15:45:
In een financieel pakket kwam ik o.a. dit juweeltje tegen:
Visual Basic:
1
2
3
4
5
antw = vbNo
While antw = vbNo
    antw = MsgBox("Geen invoer records, dus geen exportbestand. "_
    vbYesNo + vbDefaultButton2 + vbCriticalApp.EXEName)
Wend

Waarom iemand hier een vbYesNo neerzet en bij vbNo de msg opnieuw laat zien is mij een raadsel. 8)7
:D Met de gedachte dat de gebruiker dit wel moet accepteren.

Website
lordpalf of the flapdrols


Acties: [view][quote]


Door: Janoz Moderator PRG/SEA/DTE
!litemod
Berichten: 14.728
Reg. datum: 19 oktober 2000

LOL :)

Ik dacht, ik zoek ff het stukje code in een util jar van me op waarin ik deze constructie gebruik. (onderdeel van een uitbreiding op de standaard Property class in java waarbij enkele conversies ingebouwd zijn. Dat maakt het erg makkelijk om property bestanden in te lezen met meerdere types)

En daar zie ik het volgende :
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    /**
     * Searches for the property with the specified key in this 
     * property list. The method returns the default value argument
     * if the property is not found. It will also return the default
     * if a property is found, but can not be converted to an Integer.
     *  
     * @param key
     * @param defaultValue
     * @return The integer value of the property, or the default if 
     * the property doesn't exist
     * @see java.util.Properties#getProperty(String)
     */

    public Integer getProperty(String keyInteger defaultValue) {
        try {
            defaultValue = new Integer(this.getProperty(key));
        } catch (NumberFormatException nfe) {
            LOG.info("Unable to retrieve integer, returning default.");
        }
        return defaultValue;
    }

Blijkt dus dat ik zelf ook gewoon een log message wegschrijf :D..

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

(inspiratie == 0) -> true

quote:
LuCarD schreef op woensdag 16 juli 2008 @ 16:11:
[...]


Ik ben geen java expert. Maar als je het nou zo oplost
Java:
1
2
3
4
5
6
7
8
9
10
11
Product product = productDAO.getProduct();
try {
   product.verwerk();

catch(NullException Exception) {
  throw new ProductNotFoundException();
}
catch (Exception exception) {
// throw same exception once more
 throw new Exception();
}

Dan wordt je dus mooi op het verkeerde been gezet als de methode verwerk() een npe gooit.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"

++?????++ Out of Cheese Error

quote:
LuCarD schreef op woensdag 16 juli 2008 @ 16:11:
[...]


Ik ben geen java expert. Maar als je het nou zo oplost
Java:
1
2
3
4
5
6
7
8
9
10
11
Product product = productDAO.getProduct();
try {
   product.verwerk();

catch(NullException Exception) {
  throw new ProductNotFoundException();
}
catch (Exception exception) {
// throw same exception once more
 throw new Exception();
}

Als je het zo zou oplossen (afvangen van NPE's) dan zou ik nog harder uit m'n stekker gaan, dan het afvangen van Exception. Als je daarbij ook nog een new Exception() aanmaakt, dan is het een vermelding waard op The Daily WTF ;). Dit is alles behalve netjes programmeren.

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'

quote:
LuCarD schreef op woensdag 16 juli 2008 @ 16:11:
[...]
Ik ben geen java expert. Maar als je het nou zo oplost
Java:
1
2
3
4
5
6
7
8
9
10
11
Product product = productDAO.getProduct();
try {
   product.verwerk();

catch(NullException Exception) {
  throw new ProductNotFoundException();
}
catch (Exception exception) {
// throw same exception once more
 throw new Exception();
}

Probleem is dat elke exceptie een afgeleide is van Exception is. Op deze manier zet je een FileNotFoundException (welke aanvullende informatie zoals het opgevraagde bestand) om naar een algemene exceptie waarmee je die extra info kwijt raakt. Je hebt dan alleen nog maar de stacktrace en de beschrijving van de foutmelding.

Overigens kun je ook gewoon in de catch slechts 'throw' aanroepen waarmee de originele exception weer wordt opgegooid. Veel libraries vangen ook de algemene exceptions af, maar throwen vervolgens hun eigen exception waarbij de orginele exception als InnerException wordt doorgezet.

Het blijft echter verstandig om alleen de fouten af te vangen welke je logischer kunt c.q. mag verwachten en waarbij een goede afhandeling mogelijk is. Een algemene catch kun je eventueel plaatsen in de Main functie als catchall voor onverwachte excepties zoals te weinig geheugen.

If it ain't broken yet, it might be foolproof for a while.

++?????++ Out of Cheese Error

quote:
Niemand_Anders schreef op woensdag 16 juli 2008 @ 17:17:
[...]
Je hebt dan alleen nog maar de stacktrace en de beschrijving van de foutmelding.
Aanvulling: je hebt dan alleen nog maar de stacktrace vanaf het moment waar je deze gooide en niet meer de informatie die in de originele stacktrace stond.
Code zoals:
Java:
1
2
3
catch (DeeperLayerException exception) {
   throw new CurrentLayerException("My beautifull message");
}

Of zelfs:
Java:
1
2
3
catch (DeeperLayerException exception) {
   throw new CurrentLayerException("My beautifull message, cause: " + exception.getMessage());
}

vind ik ook niet correct. I.m.o. zal altijd de oorzaak van de exceptie mee genomen moeten worden, dus:
Java:
1
2
3
catch (DeeperLayerException exception) {
   throw new CurrentLayerException("My beautifull message, cause: " + exception.getMessage(), exception);
}

(Waarbij de String toevoeging van de originele exceptie optioneel is)
quote:
onverwachte excepties zoals te weinig geheugen.
Dat zijn de zogeheten RuntimeExceptions, waar je over het algemeen weinig mee kan. (Hoe zou je bijvoorbeeld een OutOfMemoryException willen afhandelen?

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'

Berichten: 186
Reg. datum: 08 februari 2002

quote:
Janoz schreef op woensdag 16 juli 2008 @ 16:47:
Java:
1
2
3
4
5
        try {
            defaultValue = new Integer(this.getProperty(key));
        } catch (NumberFormatException nfe) {
            LOG.info("Unable to retrieve integer, returning default.");
        }

Blijkt dus dat ik zelf ook gewoon een log message wegschrijf :D..
Ik heb toch zo'n hekel aan dit type logmeldingen.. Probeer je een kritieke fout op te lossen en dan zie je zo'n logmelding. Dan heb ik echt een :| "aargh.. om welke key gaat het dan !? wie heeft dat er *niet* bij gezet."-momentje :p.

No amount of key presses will shut off the Random Bug Generator

Moutarde apres le diner

quote:
Nick_S schreef op woensdag 16 juli 2008 @ 17:24:
Dat zijn de zogeheten RuntimeExceptions, waar je over het algemeen weinig mee kan. (Hoe zou je bijvoorbeeld een OutOfMemoryException willen afhandelen?
Daarom hebben ze daar gelukkig een Error van gemaakt en is het dus een OutOfMemoryError. Error is een afgeleide van Throwable en niet van RuntimeException. Je kunt dus vrij veilig Exception/RuntimeException vangen als je daar aanleiding toe hebt. :)

Religion has no place in public schools the way facts have no place in organized religion

++?????++ Out of Cheese Error

quote:
mark platvoet schreef op donderdag 17 juli 2008 @ 07:56:
[...]

Daarom hebben ze daar gelukkig een Error van gemaakt en is het dus een OutOfMemoryError. Error is een afgeleide van Throwable en niet van RuntimeException. Je kunt dus vrij veilig Exception/RuntimeException vangen als je daar aanleiding toe hebt. :)
Got me there. :( Note to self: niet altijd praten over OOME, maar het beessie bij de naam noemen, dan weet je de naam tenminste. |:(

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'

Ik heb van een kennis wat sourcecode gekregen van zijn site (staat ter download omdat hij er niks meer mee deed).
Ok, zijn PHP-ervaring is mimimaal, maar zag er ernstig uit
meerdere geneste if-statements die erin staan terwijl je die in 1 statement kan voegen.
Laat ik maar niks zeggen over de shorttags <?, en de onleesbaarheid ;).

Ikzelf ben nu bezig met een eigen CMS die opgebouwd is in TemplateLite (Smarty fork, en nog sneller), en modulair zal gaan werken. Die code is echt :9...

JongerenPlace | TreinenWeb | ClayWeb
Gezocht: Treinen nieuws redacteur (m/v) / Trein artikel Redacteur (m/v) - Vrijwillig... DM me..

Berichten: 421
Reg. datum: 04 april 2007

Ik ben ooit een klasse begonnen om wat formulieren makkelijk in een te steken. Naarmate ik meer dingen nodig had, heb ik deze er ook op geımplementeerd. Hij is nog niet af, maar hij voldoet aan mijn behoeften. (aangezien ik hem zelf steeds uitbreid)
Ik zou graag de 300 regels code met jullie delen, vooral om hem te verbeteren, maar ook dat jullie er ook gebruik van kunnen maken.
Mijn vraag: Zijn er geïntreseerden? Waar kan ik dit het beste posten?

*De klasse voldoet aan mijn behoefte, ik vraag niemand code werk.
Ik heb nooit PHP oid gestudeerd, maar op deze manier zou ik graag wel wat extra ervarng willen opdoen.

EDIT:

Een typisch voorbeeld om de klasse te gebruiken:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php

$form = new FORM('setup0');

$form->set_title('Setup database connection');
$form->set_method('post');
$form->set_action('index.php');

$form->set_input('server');
$form->server->set_label('Database url');
$form->server->set_type('text');
$form->server->set_value($server);

$form->set_input('username');
$form->username->set_label('Username');
$form->username->set_type('text');
$form->username->set_value($username);

$form->set_input('password');
$form->password->set_label('Password');
$form->password->set_type('text');
$form->password->set_value($password);

$form->set_input('submit');
$form->submit->set_type('submit');
$form->submit->set_value('Next');
?>

*set_input is was een slechte naam voor wat de methode eigenlijk doet:
Het maakt een nieuw object van een andere classe met deze naam. In deze clase zijn methoden om je input velden (ea) op te stellen
Zo zijn er dus tal van slordigheden in de classe, die ik al over het hoofd zie ondertussen.

g4wx3 wijzigde dit bericht 21-07-2008 23:43 (47%)

Q: Wat is eigenlijk het devies met commentaar?

Op dit moment ben ik met nog een aantal mensen bezig aan een project en daar komt op zich alleen het hoogstnoodzakelijke commentaar in voor. Iedereen die erbij betrokken is kan de huidige code zo lezen en schrijven, hier is heel weinig geen commentaar voor nodig.

Nu hebben we een nieuwe aanwinst bij ons project en die kan de code niet lezen en schrijven. Hij vraagt dan ook om meer commentaar, alleen voor de huidige proggers is het gewoon duidelijk...

Net zoals je aan een wiskundige geen stelling van pythagoras hoeft uit te leggen, aan een C-progger geen pointers hoeft uit te leggen, volstaat onze huidige commentaar vorm goed voor de huidige proggers.
Nu is de vraag, zijn er regels wat er wel / niet gecommentariseerd moet worden of is dit meer een groepsgevoel?

Want ik gok dat als de nieuwe progger in dit topic code gaat posten ( nadat hij nederlands geleerd heeft :) ) dat velen het met hem eens zouden zijn dat het slechte code betreft, maar de huidige proggers snappen het 100%, wij zijn ook best bereid om wat meer commentaar te schrijven, maar we gaan niet elke regel becommentariseren...
offtopic:
Het betreft hier geen bedrijf, maar een OpenSource programma. Wij zijn dus blij met ongeveer elke extra progger, keiharde kenniseisen zijn dus ook niet echt te stellen
 
quote:
g4wx3 schreef op maandag 21 juli 2008 @ 23:38:
Een typisch voorbeeld om de klasse te gebruiken:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php

$form = new FORM('setup0');

$form->set_title('Setup database connection');
$form->set_method('post');
$form->set_action('index.php');

$form->set_input('server');
$form->server->set_label('Database url');
$form->server->set_type('text');
$form->server->set_value($server);

$form->set_input('username');
$form->username->set_label('Username');
$form->username->set_type('text');
$form->username->set_value($username);

$form->set_input('password');
$form->password->set_label('Password');
$form->password->set_type('text');
$form->password->set_value($password);

$form->set_input('submit');
$form->submit->set_type('submit');
$form->submit->set_value('Next');
?>

Vraagje, niet lullig bedoeld maar wat voor nut heeft deze klasse? In een template is dit bij mij 6 regels code, bij jou 20?
Doet deze klasse aan input validatie ofzo?
Kan ik er iets mee in een print-layout ofzo?
Schakelt hij zichzelf uit in een rss-feed?

Sowieso snap ik over het algemeen al niet het aanmaken van classes voor het genereren van html output...
Als ik 20 regels php nodig heb voor het genereren van 6 regels html output dan moet ik wel een verdomd goede reden hebben om de php-manier te pakken ipv de html manier.
MVC scheiding is leuk, maar imho bereik ik dat in dit voorbeeld ook door een html template te bakken met daarin 3 variabelen. Dan kan ik daarnaast een print template neerzetten waar dit helemaal niet in voorkomt, een rss template waar dit ook niet in voorkomt etc etc.
 
Berichten: 421
Reg. datum: 04 april 2007

dat voorbeeldje deed niet meer dan het printen van deze code;
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
<form method="post" action="index.php">
<fieldset>
<legend>Setup database connection</legend>
<input type="hidden" name="form" value="setup0">
<ul class="formmargin">
<li><label for="server"><span>Database url</span><input id="server" name="server" value="localhost" type="text" class="input"></label></li>
<li><label for="username"><span>Username</span><input id="username" name="username" value="root" type="text" class="input"></label></li>
<li><label for="password"><span>Password</span><input id="password" name="password" value="root" type="text" class="input"></label></li>
<li><input value="Next" type="submit" class="input submit"></li>
</ul>
</fieldset>
</form>

Zeker ik nu de code voor me zie, ben ik blij dat ik alles met een klasse parse (al m'n html trouwens)

Werkt echt veel overzichtelijker vind ik. En als ik iets wil aanpassen, kan ik dat in alle forms tegelijk. Wil ik juist iets afwijkend, dan pas ik de klasse een beetje aan.
De klasse regelt ook alles, zodanig dat de html altijd goed is zonder dat je je er druk om moet maken. Ook ander velden zijn ondersteund uiteraard. Een file-veld zorgt ervor dat de form multipart is ed. Niet zomaar 300 regels code.( al zal het altijd wel efficienter kunnen, leesbaarheid vs effecientie...)
Doch begrijp ik dat iemand er niet de moeite in gaat steken als je maar 1 form hebt. Daarom dat ik de code wil delen.

Echter ben ik een site aan het ontwikkelen met veel forms (in modal windows, als wizard)
Helaas geen form-parser. Weet niet hoe ik dat zou moeten aanpakken. te veel variabelen

g4wx3 wijzigde dit bericht 22-07-2008 00:17 (9%)

quote:
g4wx3 schreef op dinsdag 22 juli 2008 @ 00:09:
dat voorbeeldje deed niet meer dan het printen van deze code;
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
<form method="post" action="index.php">
<fieldset>
<legend>Setup database connection</legend>
<input type="hidden" name="form" value="setup0">
<ul class="formmargin">
<li><label for="server"><span>Database url</span><input id="server" name="server" value="localhost" type="text" class="input"></label></li>
<li><label for="username"><span>Username</span><input id="username" name="username" value="root" type="text" class="input"></label></li>
<li><label for="password"><span>Password</span><input id="password" name="password" value="root" type="text" class="input"></label></li>
<li><input value="Next" type="submit" class="input submit"></li>
</ul>
</fieldset>
</form>

Zeker ik nu de code voor me zie, ben ik blij dat ik alles met een klasse parse (al m'n html trouwens)
Tsja, laat ik het zo zeggen daar verschil ik van mening over. IMHO ben je dan meer bezig met een paar extra parsing lagen erbovenop te bouwen.

De geproduceerde html wil ik zo af toe nog wel eens aanpassen ( mobile phone sites bijv. )
Zo af en toe wil ik de hele form niet publiceren ( pdf / print-variant bijv. )
Zo af en toe wil ik extra javascript aan een input veld hangen ( rich client suggest box bijv. )

Omdat al de bovengenoemde suggesties niet alleen maar voor forms opgaan, maar meer voor de totale pagina voel ik meer voor een template voor de betreffende client die alleen de view laag aanpast waardoor de business logica wel gecached kan worden ipv een classe die een beetje zelfstandig output genereerd...

Sowieso dient al mijn business logica ongeacht het platform uitgevoerd te worden. Oftewel er moet in dit geval altijd om een login gevraagd worden, hoe het login scherm eruitziet dat is imho geen php-werk meer, maar gewoon template werk.

Op zich is het idee achter je classe niet verkeerd, alleen verwacht ik ipv $form = new form de tekst $template->form = new form. De classe bepaalt geen output, de template bepaalt de output, de classe kan alleen iets aangeven aan de template...
 
Berichten: 421
Reg. datum: 04 april 2007

ik zie wat je bedoeld.
Ipv html te genereren in de classe van html-objecten, het doen in de template.

De html objecten, zoals form, bouw ik eerst op, zoals voorbeeld, en geef ze daarna door aan de template:
$template->new_object($form),
De hele pagina krijg je met volgend commando
$template->get_html()

Dez methode doet echter alleen maar het oprvragen van html, van de opgegeven objecten.
$form->get_html().
Ipv data op te vragen, en zelf html te maken met die data.


Ik zal erover nadenken als het project al uitgeefbaar is.

*Javascript is mogelijk op iedere deel van het form, alle elementen zijn bereikbaar via javascript.
"unobstructive javascript"
#$%@#$ Collega van mij heeft een trigger gemaakt die automatisch verkoopregels opsplitst. Nou werkt het toewijzen van artikelen niet meer, automatisch bestellen werkt niet meer, voorraad wordt niet goed bijgehouden. Of we dat even willen aanpassen... :( :/

Website
lordpalf of the flapdrols

Berichten: 3766
Reg. datum: 28 april 2000

quote:
g4wx3 schreef op maandag 21 juli 2008 @ 23:38:
Ik ben ooit een klasse begonnen om wat formulieren makkelijk in een te steken. Naarmate ik meer dingen nodig had, heb ik deze er ook op geımplementeerd. Hij is nog niet af, maar hij voldoet aan mijn behoeften. (aangezien ik hem zelf steeds uitbreid)
Ik zou graag de 300 regels code met jullie delen, vooral om hem te verbeteren, maar ook dat jullie er ook gebruik van kunnen maken.
Mijn vraag: Zijn er geïntreseerden? Waar kan ik dit het beste posten?

*De klasse voldoet aan mijn behoefte, ik vraag niemand code werk.
Ik heb nooit PHP oid gestudeerd, maar op deze manier zou ik graag wel wat extra ervarng willen opdoen.

EDIT:

Een typisch voorbeeld om de klasse te gebruiken:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php

$form = new FORM('setup0');

$form->set_title('Setup database connection');
$form->set_method('post');
$form->set_action('index.php');

$form->set_input('server');
$form->server->set_label('Database url');
$form->server->set_type('text');
$form->server->set_value($server);

$form->set_input('username');
$form->username->set_label('Username');
$form->username->set_type('text');
$form->username->set_value($username);

$form->set_input('password');
$form->password->set_label('Password');
$form->password->set_type('text');
$form->password->set_value($password);

$form->set_input('submit');
$form->submit->set_type('submit');
$form->submit->set_value('Next');
?>

*set_input is was een slechte naam voor wat de methode eigenlijk doet:
Het maakt een nieuw object van een andere classe met deze naam. In deze clase zijn methoden om je input velden (ea) op te stellen
Zo zijn er dus tal van slordigheden in de classe, die ik al over het hoofd zie ondertussen.
Waarom zet je dit in het Slechtste programmeervoorbeelden topic? Vind je het zelf een slecht voorbeeld?

rwb wijzigde dit bericht 22-07-2008 09:03 (89%)

To be, or not to be, those are the parameters

quote:
g4wx3 schreef op dinsdag 22 juli 2008 @ 00:09:
Zeker ik nu de code voor me zie, ben ik blij dat ik alles met een klasse parse (al m'n html trouwens)
Pardon? Waarom wil je in godsnaam alle HTML parsen door PHP? Je hebt sowieso al de tegenargumenten van Gomez12, maar stel je eens een kleine wijziging voor als je ineens op asp.net aan de slag moet en al de html wordt in de codebehind aangemaakt.

offtopic:
buiten het feit dat ik het een rare opvatting vind, waarom staat dit in dit topic?

Website TweakU2, met Bio! Heart..pumps blood.Has nothing to do with emotion! I'm Bored


Acties: [view][quote]


Door: Janoz Moderator PRG/SEA/DTE
!litemod
Berichten: 14.728
Reg. datum: 19 oktober 2000

quote:
Gomez12 schreef op maandag 21 juli 2008 @ 23:41:
Q: Wat is eigenlijk het devies met commentaar?

Op dit moment ben ik met nog een aantal mensen bezig aan een project en daar komt op zich alleen het hoogstnoodzakelijke commentaar in voor. Iedereen die erbij betrokken is kan de huidige code zo lezen en schrijven, hier is heel weinig geen commentaar voor nodig.

Nu hebben we een nieuwe aanwinst bij ons project en die kan de code niet lezen en schrijven. Hij vraagt dan ook om meer commentaar, alleen voor de huidige proggers is het gewoon duidelijk...

Net zoals je aan een wiskundige geen stelling van pythagoras hoeft uit te leggen, aan een C-progger geen pointers hoeft uit te leggen, volstaat onze huidige commentaar vorm goed voor de huidige proggers.
Nu is de vraag, zijn er regels wat er wel / niet gecommentariseerd moet worden of is dit meer een groepsgevoel?

Want ik gok dat als de nieuwe progger in dit topic code gaat posten ( nadat hij nederlands geleerd heeft :) ) dat velen het met hem eens zouden zijn dat het slechte code betreft, maar de huidige proggers snappen het 100%, wij zijn ook best bereid om wat meer commentaar te schrijven, maar we gaan niet elke regel becommentariseren...
offtopic:
Het betreft hier geen bedrijf, maar een OpenSource programma. Wij zijn dus blij met ongeveer elke extra progger, keiharde kenniseisen zijn dus ook niet echt te stellen
Ik denk dat je met "onze huidige commentaar vorm goed voor de huidige proggers" behoorlijk de crux te pakken hebt. Blijkbaar volstaat het alleen voor programmeurs die al in de code zitten. Zeker met een open source project lijkt het me dat je dan te weinig commentaar hebt.

Met zekerheid kan ik het natuurlijk niet zeggen zonder dat ik een stuk code heb gezien en/of het niveau van de nieuwe progger ken. In mijn optiek moet iig van een methode of functie de pre en post condities opgegeven worden zodat je, enkel aan het stuk commentaar kunt zien wat de methode doet (let op, niet 'hoe', maar 'wat'!), wat alle parameters zijn, wat er aan de parameters veranderd is nadat de methode uitgevoerd is, wat er terug gegeven wordt en hoe het op randcondities reageert (mogen parameters null zijn bv).

Daarnaast moet je bij wat niet voor de hand liggende constructies of een optimalisatie aangeven waarom je dat gedaan hebt. Stel je hebt een lus die je uit efficientie overwegingen van achter naar voor laat lopen, beschrijf dan waarom je dat gedaan hebt zodat een volgende programmeur er niet een beter leesbare van voor naar achter lus van maakt. Hetzelfde geld ook met een '+1' of '-1' die je vaak bij indexen gebruikt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

quote:
HawVer schreef op dinsdag 22 juli 2008 @ 08:59:
#$%@#$ Collega van mij heeft een trigger gemaakt die automatisch verkoopregels opsplitst. Nou werkt het toewijzen van artikelen niet meer, automatisch bestellen werkt niet meer, voorraad wordt niet goed bijgehouden. Of we dat even willen aanpassen... :( :/

LinuX-TUX wijzigde dit bericht 22-07-2008 09:26 (8%)

Mijn WebLog