每当我评论我的代码时 - 我都希望得到好评和大评论。有时需要嵌套大评论,我通常会添加额外的缩进。但是,如果我能够使用额外的代码块{}
来使缩进更符合逻辑,那将会更加清晰。
我们有一个简单的例子:
// ┌───────────────────┐
// │ COMMENT │
// └───────────────────┘
{
// Code in here
}
// ┌───────────────────┐
// │ ; │
// └───────────────────┘
此示例中的{}
是否会以任何方式降低Java程序的速度,还是会被编译器自动删除?当然{}
本身就是一个范围,Java会想要保持这个,对吗?
答案 0 :(得分:5)
如果您的方法很复杂且难以一次性理解,请尝试从大型方法中提取一个或多个方法。注意:方法调用不是免费的,但是较小的方法往往会被内联,因此即使代码中的方法调用,您也可以获得同样快速的代码。
肯定{}本身就是一个范围,Java会想保留它,对吗?
字节代码可以有帧信息但很少有。通常无法从字节代码中了解您是否在代码中使用了额外的{ x(); }
或(x)
。
这些框架可能会或可能不会与实际生成的机器代码产生不同,但如果不存在,则它们没有区别。
大多数时候,最重要的是清晰度,当你测量出有问题时,你应该担心性能。您唯一需要担心的是时间复杂性很重要,请使用时间复杂度较低的策略。
每种自包含方法需要检查四种不同的放置方向。
在这种情况下,我会有一个像
这样的循环enum Direction {
NORTH(0, +1), SOUTH(0, -1), EAST(+1, 0), WEST(-1, 0);
final int x, y;
Direction(int x, int y) { this.x = x; this.y = y; }
}
for (Direction dir : Direction.values()) {
// do something with each direction.
}
您可以将Direction.values()
存储在私有常量中以节省一些垃圾/分配。
答案 1 :(得分:2)
他们不会真正放慢任何速度,因为它们将被编译器删除。
但是,您可能希望尝试使用 good 自我记录名称来提取函数,而不是编写类似的代码。它会更具可读性。