Yoann Rodière (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%...
) *created* an issue
Hibernate Search (
https://hibernate.atlassian.net/browse/HSEARCH?atlOrigin=eyJpIjoiMDdhZjY1...
) / Task (
https://hibernate.atlassian.net/browse/HSEARCH-4677?atlOrigin=eyJpIjoiMDd...
) HSEARCH-4677 (
https://hibernate.atlassian.net/browse/HSEARCH-4677?atlOrigin=eyJpIjoiMDd...
) Rename .add(...) to .and(...)/.or(...) in "simple" boolean predicates (
https://hibernate.atlassian.net/browse/HSEARCH-4677?atlOrigin=eyJpIjoiMDd...
)
Issue Type: Task Assignee: Unassigned Components: engine Created: 22/Aug/2022 04:48 AM Fix
Versions: 6.2-backlog Priority: Major Reporter: Yoann Rodière (
https://hibernate.atlassian.net/secure/ViewProfile.jspa?accountId=557058%...
)
Follows up on
https://hibernate.atlassian.net/browse/HSEARCH-4601 (
https://hibernate.atlassian.net/browse/HSEARCH-4601 ).
See the discussion starting here (
https://github.com/hibernate/hibernate-search/pull/3152#issuecomment-1220... ) :
> And now, by reading the examples with lambdas, i.e. when the operator
instantiation and the add operations are distant from one another, I'm
wondering if such syntax isn't requiring an excessive cognitive load for
casual readers to figure out what kind of operation this add is
performing. I'd say the cognitive load would be reduced if the methods
were to be more explicitly named and and or.
That means getting back to the situation before you de-duplicated all the
interfaces, then That might be clearer for long chains of.add() , but I
find it strange to use and / or for the very first clause, and that would
also feel very redundant, e.g. f.and().and( e1 ).and( e2 ). It would also
prevent developers from writing "generic" functions that simply add
multiple clauses to a boolean predicate, without knowing whether it's an and
or an or ; not a big deal, but worth mentioning.
Another solution would be to alter conventions, i.e. to use and / or as the
name of the lambda parameter (e.g. f.and().with( and -> ... ) ). That would
reduce the cognitive load when using with , at least, but obviously not
when using the fluent syntax f.and().add(...).add(...). That being said,
I'd argue the fluent syntax is more suited to short chains; I’d use.with for
longer chains spanning many lines of code.
For now, I'll use and / or as the name of the lambda parameter in tests and
examples, and I'll open another ticket to re-evaluate the problem before
we release 6.2.0.Final.
(
https://hibernate.atlassian.net/browse/HSEARCH-4677#add-comment?atlOrigin...
) Add Comment (
https://hibernate.atlassian.net/browse/HSEARCH-4677#add-comment?atlOrigin...
)
Get Jira notifications on your phone! Download the Jira Cloud app for Android (
https://play.google.com/store/apps/details?id=com.atlassian.android.jira....
) or iOS (
https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=Em...
) This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100205- sha1:59a7aeb )