lombok 或 java 'var' 有用的用例

Jav*_*Dev 3 java var lombok java-10

var当您浏览代码并调查乍一看不清楚的代码时,这并不是很少。当开发人员使用非自描述方法名称时,您必须花一些时间来了解变​​量的真实类型。如果你使用 lombok 的,var你将与​​ lombok 紧密结合,所以我不会在我的代码中经常使用它

var在 java 中使用的有用用例是什么?

Kev*_*sen 6

赞成的论据var:

  • var需要较少的打字。它比我们说的更短,有时更容易阅读Map<Integer, ArrayList<String>>。
  • var如果方法调用的返回类型发生变化,则需要较少的代码更改。您只需要更改方法调用,而不是每个使用它的地方。
  • var鼓励为变量使用更具描述性的名称。即var customer = new Customer();而不是var c = new Customer();。

反对意见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在 .NET C# 中使用的帖子,该var关键字从一开始就存在,而对于 Java,它仅从版本 10 开始可用。

哦,还有另一个很大的优势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<>();)。
不过,总的来说,这一切都归结为偏好。

  • 我同意。我的经验法则是仅将“var”与“new”结合使用。在任何其他情况下,它都会带来我宁愿避免的歧义。 (2认同)

归档时间:

查看次数:

2049 次

最近记录:

7 年,2 月 前