ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ilya Kasnacheev <ilya.kasnach...@gmail.com>
Subject Re: BinaryObject API confuses users
Date Fri, 06 Dec 2019 12:00:24 GMT
Hello!

I think that repeating argument type name in method name is a code smell.
Rather, we should describe how this method is different from other methods
of its bunch.

In this case, it is different since it allows you to create nested binary
objects, i.e., ones with non-flat structure.

Regards,
-- 
Ilya Kasnacheev


пт, 6 дек. 2019 г. в 13:45, Николай Ижиков <nizhikov@apache.org>:

> Hello, Ilya.
>
> I don’t get your point
>
> > We don’t passing … binary, just a … BinaryObjeсtBuilder.
>
> May be we should go with `setBinaryObjectBuilderField` or
> `setBinaryObjectField`?
>
>
> > 6 дек. 2019 г., в 13:38, Ilya Kasnacheev <ilya.kasnacheev@gmail.com>
> написал(а):
> >
> > Hello!
> >
> > I can see where you are getting at, can we call it "setFieldNested"
> instead
> > or something like that?
> >
> > setBinaryField is confusing because we're not passing anything especially
> > binary, just a nested BinaryObjectBuilder.
> >
> > Regards,
> > --
> > Ilya Kasnacheev
> >
> >
> > пт, 6 дек. 2019 г. в 13:17, Николай Ижиков <nizhikov@apache.org>:
> >
> >> Hello, Igniters.
> >>
> >> We have confusing API in `BinaryObjectBuilder` class.
> >>
> >> The code below leads to the `ClassCastException`
> >> The cause is java method resolution rules [1]
> >>
> >>> There may be more than one such method, in which case the most specific
> >> one is chosen
> >>
> >> I suggest to deprecate `setField(String name, @Nullable
> >> BinaryObjectBuilder builder);` method and introduce
> >> `setBinaryField(String name, @Nullable BinaryObjectBuilder builder);`
> >> instead of it.
> >>
> >> What do you think?
> >>
> >> ```
> >> public class BugTest extends GridCommonAbstractTest {
> >>    @Test public void testBinaryObject() throws Exception {
> >>        try (Ignite ignite = startGrid(0)) {
> >>            BinaryObjectBuilder builder =
> >> ignite.binary().builder("testVal")
> >>                .setField("name", "John Doe", String.class);
> >>
> >>            builder.setField("name", builder.getField("name"));
> >>        }
> >>    }
> >> }
> >> ```
> >>
> >> [1]
> >>
> https://docs.oracle.com/javase/specs/jls/se11/html/jls-15.html#jls-15.12.2
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message