Hi, I forgot to mention that another option I played with was to always use a metric object, and never numbers. So, numberOfLinesOfCode would return a MetricValue. I think the same idea is present in acqoncagua.
Cheers, Doru -- www.tudorgirba.com "Every thing has its own flow" > On 21 Dec 2016, at 08:21, Tudor Girba <tu...@tudorgirba.com> wrote: > > Hi Alex, > > Following the design proposed by Stef, in your case you would use a different > collection. > > Cheers, > Doru > > >> On Dec 21, 2016, at 8:13 AM, Alexandre Bergel <alexandre.ber...@me.com> >> wrote: >> >> Hi Stef, >> >> You are raising an interesting point to discuss. This MissingValue is indeed >> better than having -1 >> Something to keep in mind: it may be that one would like to focus on the >> missing value and not really the value. >> >> Consider: >> >>> testCollect >>> >>> | uarray collected | >>> uarray := UniformOrderedCollection new. >>> uarray add: 10. >>> uarray add: 20. >>> uarray add: (MissingValue discarding). >>> collected := uarray collect: [ :each | each ]. >>> self assert: collected size equals: 2. >> >> It could well be that I would like to be able to query over the >> MissingValue. >> Can something like possible: uarray collect: #isMissing >> ? >> >> Cheers, >> Alexandre >> >> >>> On Dec 20, 2016, at 10:15 PM, stepharong <stephar...@free.fr> wrote: >>> >>> Hi dear great OO designers >>> >>> Here is a little challenges for your brainy souls :) >>> >>> In Moose when we compute metrics it may happen than a tool (often external >>> to pharo) does not compute a metrics >>> and when we request it in moose we check and often we return a not so good >>> -1. >>> >>> I'm trying to brainstorm on a solution >>> >>> - first may be the simplest way is to not invoke a metrics when it is not >>> computed. But it means that we should know it and that we should have a >>> registration mechanism. After all this is probably the best solution. >>> >>> - Second we were thinking to use exception but when we have multiple >>> entities missing one metrics.... I have serious doubts. >>> >>> - Second I was thinking about having the following behavior >>> >>> testCollect >>> >>> | uarray collected | >>> uarray := UniformOrderedCollection new. >>> uarray add: 10. >>> uarray add: 20. >>> uarray add: (MissingValue discarding). >>> collected := uarray collect: [ :each | each ]. >>> self assert: collected size equals: 2. >>> >>> testDo >>> >>> | res uarray | >>> uarray := UniformOrderedCollection new. >>> uarray add: 10. >>> uarray add: 20. >>> uarray add: (MissingValue discarding). >>> uarray add: 40. >>> res := 0. >>> uarray do: [ :each | res := res + each ]. >>> self assert: res equals: 70. >>> >>> >>> testCollectDefaulting >>> >>> | uarray collected | >>> uarray := UniformOrderedCollection new. >>> uarray add: 10. >>> uarray add: 20. >>> uarray add: (MissingValue default: 33). >>> collected := uarray collect: [ :each | each ]. >>> self assert: collected size equals: 3. >>> self assert: collected third equals: 33 >>> >>> >>> I basically started to implement >>> >>> >>> do: aBlock >>> "Refer to the comment in Collection|do:." >>> 1 to: self size do: >>> [:index | (self at: index) toDo: aBlock on: self] >>> >>> >>> >>> collect: aBlock >>> "Evaluate aBlock with each of the receiver's elements as the argument. >>> Collect the resulting values into a collection like the receiver. Answer >>> the new collection." >>> >>> | newCollection | >>> newCollection := self species new. >>> self >>> do: [ :each | each toCollect: aBlock on: newCollection ]. >>> ^ newCollection >>> >>> >>> and >>> >>> DiscardingValue >> toCollect: aBlock on: aCollection >>> "discard computation" >>> ^ self >>> >>> >>> Object >> toCollect: aBlock on: aCollection >>> >>> ^ aCollection add: (aBlock value: self) >>> >>> >>> So I imagine that you see the design and I wanted to get your point of view. >>> >>> -- >>> Using Opera a kind of bad mail client but far better than thunderbird >>> _______________________________________________ >>> Moose-dev mailing list >>> moose-...@list.inf.unibe.ch >>> https://www.list.inf.unibe.ch/listinfo/moose-dev >> >> -- >> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: >> Alexandre Bergel http://www.bergel.eu >> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. >> >> >> >> _______________________________________________ >> Moose-dev mailing list >> moose-...@list.inf.unibe.ch >> https://www.list.inf.unibe.ch/listinfo/moose-dev > > -- > www.tudorgirba.com > www.feenk.com > > "If you interrupt the barber while he is cutting your hair, > you will end up with a messy haircut." >