为了账号安全,请及时绑定邮箱和手机立即绑定

Lombok 或 Java 'var' 有用的用例

Lombok 或 Java 'var' 有用的用例

侃侃无极 2023-05-17 15:47:37
var当您浏览代码并调查乍一看不清楚的代码时,它并不是非常有用。当开发人员使用非自我描述的方法名称时,您必须花一些时间来了解什么是变量的真实类型。如果你使用 Lombok,var你将与Lombok紧密耦合,所以我不会在我的代码中经常使用它。在 Java 中使用有哪些有用的用例var?
查看完整描述

1 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

赞成的论据var

  • var需要更少的打字。它比 let's say 更短,有时更容易阅读Map<Integer, ArrayList<String>>

  • var如果方法调用的返回类型发生变化,则需要较少的代码更改。您只需要更改方法调用,而不是每个使用它的地方。

  • var鼓励为变量起一个更具描述性的名称。var customer = new Customer();即而不是var c = new Customer();

  • 当您在不同类型的另一个变量下有多个变量时,如果名称全部为var,则所有名称都会排成一行,而类型本身则不是这种情况(除非类型巧合地具有相同的长度)。

反对意见var

  • var掩盖了实际的变量类型。如果初始化器没有返回明确定义的类型,您可能无法分辨变量的类型。

  • 使用var是懒惰的。虽然var肯定比 更容易输入Map<Integer, ArrayList<String>>,但如果变量名称命名不当,您必须进行更深入的搜索才能知道它指的是什么。

  • var使得更难知道底层变量的类型实际上是什么。

  • 您不能var在所有情况下都使用。喜欢:

    • var i = 1, j = 2;var-一次只接受一个变量。

    • var arr = {1, 2, 3};- 必须显式声明数组。

    • var f = a -> a + " ";- 它无法确定此 lambda 函数的类型。

    • var f = String::replace;- 不能使用方法引用,因为它们本身没有类型。

哦,还有另一个很大的优势:代码高尔夫var更短(创建一个程序/函数来完成特定任务/挑战,尽可能少的字节)。:) 这可能是我不介意添加它的主要原因,因为我经常使用 Java(以及 .NET C#、05AB1E 和 Whitespace)编写代码。

相关:Java 7 的菱形运算符。List<String> names = new ArrayList<>();对比List<String> names = new ArrayList<String>();_

就个人而言,我仍然使用写出的类型而不是var,除了打代码。但也许我只需要在更频繁地使用它之前再习惯它一点。为了可读性,并且无需挖掘就可以更清楚,更容易地看到类型,我var根本不使用。至于 Java 7 的菱形运算符,我只在字段后直接实例化时使用它,但在其他地方实例化时不会使用它(即我会使用 ,但不会使用List<String> names = new ArrayList<>();List<String> names; /* ... some code here ...*/ names = new ArrayList<>();
不过,总的来说,这一切都归结为偏好。


查看完整回答
反对 回复 2023-05-17
  • 1 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信