- Test-Driven Java Development(Second Edition)
- Alex Garcia Viktor Farcic
- 211字
- 2021-06-24 18:31:53
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.
- Learning Neo4j
- JavaScript高效圖形編程
- Java 開發從入門到精通(第2版)
- 零基礎學Scratch少兒編程:小學課本中的Scratch創意編程
- Vue.js快跑:構建觸手可及的高性能Web應用
- Getting Started with PowerShell
- 單片機應用與調試項目教程(C語言版)
- Learning FuelPHP for Effective PHP Development
- 前端HTML+CSS修煉之道(視頻同步+直播)
- Python從入門到精通(第3版)
- Node.js從入門到精通
- Angular Design Patterns
- 寫給青少年的人工智能(Python版·微課視頻版)
- C# 7 and .NET Core 2.0 Blueprints
- Mobile Test Automation with Appium