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

2023-03-18 22:31:20 +08:00
 JinTianYi456

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

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

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

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

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

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

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

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

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

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/925179

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX