You might also including a "minimum hop count" parameter to advance by 
more than one. A value of zero would advance to Tuesday only if not 
already. One would advance always. Of course this does not cover cases 
like "advance three days, unless already Tuesday, in which case advance 
two".

Stephen Colebourne wrote:
> Hi all,
> I am looking at adding next/previous setting behaviour to v1.3, but am 
> finding the exact naming strategy is tricky. This refers to the Property 
> classes on DateTime etc.
>
> The code being added allows you to take a base date and set a value (ike 
> setCopy) but forcing it tobe in the future. An example use isto get the 
> date of next Tuesday, or the first of next month.
>
> DateTime nextTue = dt.dayOfWeek().next(DateTimeConstants.TUESDAY);
> DateTime firstOfNextMonth = dt.dayOfMonth().next(1);
>
> Unfortunately, this isn't a simple one new method: Given a date, does 
> 'next Tuesday' mean that the date must be later than the start point or 
> not? ie. if you request 'next Tuesday' on a date that is already a 
> Tuesday should you move later or not? Both are valid business use cases.
>
> Here as some possible method names:
>
> Use method names - difficult to explain in the name:
>   dt.dayOfWeek().withNext(TUESDAY); - nop if dt is Tue
>   dt.dayOfWeek().withNextAfter(TUESDAY); - must be after dt
> or
>   dt.dayOfWeek().withNextValueThisOrLater(TUESDAY); - nop if dt is Tue
>   dt.dayOfWeek().withNextValueLater(TUESDAY); - must be after dt
> or
>   dt.dayOfWeek().withValuePushingLater(TUESDAY); - nop if dt is Tue
>   dt.dayOfWeek().withNext(TUESDAY); - must be after dt
> or
>   dt.dayOfWeek().withNextAllowCurrent(TUESDAY); - nop if dt is Tue
>   dt.dayOfWeek().withNext(TUESDAY); - must be after dt
>
> Use a flag - 'must be later':
>   dt.dayOfWeek().withNext(TUESDAY, true);
> or
>   dt.dayOfWeek().withNextValue(TUESDAY, true);
>
> Ignore the problem - client code must write an if statement:
>   dt.dayOfWeek().withNext(TUESDAY);
> or
>   dt.dayOfWeek().withNextValue(TUESDAY);
>
>
> I'm not sure which I prefer. I like short names, and the with prefix is 
> a given. The withValuePushingLater/withNext combination is probably the 
> most expressive, but 'pushing' is pretty yucky. I really dislike boolean 
> flags, so I'd prefer to not do that, and leaving it to the client code 
> seems to miss the point.
>
> (Bear in mind that the correct name for setCopy is withValue)
>
> But if you've any other ideas of method names, let us know.
>
> Stephen
>
>
> _______________________________________________
> Joda-interest mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/joda-interest
>
>   


_______________________________________________
Joda-interest mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/joda-interest

Reply via email to