On Wed, 21 Dec 2016 12:05:32 +0100, Tudor Girba <tu...@tudorgirba.com> wrote:

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.

Yes in fact may be we should hold the value as raw data and create on demande the metricValue.
to avoid to have millions on them.
Or a kind of flightweight



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."




--
Using Opera's mail client: http://www.opera.com/mail/

Reply via email to