Option 2 seems the most sensible. It translates to/from other languages and should be already familiar to some developers.
For example, with nullable checks enabled, C# treats everything as not null, unless specified otherwise with "?". Same for other languages where Option/Maybe type is present. Nothing is null by default. On Thu, Dec 16, 2021 at 6:14 PM Alexander Polovtcev <alexpolovt...@gmail.com> wrote: > Dear Igniters! > > I would like to propose a discussion about defining a policy regarding > where and how to use @Nullable/@NotNull annotations. These annotations are > used in conjunction with a static analysis engine (e.g. built in IDEA) and > are useful for avoiding null dereferencing and specifying method contracts. > > I can see the following possible options: > > 1. *Use both @Nullable and @NotNull annotations everywhere* (i.e. method > parameters and return types, class fields). Pros: the most robust and > expressive variant; easy to agree on and specify. Cons: very verbose; may > lead to code cluttering; > 2. *Use only @Nullable *for specifying method parameters that accept null > or class fields that can be null, treating @NotNull as an implicit default. > Pros: correlates with the default IDEA settings (with all corresponding > inspections enabled); not as verbose as option 1, since nullable parameters > are quite rare. Cons: less sound and complete, especially when working with > third-party libraries that are not annotated, since we cannot apply the > implicit @NotNull there; > 3. *Use only @NotNull *and treat @Nullable as an implicit default. Pros: > less verbose than option 1, better correlates with Java language semantics > (since all Java references are nullable). Cons: more verbose than option 2; > may be impossible to properly set up the analysis engine or may require > switching to a different annotation provider that supports jsr-305 > @ParametersAreNullableByDefault; > 4. *Do not use @Nullable nor @NotNull*. The most radical option in case we > will not be able to agree on any of the above three. No annotations - no > need for the discussion. > > What do you think? Are there any other options out there? I would like to > collect as many options as possible and organize a vote some time later. > > -- > With regards, > Aleksandr Polovtcev >