有没有办法重构这些 if 语句?

r0l*_*lie 2 java refactoring if-statement conditional-statements

只是想知道是否有办法重构下面的代码?我是 Java 新手,并试图拥有 DRY 代码 - 我写的下面但似乎有很多条件要检查

void printDirection() {
  if (yDirection > 0) {
    if (xDirection < 0) {
      println("Travelling South-West");
    } else {
      println("Travelling South-East");
    }
  } else if (yDirection < 0) {
    if (xDirection <0) {
      println("Travelling North-West");
    } else {
      println("Travelling North-East");
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助!

khe*_*ood 7

您可以单独评估北/南和东/西条件,并将方向粘贴到您的消息中。

System.out.printf("Travelling %s-%s%n", (yDirection < 0 ? "North" : "South"),
                  (xDirection < 0 ? "West" : "East"));
Run Code Online (Sandbox Code Playgroud)

我从您问题中的代码中假设您只关心这四个互补方向(不是正北、正东、静止等)。

  • 更好的是,可以使用枚举来编码“北、南、西、东”。 (2认同)