我应该使用较少的局部变量还是打赌简洁?

时间:2013-10-08 16:34:26

标签: java coding-style

我最近在考虑使用局部变量,例如:

我应该更喜欢这个:

String firstString = classString.getFirstString();
String secondString = classString.getSecondString();

ClassGlobal.execute(firstString, secondString);

或者这个;

ClassGlobal.execute(classString.getFirstString(), classString.getSecondString());

我个人更喜欢后者,因为它更简洁,不需要两个额外的实例变量。但这样做是件好事吗?我是否因为简洁而牺牲了代码可读性?或者可以使用其中任何一个?

6 个答案:

答案 0 :(得分:12)

如有疑问,请记住Coding Horror中的引用:

  

始终将代码视为最终维护代码的人员   暴力的精神病患者谁知道你住在哪里。

此引用的含义是“尽可能简单地理解和阅读代码。”稍后,如果您需要在未来5年内再次维护该程序,那么它将会如果你让它尽可能可读,那就更容易了。这对每个人来说都是双赢的。

答案 1 :(得分:3)

对于我来说,您应该优先考虑代码可读性,以尽量减少变量的数量。您可能完全理解这行代码,但对于将来重新编写代码的程序员,他会欣赏使用局部变量(如果使用好的“自定义”名称,则会更好。)

答案 2 :(得分:3)

在这种特殊情况下,它并不重要。如果您的行本身可读,则无需分离变量。但是,一旦你开始添加逻辑而不是getter,我倾向于将它们分开。请考虑以下代码:

ClassGlobal.execute(classString.getFirstString().toLowerCase().substring(0, 10),
   classString.getSecondString().toLowerCase().substring(0, 10));

如果你将firstString和secondString分开并为它们分配有意义的名字,这一行会好得多。与代码中的大部分内容一样,没有"最好的"办法。我倾向于在可读性方面犯错误。

答案 3 :(得分:2)

我会选择第一个。它增加了可读性。对于第二个,它绝对减少了一些分配操作(!),但在大多数情况下,这是非常微不足道的性能改进量。所以更严格的可读性

另外,你不应该关心过早的优化。而且,现在编译器会为你做这些优化。

答案 4 :(得分:2)

如果您可以通过为本地人分配一个好名字来创建更有意义的阅读代码,那么创建额外的本地人(如果您可能需要以交互方式调试......也很有用。)。

如果本地人不会添加意义,因为被调用的方法是有名的,并且你有一个非常铁定的单元测试能力而不是调试和断点....紧凑的表示法可以感觉更好。但往往我倾向于创造当地人。

答案 5 :(得分:0)

可读性是最重要的。如果你的代码没有很好的可重复性,那么试着在1年内阅读你的代码,你就会得到答案。