gpt4 book ai didi

java - 如何重构多个函数中的重复循环

转载 作者:行者123 更新时间:2023-12-04 20:38:41 24 4
gpt4 key购买 nike

我正在尝试 TDD 教程并希望编写好的代码。我遇到了使用循环重复代码的问题。

我的代码是这样的:

public Board(int rows, int columns) {
this.rows = rows;
this.columns = columns;

blocks = new Block[rows][columns];

for (int row = 0; row < rows; row++) {
for (int col = 0; col < columns; col++) {
blocks[row][col] = new Block('.');
}
}
}

public boolean hasFalling(){
boolean falling = false;

for (int row = 0; row < rows; row++) {
for (int col = 0; col < columns; col++) {
if(blocks[row][col].getChar() == 'X'){
falling = true;
}
}
}

return falling;
}

public String toString() {
String s = "";
for (int row = 0; row < rows; row++) {
for (int col = 0; col < columns; col++) {
s += blocks[row][col].getChar();
}
s += "\n";
}
return s;
}

如您所见,我在不同的方法中使用相同的 for 循环。有没有办法避免这种情况以及如何避免这种情况?

我正在使用 Java 编程。

最佳答案

我认为您对好的代码的“避免代码重复”想法有点太认真了。的确,您应该避免重复代码,因为它会使您的代码更难阅读和维护。但是循环是控制语句,不需要避免。它类似于 if 语句,尽管您会在代码中多次使用它们,但您不会将 if 放入额外的方法中。

不过,如果您真的想这样做,您可以为 for 循环内的每个代码块创建一个 Runnable,并创建一个如下所示的方法:

public void loop(Runnable runnable) {
for (int row = 0; row < rows; row++) {
for (int col = 0; col < columns; col++) {
runnable.run();
}
}
}

然后您可以将您想要的 Runnable 传递给该方法(您可能还需要以某种方式将参数传递给 runnable)。有关更多信息,请参见例如this post on SO .

关于java - 如何重构多个函数中的重复循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19961533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com