JinTianYi456
V2EX  ›  Java

Java -10-var, lombok.var 有什么问题吗?公司不让用

  •  
  •   JinTianYi456 · Mar 18, 2023 · 5633 views
    This topic created in 1333 days ago, the information mentioned may be changed or developed.

    不懂。通常我只在泛型的地方用,减少<输入

    33 replies  •  2023-03-20 14:21:30 +08:00
    pelloz
    pelloz
    Mar 18, 2023
    1
    公司写的代码是需要大家一起看一起改的,不直观的东西不让用很正常。省你一秒的输入,浪费每个看你代码的人一秒时间肯定是不划算的。
    JinTianYi456
    JinTianYi456
    OP
    Mar 18, 2023
    2
    @pelloz #1 如果是 IDEA 有 File | Settings | Editor | Inlay Hints, 里面有个开关, 默认是开启的
    DGideas
    DGideas
    Mar 18, 2023
    3
    Java 10 引入的 var 关键字和 Lombok 的 var 注解都是用来简化代码的工具。它们可以帮助程序员省略类型声明,从而让代码更加简洁易读。

    然而,这些工具也可能会带来一些问题。例如,如果你过度使用 var 关键字,可能会导致代码变得难以阅读和理解。另外,使用 var 也可能会隐藏变量的实际类型,这可能会影响代码的可维护性和可读性。

    一些公司可能不允许使用 var 关键字和 Lombok 的 var 注解,是因为它们希望代码保持一致性和可读性,并避免潜在的问题。因此,最好遵循公司的规定,避免使用可能引起争议的代码风格。
    Mrag
    Mrag
    Mar 18, 2023
    4
    公司不让用你也没办法
    PVXLL
    PVXLL
    Mar 19, 2023 via iPhone
    5
    var val let 看习惯了就好,谁没事天天盯着类型看
    Leviathann
    Leviathann
    Mar 19, 2023
    6
    没有,遗老的问题
    IvanLi127
    IvanLi127
    Mar 19, 2023 via Android
    7
    我感觉,这种事情最好直接换语言。有效避免撕逼。。。当然,大概率会慢慢遇到新的问题,然后再换🤣
    Rocketer
    Rocketer
    Mar 19, 2023 via iPhone❤️4
    8
    C#早就支持 var 了,但我见过的公司都不让用。

    当初从 js 进化到 ts 不就是为了解决类型混乱的问题吗?不知道这到底是在折腾啥?
    bitmin
    bitmin
    Mar 19, 2023
    9
    我喜欢用 var ,写的时候变量名左对齐看起来更工整而且省事,重构也方便。

    阅读的时候非常直观,IDEA 会自动显示实际类型不影响阅读。要是不使用 IDEA 开发则无话可说,比 Java 项目不使用 Spring 更少见。
    WebKit
    WebKit
    Mar 19, 2023 via Android
    10
    说影响阅读的应该是没用过的把。var 影响阅读。那 Kotlin 这种岂不是根本不应该存在的东西? IDE 已经非常成熟了。直接用文本打开也是能看懂。
    dcsuibian
    dcsuibian
    Mar 19, 2023❤️1
    11
    传统写法:Deque<T> queue=new LinkedList<>();
    var 写法:var queue=new LinkedList<T>();
    在后者的写法中,var 推断出了 LinkedList<T>类型,具体到了实现类。若不小心调用了子类特有的方法,就违反了依赖倒置原则。
    另外,如果变量名不是 queue 的话,也可能会被别人误认为你想以传统的 List<T>方法使用。
    相对来说,var 确实会降低其清晰度。

    如果是需要长期维护或给别人看的代码,我个人会倾向于不使用 var ,而一次性代码就随意了。

    不过综合来说,其实影响也不大,毕竟 var 只能用在局部方法里。
    公司规定有时候可能就是没什么道理的,但为了代码风格的统一,还是要优先遵守。
    EscYezi
    EscYezi
    Mar 19, 2023 via Android
    12
    懒得输类型可以先写表达式然后接 .var 自动补全类型 XD
    wupher
    wupher
    Mar 19, 2023
    13
    不愿意学习新技术?

    我用 Kotlin ,val, var 从开始即如此。
    wxlwsy
    wxlwsy
    Mar 19, 2023 via iPhone
    14
    var 关键字没啥问题,但我反对 loombok
    xiaofan305
    xiaofan305
    Mar 19, 2023 via Android
    15
    @Livid 3# chatgpt ?
    cheng6563
    cheng6563
    Mar 19, 2023
    16
    从来都是 ctrl+alt+v 生成变量申明,换用 Java17 了也基本没用过 var
    lombok 是一言难尽,好用是非常好用,侵入性也非常大。
    FozillaMox
    FozillaMox
    Mar 19, 2023 via iPhone
    17
    @DGideas 你这样不太好吧
    zhuangzhuang1988
    zhuangzhuang1988
    Mar 19, 2023❤️1
    18
    c#,scala,c++,Kotlin ,ts 都在用。
    rus4db
    rus4db
    Mar 19, 2023
    19
    Java 10 的 var 关键字是一种类型推断特性,它可以在局部变量初始化时自动推断其数据类型。这个特性可以减少冗余代码,提高程序的可读性和开发效率。但是它并不是完全没有问题。以下是一些可能的问题:
    - 可读性和可维护性。在某些情况下,显示声明变量的数据类型可能更加清晰和易于理解。此外,当数据类型推导不清晰或者程序员不理解类型推断过程的规则时会出现问题。
    - 调试。当程序出现错误时,使用 var 关键字可能会使调试过程更加困难,因为程序员可能需要手动推断变量的数据类型。
    - 兼容性。Java 10 是较新的版本,不是所有的机器都能支持,如果要在旧版 Java 上运行,则需要进行一些兼容性处理。

    Lombok 的 var 关键字可以自动生成 getter 和 setter 方法,从而减少了冗余代码的数量。然而,它也可能会导致以下问题:
    - 可读性和可维护性。像 Java10 那样,它可能会使代码更难阅读和理解,也可能会造成维护问题。
    - 兼容性。与 Java10 的 var 关键字相同,使用 lombok.var 也需要在较新的 Java 版本中才能使用。
    对于公司不允许使用 var 关键字的情况,可能是为了保持代码一致性和可维护性。在这种情况下,最好遵守公司规定,重视代码的可读性和易于维护性。
    hhjswf
    hhjswf
    Mar 19, 2023 via Android
    20
    @Livid 19L 怀疑是 gpt 回复
    UnknownDomain
    UnknownDomain
    Mar 19, 2023 via Android
    21
    @hhjswf 感觉 3 楼也是 gpt
    roundgis
    roundgis
    Mar 19, 2023 via Android
    22
    Dotnet 3.5 就存在的東西

    Dotnet3.5 好像是 08 年發行的

    var 只能用在 local variable

    除非一個方法寫幾萬行 不然怎麼會影響可讀性

    當然以前的屎山代碼的確有一個方法過萬行的

    不過那種是鐵了心不升級的也用不了 var
    iseki
    iseki
    Mar 19, 2023
    23
    var 主要是有点弱,只能在局部变量用,但是我觉得不该不许用。lombok 这东西还是别用了,你一用所有人都得跟着用,而且还不是个第一方的东西,不太好
    onikage
    onikage
    Mar 19, 2023
    24
    一行 var 就认为是新技术的也是浅薄的不行.
    ljrdxs
    ljrdxs
    Mar 19, 2023
    25
    @Rocketer 不用 var ,写 LINQ 时很难设置类型。
    泛型可能套几层嘞。
    其他场景,暂时想不到弊端。
    xiaocaiji111
    xiaocaiji111
    Mar 19, 2023
    26
    比如一个函数返回值是用 var
    var var1 = func1();
    然后后面又有一个函数调用使用了 var
    var var2 = func2(var1);

    这时候不点进去函数的实现根本不知道返回的类型,参数类型是什么。
    Livid
    Livid
    MOD
    PRO
    Mar 20, 2023
    27
    @FozillaMox
    @hhjswf
    @UnknownDomain

    3 楼 @DGideas 因为连续使用 AI 回复,账号已经被彻底 ban 。如果想看处理过程可以看这里:

    https://www.v2ex.com/t/925157
    acctv2
    acctv2
    Mar 20, 2023 via Android
    28
    @Rocketer var 跟类型系统没啥太大关系 纯语法糖
    litchinn
    litchinn
    Mar 20, 2023
    29
    用不用 var 在我看来不是和 4 个空格缩进,2 个空格缩进一样属于代码规范问题吗,既然是规范问题按照公司规范来呗
    fiveStarLaoliang
    fiveStarLaoliang
    Mar 20, 2023
    30
    我用 var 主要是能直接类型推断出来的地方用, 有些函数返回的地方我就不用, 因为我觉得这些地方用确定类型反而对理解代码更好, 真的没必要非黑即白的二极管思维
    hihanley
    hihanley
    Mar 20, 2023❤️1
    31
    @Livid 19 楼疑似使用 AI 回复
    chendy
    chendy
    Mar 20, 2023
    32
    曾经多年前在项目里大量使用过 lombok 的 val
    写得挺爽,后续维护开始坐牢,本来可以直接看到类型,用了 val 之后还要点进方法看一眼返回值类型
    虽然从‘优雅’的角度来说,应该关心方法返回的东西不用关心类型,但是从开发维护的角度来看,还是直接看到类型比较方便

    顺便一说其实 idea 的 .var 其实就够用了,不用自己手打类型
    th00000
    th00000
    Mar 20, 2023
    33
    @DGideas #3 这是 AI 回复的吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2424 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 71ms · UTC 04:54 · PVG 12:54 · LAX 20:54 · JFK 23:54
    ♥ Do have faith in what you're doing.