Le 22/07/2010 23:35, Gilles Sadowski a écrit :
>>>> No, it was intentional so users can explicitly refer to it when building
>>>> the instance.
>>>
>>> Intentional but still a mistake IMO ;-) as it's part of the interface
>>> whereas the prime use is to allow to define a default constructor so that
>>> the user does *not* have to refer to the value.
>>> When using the default constructor, the user can always obtain the default
>>> value with "getMaxIterations()".
>>
>> No, the user can get this value only once the instance has already been
>> built, not before calling the constructor.
> 
> Of course. I didn't say otherwise.
> When does the user need to know this value before calling the constructor?

Mainly displaying it in a graphical user interface, as an hint for the
user to choose either this default or something else if he want to.

> How useful is a default value anyway?
> 
>>>>> Last 3 items: The field still exists but in a superclass. The problem 
>>>>> would
>>>>> have been prevented if those fields were "private" instead of "protected".
>>>
>>> I suggest that access to those fields is also changed to "private" (this
>>> breaks compatibility just the same) and I'll add accessors to be used by
>>> derived classes for accessing them. OK?
>>
>> I'm on the fence on this.
> 
> What can you do with a "protected" field that you can't with the object
> returned by an accessor?
> [I even think that we should go towards immutability for those fields...]

Yes, of course, but when I say I'm on the fence it is rather because it
introduces another incompatibility. How about deprecating them for now
and changing them to private (and perhaps final) in 3.0 ?



> 
>>>>> So, what does that mean with respect to committing the changes into the
>>>>> trunk?
>>>>
>>>> There does not seem to be any major problem, so you can commit your 
>>>> changes.
>>>
>>> Wow, that's unexpected good news. It's a relief that backward compatibility
>>> isn't that stringent a requirement :-)
>>
>> It is a stringent requirement. But it seemed to me that the changes were
>> not that important.
> 
> Fine then. I don't think they are but...
> 
>> Did I miss something ?
> 
> ... How would I know? Is there a policy that "clirr" cannot report "ERROR"?
> If not, then how do you decide what is important and what isn't?

It is a matter of feeling and experience. It is highly subjective and
this discussion is a perfect example of this. We can see you are ready
to change almost anything anytime, Phil doesn't want some changes to be
introduced at dot releases, and I am somewhere in between.

We are a community, and it is important we exchange our views here.

> 
> 
>>>>> I tried to see whether similar changes where present between 2.0 an 2.1 
>>>>> but
>>>>> "mvn install" doesn't work on the source tree located at:
>>>>>   http://svn.apache.org/repos/asf/commons/proper/math/tags/MATH_2_0
>>>>> [I've attached the console output.]
>>>>
>>>> It seems you have some network outage now, because the file is really
>>>> there and accessible. Try it several times or check your proxy setting.
>>>
>>> There is no proxy. I run the same command ("mvn install") inside three
>>> directories:
>>>   MATH_2_0
>>>   MATH_2_1
>>>   trunk
>>> In the first it fails, in the last two it works.
>>
>> I don't understand what happens.
> 
> 
> Maybe that the "MATH_2_0" branch contains outdated things...
> Does it work on your machine?

I didn't try. However, I'm not sure clirr is useful on a major release
as it is at these releases that we allow ourselves to introduce great
changes.

Luc

> 
> Gilles
> 
> ---------------------------------------------------------------------
> 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