11

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

我应该更喜欢这个:

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

ClassGlobal.execute(firstString, secondString);

或这个;

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

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

4

6 回答 6

12

如有疑问,请记住Coding Horror中的这句话:

始终编​​写代码,就好像最终维护您的代码的人是一个知道您住在哪里的暴力精神病患者一样。

这句话的意思是“让代码尽可能容易理解和阅读”。稍后,如果您需要在 5 年后再次维护该程序,那么如果您使其尽可能可读,对您自己来说会更容易。这对每个人来说都是双赢的。

于 2013-10-08T16:39:44.470 回答
3

至于我,你应该优先考虑代码可读性而不是最小化变量的数量。你可能完全理解那行代码,但是对于任何将来重新编写你的代码的程序员来说,他会喜欢使用局部变量(如果你使用好的“自定义”名称,那就更好了)。

于 2013-10-08T16:36:50.297 回答
3

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

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

如果您将 firstString 和 secondString 分开并为它们分配有意义的名称,则此行会好得多。与代码中的大多数内容一样,没有“最佳”方式。我倾向于在可读性方面犯错。

于 2013-10-08T16:37:55.323 回答
2

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

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

于 2013-10-08T16:38:10.490 回答
2

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

如果本地人不会添加意义,因为被调用的方法名称很好,并且你有相当铁定的单元测试能力而不是调试和断点...... 使用紧凑符号会感觉更好。但更多时候,我倾向于创造当地人。

于 2013-10-08T16:38:36.797 回答
0

可读性是最重要的。如果代码可读性不好,请尝试在 1 年内阅读您的代码,您将得到答案。

于 2013-10-08T16:39:54.853 回答