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: [email protected]
> For additional commands, e-mail: [email protected]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]