V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
MakHoCheung
V2EX  ›  Java

大佬们喜欢用 Null-Safe 的注解吗

  •  
  •   MakHoCheung · May 18, 2022 · 3137 views
    This topic created in 1441 days ago, the information mentioned may be changed or developed.

    我所知的有 Jetbrains annotation 、Spring lang 和 Jakarta annotation 这几个包都有这些注解。 看了下 idea 社区版的源码,它在方法的入参和返回值都声明 NotNullNullable感觉好啰嗦啊,不标 IDEA 就 warning 或者有 @ 标记。 大佬们喜欢用么。

    19 replies    2022-05-18 18:56:23 +08:00
    wolfie
        1
    wolfie  
       May 18, 2022
    常用,就是给 API 打标记。
    zed1018
        2
    zed1018  
       May 18, 2022
    老实讲,不喜欢用。所以我选择了 kotlin 。直接 nullable type 了
    lmshl
        3
    lmshl  
       May 18, 2022
    不喜欢,因为我们 Scala 有 Option 😏
    从来没在线上见过自己的代码 NPE ,倒是用的其他库偶尔会蹦几个 NPE 出来
    BBCCBB
        4
    BBCCBB  
       May 18, 2022
    @lmshl 握草, rust 的 option 是不是抄的 scala 的.
    Rwing
        5
    Rwing  
       May 18, 2022
    欢迎体验一下 C# 🙂
    Leviathann
        6
    Leviathann  
       May 18, 2022
    @BBCCBB 有没有听过一个语言叫 Ocaml
    这也是第一版 rustc 的实现语言
    yazinnnn
        7
    yazinnnn  
       May 18, 2022   ❤️ 1
    @BBCCBB
    有没有一种可能,是从 maybe monad 演变过来的?
    lmshl
        8
    lmshl  
       May 18, 2022
    @BBCCBB Option / Maybe 很多语言都有,毕竟 null 是 The Billion Dollar Mistake.
    realrojeralone
        9
    realrojeralone  
       May 18, 2022
    一般不用,在 null 值传进来会导致 npe 的频繁调用点用 NonNull ,对于专门为了处理 null 值的工具类会用 Nullable
    SMGdcAt4kPPQ
        10
    SMGdcAt4kPPQ  
       May 18, 2022 via Android
    @Rwing How about F# ?
    chendy
        11
    chendy  
       May 18, 2022
    不用
    警告关掉,完事
    Building
        12
    Building  
       May 18, 2022
    新生代语言都用?替代了,古董语言 Nullable 果断关掉,啰哩啰嗦
    MakHoCheung
        13
    MakHoCheung  
    OP
       May 18, 2022
    @chendy 😂
    MakHoCheung
        14
    MakHoCheung  
    OP
       May 18, 2022
    @realrojeralone 其实我是想不标注的情况下默认 NonNull ,会传 null 的地方加个 NonNull 声明就好了,一个注解搞定,不知道为啥默认的 idea 不这样 inspect 。
    MakHoCheung
        15
    MakHoCheung  
    OP
       May 18, 2022
    @Building 确实,好啰嗦
    cppc
        16
    cppc  
       May 18, 2022 via iPhone   ❤️ 2
    会用,可以省去注释的说明。一般只显示标注 nullable ,结合 package-info 声明默认都是 nonnull 也不麻烦。 类似这样 https://github.com/John-Chan/fckit/blob/master/fist-kit-boot-parent/fist-kit-boot-core/src/main/java/com/power4j/fist/boot/apidoc/package-info.java
    o02VFqu3gZnZfX8n
        17
    o02VFqu3gZnZfX8n  
       May 18, 2022
    1. 可以使用类似这样的注解指定默认类型 "@ParametersAreNonnullByDefault"
    2. 如果一个值没有指定 nullable 类型,和 Kotlin 混用会比较危险,Java 的 String 在 Kotlin 里既可能是 String 也可能是 String?,也就是说 Nullable 会被当作 NonNull ,非常危险。
    MakHoCheung
        18
    MakHoCheung  
    OP
       May 18, 2022
    @cppc 这个可以啊跟我的想法差不多
    gabon
        19
    gabon  
       May 18, 2022 via iPhone
    我一般会加上,因为加上后如果少判 npe 或者多判编译器和 infer 等静态代码分析工具可以帮助发现错误。但是我发现工作中其它同事可能不愿意关注这个。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2685 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 137ms · UTC 15:57 · PVG 23:57 · LAX 08:57 · JFK 11:57
    ♥ Do have faith in what you're doing.