官术网_书友最值得收藏!

Refactoring

While the code that we have done so far fulfills the requirements set by the tests, it looks a bit confusing. If someone read it, it would not be clear as to what the play method does. We should refactor it by moving the code into separate methods. The refactored code will look like the following:

public void play(int x, int y) {
  checkAxis(x);
  checkAxis(y);
  setBox(x, y);
}

private void checkAxis(int axis) {
  if (axis < 1 || axis > 3) {
    throw new RuntimeException("X is outside board");
  }
}

private void setBox(int x, int y) {
  if (board[x - 1][y - 1] != '\0') {
    throw new RuntimeException("Box is occupied");
  } else {
    board[x - 1][y - 1] = 'X';
  }
}

With this refactoring, we did not change the functionality of the play method. It behaves exactly the same as it behaved before, but the new code is a bit more readable. Since we had tests that covered all the existing functionality, there was no fear that we might do something wrong. As long as all tests are passing all the time and refactoring did not introduce any new behavior, it is safe to make changes to the code.

The source code can be found in the 01-exceptions branch of the tdd-java-ch03-tic-tac-toe Git repository at https://bitbucket.org/vfarcic/tdd-java-ch03-tic-tac-toe/branch/01-exceptions.

主站蜘蛛池模板: 锦州市| 禹州市| 宁晋县| 正阳县| 大连市| 吴忠市| 龙岩市| 高阳县| 阳春市| 开江县| 宁安市| 大庆市| 海丰县| 自贡市| 达日县| 桦南县| 崇义县| 南陵县| 兴和县| 五台县| 蓬溪县| 寿光市| 新竹县| 大姚县| 博兴县| 同江市| 饶阳县| 大洼县| 革吉县| 松阳县| 鄂伦春自治旗| 启东市| 清河县| 龙南县| 泰州市| 蒙阴县| 伊春市| 彝良县| 荣昌县| 南投县| 萍乡市|