- 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.
- HornetQ Messaging Developer’s Guide
- 劍指Offer(專項突破版):數(shù)據(jù)結(jié)構(gòu)與算法名企面試題精講
- Apache Hive Essentials
- ASP.NET動態(tài)網(wǎng)頁設(shè)計教程(第三版)
- C語言程序設(shè)計教程
- Swift Playgrounds少兒趣編程
- Unity 2018 Shaders and Effects Cookbook
- 基于SpringBoot實現(xiàn):Java分布式中間件開發(fā)入門與實戰(zhàn)
- 新印象:解構(gòu)UI界面設(shè)計
- Arduino Wearable Projects
- Mastering Adobe Captivate 7
- Software-Defined Networking with OpenFlow(Second Edition)
- 深入理解Java虛擬機:JVM高級特性與最佳實踐
- Android初級應(yīng)用開發(fā)
- Kotlin語言實例精解