最近,我在一家公司接受了开发团队的采访。团队使用敏捷+ TDD。代码练习实现了一个视频租赁商店,它生成语句,为客户计算每种类型的视频(新版本、儿童等)的总租金。现有代码使用的对象如下:
代码最初没有编译,因为假定所有者被总线击中了。我就是这样做的:
但是团队说这是浪费时间,因为没有对它的要求,而且UAT测试套件可以工作,是架构决策的唯一指导方针。根本的原因只是为了把定价的特点弄出来,而不是说该怎么做。因此,讨论的重点是为什么要花时间来重构开关语句。
在我的理解中,敏捷方法并不意味着预先设计为零,这种代码气味应该在一开始就被避免。而且,任何单元/UAT测试套件都不会检测到这样的代码气味,否则声纳就不存在查找错误。
在这里,我想问:
发布于 2013-10-19 14:33:45
在现实世界中,关于这个问题有很多种方法。你在问一个非常宽泛的问题,所以我的回答会有点笼统。
发布于 2013-10-19 14:47:49
敏捷过程中的设计最重要的一点是,它必须在流程中完成。首先要做的事情之一是设计,否则你就不知道自己在做什么。但是,该设计不需要很长时间就能产生,并且应该是一个可以通过敏捷过程进行修改的伪品,就像代码一样。别以为你会先得到它。如果需要的话,不要害怕添加到它中,如果太复杂的话,可以重构它。
试着将设计保持在适合一页(或一张幻灯片)的东西上,这样人们就可以理解他们正在做的作品在总体上的位置。当然,这并不能涵盖所有情况,但预先设计以涵盖一切并不是一种敏捷实践;这很自然地遵循了这样一个基本原则,即需求并不都是预先知道的(而真正的设计遵循于需求这一显而易见的观点)。
知道你什么时候有太多了吗?坦白说,你可能已经有太多了。高层次的设计--真正有用的设计--不应该花太长时间,而低层次的设计就是从积压中掉下来的任何东西。(提示:如果你在设计中考虑算法,你几乎肯定已经有太多的细节了。)好吧,除非你正在做一些非常古怪的事情,没有那个特定的算法…是不可能的)
对于团队来说,重要的是他们得到一些东西,并在下一次迭代中与产品所有者检查,以了解需求。与所有敏捷开发一样。(是MVP,请记住,可能需要几次迭代才能到达那里,并且不要害怕在最初的几个回合中使它看起来很好;客户常常认为CSS的应用意味着整个服务都完成了。你知道,我也知道,这不是真的。)
https://softwareengineering.stackexchange.com/questions/214937
复制相似问题