I wonder why signature is not

setField(String name, BinaryObject obj)

пт, 6 дек. 2019 г. в 15:00, Ilya Kasnacheev <ilya.kasnach...@gmail.com>:

> 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, Николай Ижиков <nizhi...@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.kasnach...@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, Николай Ижиков <nizhi...@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
> >
> >
>


-- 

Best regards,
Alexei Scherbakov

Reply via email to