不懂。通常我只在泛型的地方用,减少<
输入
1
pelloz 2023-03-18 22:38:50 +08:00
公司写的代码是需要大家一起看一起改的,不直观的东西不让用很正常。省你一秒的输入,浪费每个看你代码的人一秒时间肯定是不划算的。
|
2
JinTianYi456 OP @pelloz #1 如果是 IDEA 有 File | Settings | Editor | Inlay Hints, 里面有个开关, 默认是开启的
|
3
DGideas 2023-03-18 22:44:04 +08:00
Java 10 引入的 var 关键字和 Lombok 的 var 注解都是用来简化代码的工具。它们可以帮助程序员省略类型声明,从而让代码更加简洁易读。
然而,这些工具也可能会带来一些问题。例如,如果你过度使用 var 关键字,可能会导致代码变得难以阅读和理解。另外,使用 var 也可能会隐藏变量的实际类型,这可能会影响代码的可维护性和可读性。 一些公司可能不允许使用 var 关键字和 Lombok 的 var 注解,是因为它们希望代码保持一致性和可读性,并避免潜在的问题。因此,最好遵循公司的规定,避免使用可能引起争议的代码风格。 |
4
Mrag 2023-03-18 23:39:50 +08:00
公司不让用你也没办法
|
5
PVXLL 2023-03-19 00:21:21 +08:00 via iPhone
var val let 看习惯了就好,谁没事天天盯着类型看
|
6
Leviathann 2023-03-19 00:31:02 +08:00
没有,遗老的问题
|
7
IvanLi127 2023-03-19 00:48:00 +08:00 via Android
我感觉,这种事情最好直接换语言。有效避免撕逼。。。当然,大概率会慢慢遇到新的问题,然后再换🤣
|
8
Rocketer 2023-03-19 00:55:15 +08:00 via iPhone 4
C#早就支持 var 了,但我见过的公司都不让用。
当初从 js 进化到 ts 不就是为了解决类型混乱的问题吗?不知道这到底是在折腾啥? |
9
bitmin 2023-03-19 02:03:44 +08:00
我喜欢用 var ,写的时候变量名左对齐看起来更工整而且省事,重构也方便。
阅读的时候非常直观,IDEA 会自动显示实际类型不影响阅读。要是不使用 IDEA 开发则无话可说,比 Java 项目不使用 Spring 更少见。 |
10
WebKit 2023-03-19 02:31:53 +08:00 via Android
说影响阅读的应该是没用过的把。var 影响阅读。那 Kotlin 这种岂不是根本不应该存在的东西? IDE 已经非常成熟了。直接用文本打开也是能看懂。
|
11
dcsuibian 2023-03-19 03:09:28 +08:00 1
传统写法:Deque<T> queue=new LinkedList<>();
var 写法:var queue=new LinkedList<T>(); 在后者的写法中,var 推断出了 LinkedList<T>类型,具体到了实现类。若不小心调用了子类特有的方法,就违反了依赖倒置原则。 另外,如果变量名不是 queue 的话,也可能会被别人误认为你想以传统的 List<T>方法使用。 相对来说,var 确实会降低其清晰度。 如果是需要长期维护或给别人看的代码,我个人会倾向于不使用 var ,而一次性代码就随意了。 不过综合来说,其实影响也不大,毕竟 var 只能用在局部方法里。 公司规定有时候可能就是没什么道理的,但为了代码风格的统一,还是要优先遵守。 |
12
EscYezi 2023-03-19 03:15:02 +08:00 via Android
懒得输类型可以先写表达式然后接 .var 自动补全类型 XD
|
13
wupher 2023-03-19 09:17:31 +08:00
不愿意学习新技术?
我用 Kotlin ,val, var 从开始即如此。 |
14
wxlwsy 2023-03-19 10:08:08 +08:00 via iPhone
var 关键字没啥问题,但我反对 loombok
|
15
xiaofan305 2023-03-19 10:14:08 +08:00 via Android
@Livid 3# chatgpt ?
|
16
cheng6563 2023-03-19 10:20:10 +08:00
从来都是 ctrl+alt+v 生成变量申明,换用 Java17 了也基本没用过 var
lombok 是一言难尽,好用是非常好用,侵入性也非常大。 |
17
FozillaMox 2023-03-19 10:44:47 +08:00 via iPhone
@DGideas 你这样不太好吧
|
18
zhuangzhuang1988 2023-03-19 10:58:21 +08:00 1
c#,scala,c++,Kotlin ,ts 都在用。
|
19
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 关键字的情况,可能是为了保持代码一致性和可维护性。在这种情况下,最好遵守公司规定,重视代码的可读性和易于维护性。 |
21
UnknownDomain 2023-03-19 12:25:35 +08:00 via Android
@hhjswf 感觉 3 楼也是 gpt
|
22
roundgis 2023-03-19 12:59:01 +08:00 via Android
Dotnet 3.5 就存在的東西
Dotnet3.5 好像是 08 年發行的 var 只能用在 local variable 除非一個方法寫幾萬行 不然怎麼會影響可讀性 當然以前的屎山代碼的確有一個方法過萬行的 不過那種是鐵了心不升級的也用不了 var |
23
iseki 2023-03-19 13:01:54 +08:00
var 主要是有点弱,只能在局部变量用,但是我觉得不该不许用。lombok 这东西还是别用了,你一用所有人都得跟着用,而且还不是个第一方的东西,不太好
|
24
onikage 2023-03-19 22:22:19 +08:00
一行 var 就认为是新技术的也是浅薄的不行.
|
26
xiaocaiji111 2023-03-19 23:12:01 +08:00
比如一个函数返回值是用 var
var var1 = func1(); 然后后面又有一个函数调用使用了 var var var2 = func2(var1); 这时候不点进去函数的实现根本不知道返回的类型,参数类型是什么。 |
27
Livid MOD @FozillaMox
@hhjswf @UnknownDomain 3 楼 @DGideas 因为连续使用 AI 回复,账号已经被彻底 ban 。如果想看处理过程可以看这里: https://www.v2ex.com/t/925157 |
29
litchinn 2023-03-20 08:46:09 +08:00
用不用 var 在我看来不是和 4 个空格缩进,2 个空格缩进一样属于代码规范问题吗,既然是规范问题按照公司规范来呗
|
30
fiveStarLaoliang 2023-03-20 10:31:22 +08:00
我用 var 主要是能直接类型推断出来的地方用, 有些函数返回的地方我就不用, 因为我觉得这些地方用确定类型反而对理解代码更好, 真的没必要非黑即白的二极管思维
|
32
chendy 2023-03-20 11:19:30 +08:00
曾经多年前在项目里大量使用过 lombok 的 val
写得挺爽,后续维护开始坐牢,本来可以直接看到类型,用了 val 之后还要点进方法看一眼返回值类型 虽然从‘优雅’的角度来说,应该关心方法返回的东西不用关心类型,但是从开发维护的角度来看,还是直接看到类型比较方便 顺便一说其实 idea 的 .var 其实就够用了,不用自己手打类型 |