On 1/15/15 4:41 PM, Gilles wrote:
> On Thu, 15 Jan 2015 15:09:29 -0700, Phil Steitz wrote:
>> On 1/15/15 9:50 AM, Gilles wrote:
>>> On Thu, 15 Jan 2015 10:02:32 +0100, Adriean Khisbe wrote:
>>>> Hi,
>>>> Working on a project I had to capture current state of a
>>>> DescriptiveStatistics, and choosed to use a
>>>> StatisticalSummaryValues
>>>> to hold the value.
>>>> I looked it if was possible to do it in one short method call, but
>>>> didn't found the method.
>>
>> Good point. We should add this.
>>>> However I found some equivalent in SummaryStatistics:
>>>>     /**     * Return a {@link StatisticalSummaryValues} instance
>>>> reporting current     * statistics.     * @return Current
>>>> values of
>>>> statistics     */    public StatisticalSummary getSummary() {
>>>> return new StatisticalSummaryValues(getMean(), getVariance(),
>>>> getN(),
>>>>              getMax(), getMin(), getSum());    }
>>>> Might be a good thing to port this functionnality in
>>>> DescriptiveStatistics so ones can do
>>>> recap.getSummary()instead
>>>> of
>>>>       new StatisticalSummaryValues(recap.getMean(),
>>>> recap.getVariance(), recap.getN(),
>>>> recap.getMax(),
>>>> recap.getMin(), recap.getSum())
>>>> What do you think about this?
>>>
>>> Personally, I don't like the "...Values" class.
>>> I think that it should be a private inner class of
>>> "SummaryStatistics"
>>> (or package-private).
>>>
>>
>> I like it and use it a lot.  It is a handy way to persist / pass
>> around the results of a SummaryStatistics calculation - basically a
>> value object.
>>> I wonder whether, to capture the state, we could have a
>>>   Map<DataTypeId, Double> getState()
>>> method, where "DataTypeId" would either be an "enum" or a "String".
>>
>> The problem with the data bag type approach to these things is there
>> is no type safety and you can end up with nasty bugs due to things
>> not being in the bag that you expect.  If you try to make it safe by
>> making the DataTypeID an enum, you have just created an excessively
>> complicated value object - basically, engineering your own get/set
>> property mgt.
>
> You might be right; I didn't think a lot about it.
>
>>>
>>> Then couldn't "StatisticalSummary" itself be that enum rather than
>>> an interface (since it seems to only enumerate data and have no
>>> "behaviour")?
>>
>> As I said above, what we need is a simple value object.  I am fine
>> with dispensing with the interface though.  What is useful is the
>> value object.
>
> If so, I'd insist that each class provides its _own_ "Values" type,
> as an inner class (to be as close as possible to the producer), thus:
>
>   StatisticalSummary.Values (instead of "StatisticalSummaryValues")
>   DescriptiveStatistics.Values

The synchronized versions also produce these.  Why insist on the
two-level names?

Phil
>
>
>
> Gilles
>
>>
>> For DescriptiveStatistics, the set of statistics is different, so I
>> would suggest we just add DescriptiveStatisticsValues and a
>> getSummary or getResults() method that returns one of those.
>> Patches welcome.
>>
>> Phil
>>>
>>>
>>> Regards,
>>> Gilles
>>>
>>>>
>>>> Regards :)
>>>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to