敏捷软件开发:原则、模式与实践 一次编程实践 保龄球记分代码
2018-08-09 23:19
811 查看
//类Score package com.java.bowlingscore; public class Scorer { public void addThrow(int pins){ itsThrows[itsCurrentThrow++]=pins; } public int scoreForFrame(int theFrame){ int score = 0; ball = 0; for(int currentFrame=0;currentFrame<theFrame; currentFrame++){ if(strike()){ score +=10 + nextTwoBallsForStrike(); ball++; }else if(spare()){ score+=10+nextBallForSpare(); ball+=2; }else{ score +=twoBallsInFrame(); ball+=2; } } return score; } private boolean strike(){ return itsThrows[ball]==10; } private boolean spare() { return (itsThrows[ball]+itsThrows[ball+1]==10); } private int nextTwoBallsForStrike(){ return itsThrows[ball+1]+itsThrows[ball+2]; } private int nextBallForSpare(){ return itsThrows[ball+2]; } private int twoBallsInFrame(){ return itsThrows[ball]+itsThrows[ball+1]; } private int ball; private int[] itsThrows = new int[21]; private int itsCurrentThrow=0; }类Game
package com.java.bowlingscore; public class Game { public int score(){ return scoreForFrame(itsCurrentFrame); } public int getCurrentFrame(){ return itsCurrentThrow; } public void add(int pins){ itsScorer.addThrow(pins); adjustCurrentFrame(pins); } private void adjustCurrentFrame(int pins) { if(lastBallinFrame(pins)){ advanceFrame(); }else{ firstThrowInFrame = false; } } private boolean lastBallinFrame(int pins) { return strike(pins)||(!firstThrowInFrame); } private boolean strike(int pins) { return (firstThrowInFrame&&pins==10); } private void advanceFrame() { itsCurrentFrame = Math.min(10, itsCurrentFrame+1); } public int scoreForFrame(int theFrame){ return itsScorer.scoreForFrame(theFrame); } private Scorer itsScorer = new Scorer(); private boolean firstThrowInFrame=true; private int itsCurrentFrame=1; private int itsCurrentThrow=0; }
晚上看着书一步一步敲出的,在代码重构方面学习到了不少,明天自己试着写一个.
相关文章推荐
- 《敏捷软件开发-原则、模式与实践》-第六章 一次编程实践
- 【敏捷软件开发:原则、模式与实践】之代码重构
- 对《敏捷软件开发:原则、模式与实践》中保龄球程序重构的一些思考
- 《敏捷软件开发-原则、模式与实践》-第一章 敏捷实践
- 敏捷软件开发-原则、模式与实践 (一)
- 单一职责原则(SRP)------《敏捷软件开发:原则、模式与实践》 (二)
- 敏捷软件开发:原则、模式与实践——第4章 测试
- 《敏捷软件开发-原则、模式与实践》-第三章 计划
- 《敏捷软件开发:原则、模式与实践》 前三章读书笔记 --概念和原则
- 敏捷软件开发:原则、模式与实践(全)笔记
- 《敏捷软件开发-原则、模式与实践》-第十章 Liskov替换原则(LSP)
- 面向对象的设计原则【敏捷软件开发 原则、模式与实践】里面摘录
- 《敏捷软件开发-原则、模式与实践》-第十一章 依赖倒置原则(DIP)
- 《敏捷软件开发 ——原则、模式、与实践》学习笔记(1)
- 《敏捷软件开发:原则、模式与实践》 前三章读书笔记 -- 实践
- 敏捷软件开发:原则、模式与实践——第10章 LSP:Liskov替换原则
- 敏捷软件开发:原则、模式与实践——第11章 DIP:依赖倒置原则
- 读后感--敏捷软件开发:原则、模式与实践
- 敏捷软件开发原则,模式与实践(c#)读书笔记(1)-重构
- 敏捷软件开发:原则,模式与实践》学习总结《三》