dirty hack question

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

dirty hack question

wernerk
Hi,
i looked at a method in a package i downloaded that goes essentially
like this:

method:aCollection
aCollection do:[:i| i satisfiesTest ifTrue[^someNumberDependingOnI] ].
^someOtherNumberDependingOnACollection

now theoretically some 'i' should always satisfy test, the
^someOtherNumber was obviously added because there is a bug in
satisfiesTest and this way the bug is hardly noticable any more (its not
important for my question, but someOtherNumber is perfectly logical in
the general setting, if one does not understand the bug itself). i
changed satisfiesTest so that there should be no more bugs in it. of
course i cant be sure, hence i changed the ^someOtherNumber line to:
self error:'should never be reached'.
now i wonder whether that last error line would be considered a dirty
hack by the usual smalltalk programmer, and if yes, what would be the
usual procedure in such a case?
werner

Reply | Threaded
Open this post in threaded view
|

Re: dirty hack question

Dale Henrichs
Werner ...

It's not a bad technique at all. Look at Collection>>detect:ifNone: which is doing exactly what you are doing ... in fact you could use #detect: in your case:

  ^aCollection detect: [:each | each satisfiesTest ]

and you'll get a 'not found' error if none of the elements answers true...

Dale

----- Original Message -----
| From: "Werner Kassens" <[hidden email]>
| To: "A friendly place where any question about pharo is welcome" <[hidden email]>
| Sent: Friday, May 18, 2012 5:05:40 AM
| Subject: [Pharo-users] dirty hack question
|
| Hi,
| i looked at a method in a package i downloaded that goes essentially
| like this:
|
| method:aCollection
| aCollection do:[:i| i satisfiesTest ifTrue[^someNumberDependingOnI]
| ].
| ^someOtherNumberDependingOnACollection
|
| now theoretically some 'i' should always satisfy test, the
| ^someOtherNumber was obviously added because there is a bug in
| satisfiesTest and this way the bug is hardly noticable any more (its
| not
| important for my question, but someOtherNumber is perfectly logical
| in
| the general setting, if one does not understand the bug itself). i
| changed satisfiesTest so that there should be no more bugs in it. of
| course i cant be sure, hence i changed the ^someOtherNumber line to:
| self error:'should never be reached'.
| now i wonder whether that last error line would be considered a dirty
| hack by the usual smalltalk programmer, and if yes, what would be the
| usual procedure in such a case?
| werner
|
|

Reply | Threaded
Open this post in threaded view
|

Re: dirty hack question

wernerk
ok, thanks
werner

Reply | Threaded
Open this post in threaded view
|

Re: dirty hack question

wernerk
and yes, detect: should do it indeed
werner