On Fri, 16 Jun 2023 09:42:45 GMT, John Hendrikx <jhendr...@openjdk.org> wrote:

>> I think the three newly added methods are a good choice. I wonder if we can 
>> some up with better names, though. without some verb like "add" or 
>> "subscribe" in the name, the name doesn't really indicate that it is adding 
>> a new listener to the observable.
>
> I agree that the chosen names `invalidation`, `changes` and `values` are a 
> bit terse.  The whole signature (without reading docs) should make it clear 
> you are creating a subscription, but perhaps we can do better.  The use of 
> `addListener` can be ruled out as it would conflict with the existing method 
> due to having Lambda's with the same arity (the `values` listener would 
> conflict with `addListener(InvalidationListener)`.  Also, an `add` method 
> would probably have users expecting a corresponding `remove` method.
> 
> A few ideas listed here:
> 
> | invalidation | values | changes |
> |---|---|---|
> |`subscribe(Runnable)`(*)|`subscribe(Consumer)`(*)|`subscribe(BiConsumer)`(*)|
> |`subscribeInvalidations(Runnable)`|`subscribeValues(Consumer)`|`subscribeChanges(BiConsumer)`|
> |`invalidationsTo(Runnable)`|`valuesTo(Consumer)`|`changesTo(BiConsumer)`|
> 
> (*) May limit future listener types that have same arity, but can still be a 
> good choice

On that same topic of naming methods:

What do people think of `Subscription#unsubscribe`?  Should it be `cancel`? 
Something else?  Okay as it is?

Code example:

        if (subscription != null) {
            subscription.unsubscribe();
            subscription = null;
        }

-------------

PR Review Comment: https://git.openjdk.org/jfx/pull/1069#discussion_r1232031343

Reply via email to