I'm -1 on changing the existing API because of binary compatability. I'm -0 on replacing it with the new one because I feel the void return makes it clear what is happening.
Stephen ----- Original Message ----- From: "Gary Gregory" <[EMAIL PROTECTED]> To: "'Jakarta Commons Developers List'" <[EMAIL PROTECTED]> Sent: Friday, October 10, 2003 9:54 PM Subject: RE: [lang] ArrayUtils.reverse > I've not heard back on this last post. > > So... is my idea below not acceptable because it breaks the API signature > for reverse? If not acceptable, would a new API be acceptable? Name to be > suggested later this is the correct path... > > Thank, > Gary > > > -----Original Message----- > > From: Gary Gregory [mailto:[EMAIL PROTECTED] > > Sent: Wednesday, October 08, 2003 15:10 > > To: 'Jakarta Commons Developers List' > > Subject: RE: [lang] ArrayUtils.reverse > > > > Hmm... my main proposal seems to have gotten lost in the shuffle (sorry, > > couldn't resist). > > > > Proposal: > > > > void reverse(type[] array) > > > > Becomes: > > > > type[] reverse(type[] array) > > > > The input array is returned. That's it. > > > > -- > > > > To follow the shuffle, this lets shuffle lie: > > > > ArrayUtils.cutTheDeck(ArrayUtils.shuffleHere(ArrayUtils.shuffleThere(deck) > > )) > > ; > > > > Etc. > > > > Gary > > > > > -----Original Message----- > > > From: __matthewHawthorne [mailto:[EMAIL PROTECTED] > > > Sent: Wednesday, October 08, 2003 14:58 > > > To: Jakarta Commons Developers List > > > Subject: Re: [lang] ArrayUtils.reverse > > > > > > I don't see a need to deprecate the existing methods. In methods such > > > as reverse(Object[]), I think the default behavior would be to modify > > > the argument. That's the way that methods in java.util.Arrays as > > > java.util.Collections behave. However, as I've said, I think that > > > reverseAsCopy versions for all of the reverse methods are acceptable, > > > although I am starting to prefer reverseCopy as a name. However, I hear > > > what Stephen is saying about bloat... > > > > > > For example, what if I were to propose an array version of: > > > - void java.util.Collections.shuffle(List list) > > > > > > which would be: > > > - void ArrayUtils.shuffle(Object[] array) > > > > > > and would possibly need: > > > - Object[] ArrayUtils.shuffleCopy(Object[] array) > > > > > > Would this be accepted? What about versions for all of the primitive > > > types? > > > > > > My hypothetical suggestion may be polluting the conversation, but I'm > > > trying to paint a picture that forces us to decide if these types of > > > methods are suitable for ArrayUtils, another class, or [lang] in > > general. > > > > > > What do you think? > > > > > > > > > > > > > > > Gary Gregory wrote: > > > > > > > Here is a proposal that I think addresses all issues but I am not sure > > > why > > > > changing reverse() to return something instead of void is not > > backwards > > > > compatible (granted you need to recompile). Are we saying that we want > > > > binary compatibility. It seems ok to ask folks to recompile. > > > > > > > > 1) reverse does not change but is deprecated, in favor of: > > > > 2) new methods reverseShallow (as opposed to "deep") are just like > > > reverse > > > > and it returns its arg. > > > > 3) do not add reverseAsCopy until someone asks for it. > > > > > > > > Thoughts? > > > > > > > > Gary > > > > > > > > > > > >>-----Original Message----- > > > >>From: Stephen Colebourne [mailto:[EMAIL PROTECTED] > > > >>Sent: Wednesday, October 08, 2003 13:20 > > > >>To: Jakarta Commons Developers List > > > >>Subject: Re: [lang] ArrayUtils.reverse > > > >> > > > >>I would agree that reverse() should probably return the array, however > > > >>this > > > >>is a nasty backwards compatable change, seems harmless but actually > > > messes > > > >>up anyone where two OSS projects require different versions of lang. > > (We > > > >>made some incompatble changes in 2.0, but I'm aiming to avoid these > > > >>entirely > > > >>now in such a low level library as lang) So I'm -1. > > > >> > > > >>reverseCopy() sounds fine, however I would question how much of a need > > > it > > > >>meets. We must be very challenging of new methods in lang to avoid too > > > >>much > > > >>bloat, without blocking everything. Its a fine line. > > > >> > > > >>Stephen > > > >> > > > >>----- Original Message ----- > > > >>From: "Gary Gregory" <[EMAIL PROTECTED]> > > > >> > > > >>>I think I like it BUT the issue you raise is an orthogonal one. > > > >>> > > > >>>(1) A method that returns void cannot be used in an expression, > > period. > > > >>>Client can always ignore the return value and it does not cost the > > app > > > >>>anything. > > > >>> > > > >>>(2) Whether or not the array is twiddled in-place or not is a > > separate > > > >> > > > >>issue > > > >> > > > >>>and we are talking about a new API. So let's deal with both > > separately. > > > >> > > > >>For > > > >> > > > >>>a new API I see the following possibilities: > > > >>> > > > >>>(2.1.1) reverseCopy(type array[]) > > > >>> Sorts with reverse. > > > >>> > > > >>>(2.1.1) reverseAsCopy(type array[]) > > > >>> Sorts with reverse, a little better. > > > >>> > > > >>>(2.2) copyReverse(type array[]) > > > >>>Makes copying the most prominent verb, not quite right IMHO. > > > >>> > > > >>>(2.3) reverse(type array[], boolean copyFirst) > > > >>> Barf. > > > >>> > > > >>>Gary > > > >>> > > > >>> > > > >>>>-----Original Message----- > > > >>>>From: __matthewHawthorne [mailto:[EMAIL PROTECTED] > > > >>>>Sent: Wednesday, October 08, 2003 12:09 > > > >>>>To: Jakarta Commons Developers List > > > >>>>Subject: Re: [lang] ArrayUtils.reverse > > > >>>> > > > >>>>I think it's a good idea, but I like method that returns void also, > > > >>>>because it may save memory by modifying the input array. > > > >>>> > > > >>>>Maybe your suggested method should be renamed to: > > > >>>> > > > >>>>Object[] copyReverse(final Object[] array) > > > >>>> > > > >>>>and be modified to not operate on the argument, but instead create a > > > >>>>copy of it and return the reverse of the copy. > > > >>>> > > > >>>>What do you think? > > > >>>> > > > >>>> > > > >>>> > > > >>>> > > > >>>>Gary Gregory wrote: > > > >>>> > > > >>>> > > > >>>>>Hello, > > > >>>>> > > > >>>>>How about returning the argument instead of void for these APIs > > such > > > >>>> > > > >>>>that > > > >>>> > > > >>>>>they can be used in expressions? > > > >>>>> > > > >>>>>Now ArrayUtils: > > > >>>>> > > > >>>>>public static void reverse(final Object[] array) { > > > >>>>> > > > >>>>>Proposal: > > > >>>>> > > > >>>>>public static Object[] reverse(final Object[] array) { > > > >>>>> > > > >>>>> > > > >>>>>I ran into this with the Object[] version of the API but this > > > >> > > > >>applies > > > >>to > > > >> > > > >>>>all > > > >>>> > > > >>>>>other ArrayUtils.reverse APIs. > > > >>>>> > > > >>>>>This change should backwards compatible with a recompile of client > > > >> > > > >>code. > > > >> > > > >>>>>Thanks, > > > >>>>>Gary > > > >>>>> > > > >>>> > > > >>>> > > > >>>> > > > >>>>-------------------------------------------------------------------- > > - > > > >>>>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] > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > 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]