Kata-One:超级市场定价
如下文章摘自: http://codekata.pragprog.com/2007/01/code_kata_one_s.html
这个kata源于DFW Practioners会议的讨论。问题非常简单:超级市场商品定价
超级市场有一些东西的价格非常简单:这罐豆价格$0.65。其他的一些价格则非常复杂,例如:
1. 一美元3个(那么如果我买4个或5个,价格应该是多少?)
2. $1.99/磅 (那4盎司要花多少钱?)
3. 买二赠一(那第三个要花钱吗?)
这个kata不需要进行编码。这个练习主要是体验代表钱或价格不同的模型,以便足够灵活地处理这些价格机制,并且在一般情况下通常也是可用的(在结账,库存管理,订单录入,等等),花点时间考虑一下的几个问题:
1. 存在部分的钱吗?(也就是非整数的面额)
2. 什么时候进行四舍五入的舍入?
3. 如何保持定价决定的审计(你需要吗?)?
4. 花费和价格是同一类东西吗?
5. 如果100罐一架的商品使用“buy two,get one free”,你如何估计存货?
这是一个完美的淋浴时间的kata,但是要小心。有些问题还是有很多细节的。我认为它可能要花费几周的沐浴时间才能考虑清楚所有的可能情况。
目标:
这个kata的目标是练习实验模型的宽松的风格。尽可能多地寻找不同的方法解决这些问题。考虑每一个的代价平衡。要探索这些模型,最好的技术是什么?重新记录他们?如何可以验证一个模型是合理的?
附录:
Code Kata是什么?
作为一个组,软件开发者并没有足够的练习。我们的学习大多数时间发生在工作上,这也意味着我们的错误多数是发生在工作中。其他的创造性的职业练习:艺术家拿画盘,音乐家演奏技术片段,诗人不断地重写作品。在空手道中,目标是学习spar或fight,学生时间大部分在学习和修正基础的动作。更加正式的练习被称为kata。
为了帮助开发者从联系中获得同样的好处,这里集合了一系列的code kata:简单的编制的练习,可以让我们在没有产品环境压力下体验和学习。做这些kata的建议:
1. 找一个不会被打断的时间和地点
2. 集中注意力关注kata的关键要素
3. 记住在做出决策时看一看反馈
4. 如果有帮助,将你的进程进行记录
5. 与其他的开发人员进行讨论,但是首先要完成kata
在这些kata中没有正确或错误的答案:益处源于过程,而不是结果。
自己的解答:
------Andy @ 2013-06-21