Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

regelnummer afhankelijk configuratie bestand, anti-pattern?

Pagina: 1
Acties:

  • BdR
  • Registratie: Juni 2001
  • Laatst online: 03-09 16:28

BdR

TV is gooder then books

Topicstarter
Veel software ontwerp fouten zijn terug te herleiden tot een anti-pattern (zie wiki). Ik vroeg me af, is het onderstaande ook een anti-pattern oid?

Hier op het werk hebben we een meetapparaat met bijbehorend software. De bijbehorend applicatie heeft een configuratie bestand en enkel en alleen het regelnummer bepaalt om welk configuratie item het gaat. Dwz regel 1 is het laatst gelezen bestand, regel 2 is de output folder, regel 3 bevat hoelang de buzzer op het apparaat afgaat in ms etc. Ziet er ong. zo uit:

confdata.txt:
code:
1
2
3
4
5
6
7
8
9
READER00043
C:\Program Files\Reader\Data\
100
1
1
1
C:\Program Files\Reader\logo.bmp
1
etc.

Niet erg handig, want bij wijzigingen moet je maar net weten welke regel wat betekent en een foutje is zo gemaakt. De regelnummers staan overigens wel in de technische documentie, dat wel.
Maar goed, logischer zou zijn om er een inifile of XML file van maken, dus bijv zoiets:
confdata.ini
code:
1
2
3
4
5
6
7
8
9
lastfile=READER00043
outputdir=C:\Program Files\Reader\Data\
buzzerms=100
repeatmeasure=1
toolbarvisible=1
outputserialno=1
reportlogo=C:\Program Files\Reader\logo.bmp
patientreport=1
etc.

Anti-pattern, of komt dit in de praktijk wel vaker voor?

mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider


  • Caelorum
  • Registratie: April 2005
  • Laatst online: 10:35
Uch, waarom het de eindgebruiker moeilijk maken als het ook makkelijk kan? Het is niet alsof het veel werk is om zo'n inifile parser te maken... Zou het zelf wellicht niet als anti-pattern beschouwen (want zo vaak komt het niet voor vermoed ik), maar zou wel sterk gaan afvragen wat de ontwikkelaars dachten toen ze dat stuk hebben geschreven. Ga je je toch afvragen of de kwaliteit van de code wel ok is :)

  • efan
  • Registratie: Januari 2001
  • Niet online
Gezien de anti-pattern-wiki zou ik zeggen "Gold plating" :D

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:33

.oisyn

Moderator Devschuur®

Demotivational Speaker

BdR schreef op vrijdag 20 juni 2014 @ 17:11:
Anti-pattern, of komt dit in de praktijk wel vaker voor?
Dat is een tegenspraak :). Lang niet iedere design flaw is meteen een anti-pattern. Een pattern is een standaard oplossing voor een bepaald probleem, een anti-pattern is zo'n standaardoplossing die eigenlijk meer fout dan goed doet. Als het niet vaker voorkomt kun je niet echt spreken van een pattern en kan het dus ook geen anti-pattern zijn ;)

De discussie of je een design-flaw als anti-pattern kunt klassificeren lijkt me een beetje nutteloos, maar dat is denk ik ook niet echt het onderliggende idee van je topic. Wat betreft dit specifieke probleem lijkt me het inderdaad wat onhandig want een fout sluipt er zo in. Maar het zal in de praktijk geheid wat vaker voorkomen, het parsen van zo'n configfile is natuurlijk extreem simpel. Tegelijkertijd is er vandaag de dag geen enkel excuus meer om niet gewoon voor een meestal out-of-the-box beschikbare ini, xml of json parser gebruik te maken.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 10:18

alienfruit

the alien you never expected

Als het werkt... waarom veranderen?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

alienfruit schreef op vrijdag 20 juni 2014 @ 18:02:
Als het werkt... waarom veranderen?
Mogelijk omdat "het" weliswaar werkt maar er bijvoorbeeld continu menselijke fouten uit voortkomen. ;)

Overigens is dit natuurlijk niet veel meer of minder dan een comma separated file zonder headers. Dat er toevallig een enter tussen de velden staat in plaats van een (punt)komma doet daar natuurlijk niet aan af. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Daos
  • Registratie: Oktober 2004
  • Niet online
Misschien is het vanuit het programma gedacht en niet vanuit de gebruiker. Of het is gewoon gemakszucht.

Een tekstbestand inlezen en op volgorde met de regels iets doen is een fluitje van een cent. ini lezen is een stuk lastiger (zowel zelf maken als zoeken en aanroepen van een library).

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Daos schreef op maandag 23 juni 2014 @ 19:48:
Misschien is het vanuit het programma gedacht en niet vanuit de gebruiker. Of het is gewoon gemakszucht.

Een tekstbestand inlezen en op volgorde met de regels iets doen is een fluitje van een cent. ini lezen is een stuk lastiger (zowel zelf maken als zoeken en aanroepen van een library).
Ook bij een ini-file zou je als extra beperking kunnen opleggen dat de volgorde vaststaat en dus op dezelfde manier alles hardcoden met als bijkomend voordeel dat alles wel human-readable is. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Emiel L
  • Registratie: Februari 2014
  • Laatst online: 16-11 11:20
NMe schreef op maandag 23 juni 2014 @ 19:56:
[...]

Ook bij een ini-file zou je als extra beperking kunnen opleggen dat de volgorde vaststaat en dus op dezelfde manier alles hardcoden met als bijkomend voordeel dat alles wel human-readable is. ;)
Dat is helemaal verwarrend, juist omdat een ini file suggereert dat de regelvolgorde niet van belang is...

http://emiellensink.nl


  • Standeman
  • Registratie: November 2000
  • Laatst online: 09:41

Standeman

Prutser 1e klasse

alienfruit schreef op vrijdag 20 juni 2014 @ 18:02:
Als het werkt... waarom veranderen?
Omdat de support afdeling het beu wordt ;)

The ships hung in the sky in much the same way that bricks don’t.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Emiel L schreef op dinsdag 24 juni 2014 @ 14:49:
[...]

Dat is helemaal verwarrend, juist omdat een ini file suggereert dat de regelvolgorde niet van belang is...
Dan nog is het beter dan wat ze nu gebruiken zonder beduidend anders te werken. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Vishari Beduk
  • Registratie: Februari 2009
  • Laatst online: 23:11

Vishari Beduk

loves f/1.8 primes

BdR schreef op vrijdag 20 juni 2014 @ 17:11:
confdata.txt:
code:
1
2
3
4
5
6
7
8
9
READER00043
C:\Program Files\Reader\Data\
100
1
1
1
C:\Program Files\Reader\logo.bmp
1
etc.


Anti-pattern, of komt dit in de praktijk wel vaker voor?
Of dit wel of niet een anti-pattern is doet er niet toe. Het is gewoon heel erg fout.
Ten eerste omdat het gewoon niet gebruikers vriendelijk is.
Ten tweede is zijn 'harde' paden als 'C:\Program Files' ongewenst, beter is environment variables te gebruiken.
Ten derde is schrijven naar de program files directory tegenwoordig sowieso niet toegestaan.
En ten vierde is het beter om de uitvoer naar de user environment te schrijven.

edit / on second thought: waarschijnlijk is dit programma al meer dan 10 jaar oud, is de source code verdwenen, de oorsprongkelijke programmeurs vertrokken en de compiler niet meer beschikbaar
dus sowieso helaas, pindakaas

[ Voor 13% gewijzigd door Vishari Beduk op 24-06-2014 16:36 ]

weet het niet meer

Pagina: 1