追求代码质量 - 亲身体验行为驱动开发 - 编程入门网
收到一个新的错误。
清单 17. 另一个错误
仔细阅读清单 17 中的实现可以发现问题:在处理 ArrayList 时,我需要考 虑 0。 清单 18. 通过考虑 0 修复问题
追求代码质量 - 亲身体验行为驱动开发(6)时间:2010-12-12 IBM Andrew Glover栈的逻辑 至此,通过允许传递多个行为方法,我已经实现了 push() 和 pop() 方法。 但是我还没有处理栈的实际内容,这是与多个 push() 和 pop() 相关联的逻辑 ,间或出现一个 peek()。 首先,我将通过 shouldPopSecondPushedValueFirst() 行为确保栈的基本算 法(先进先出)无误。 清单 19. 确保典型的栈逻辑
清单 19 中的代码可以按计划运行,所以我将实现另一个行为方法(在清单 20 中),以确保两次使用 pop() 都能表现出正确的行为。 清单 20. 更深入地查看栈行为
接下来,我要确保 peek() 能按预期运行。正如 Linda 所说,peek() 遵从 和 pop() 相同的规则,但是 “应该保留栈顶的项目”。相应地,我在清单 21 中实现了 shouldLeaveValueOnStackAfterPeep() 方法的行为。 清单 21. 确保 peek 保留栈顶的项目
由于 peek() 还没有定义,因此清单 21 还不能编译。在清单 22 中,我定 义了 peek() 的一个最简单的实现。 清单 22. 当前,peek 是必需的
现在 StackBehavior 类可以编译,但是它仍然不能运行。 清单 23. 返回 null 并不奇怪,对吗?
在逻辑上,peek() 不会从内部集合中移除 项目,它只是传递指向那个项目 的指针。因此,我将对 ArrayList 使用 get() 方法,而不是 remove() 方法, 如清单 24 所示。 清单 24. 不要移除它
追求代码质量 - 亲身体验行为驱动开发(7)时间:2010-12-12 IBM Andrew Glover栈为空的情况 现在重新运行 清单 21 中的行为,结果顺利通过。但是,在这样做的过程中 发现一个问题:如果栈为空,则 peek() 有怎样的行为?如果说栈为空时调用 pop() 会抛出一个异常,那么 peek() 是否也应该如此? Linda 对此没有进行解释,所以,显然我需要自己添加新的行为。在清单 25 中,我为 “当之前没有调用 push() 时调用 peek() 会怎样&rdq |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |