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

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.

主站蜘蛛池模板: 汉寿县| 辽宁省| 宁乡县| 邓州市| 合水县| 大庆市| 罗定市| 南雄市| 墨脱县| 通州区| 屏东县| 德格县| 乐安县| 吉林省| 邯郸市| 酉阳| 离岛区| 乐至县| 光山县| 延长县| 长泰县| 西吉县| 恩施市| 招远市| 鄯善县| 辉南县| 宿松县| 白朗县| 阿鲁科尔沁旗| 徐州市| 开远市| 二连浩特市| 玉林市| 扎囊县| 定襄县| 岱山县| 扶绥县| 万山特区| 获嘉县| 资中县| 都匀市|