为什么在单个参数 lambda 上添加括号是一种代码异味?



在几个网站/分析器上,如Baeldung和SonarQube,我看到包装lambda的单个参数被认为是一种代码异味。现在,我确实理解如果没有括号,您将保存两个字符,但是i.m.h.o,查看参数的其他用法,它也破坏了一致性。对我来说,一致的使用甚至会增加可读性。

a = () -> doSomething();
a = x -> doSomething(x);                // <--- Ok?
a = (x) -> doSomething(x);              // <--- Code smell?
a = (x, y) -> doSomething(x, y);
a = (x, y, z) -> doSomething(x, y, z);

除了较短的代码和个人偏好之外,还有其他原因导致括号在有一个参数时被认为是不好的吗?

">

为什么"问题总是会引起猜测,但我认为在这种情况下,原因相当明显:两个额外的字符引入了不必要的语法噪音

我不相信你的一致性反驳论点,因为你大概也不会在所有其他可能出现的表达式周围使用括号,对吧?同样的论点,你会被迫写

int a = ((1) + (2));

而不是

int a = 1 + 2;

最新更新