浮现设计可以自上而下,也可以[自下而上][1]。自上而下可以很好地避免过度设计,但根据我[过往][2]的[经验][3],这样提取的函数往往在概念上不够清晰。我在解罗马数字时也是先从个位数开始,而当我做到十位数时,我发现,这里存在两个子问题一个是数码转换,另一个是digits的拆分,这样的问题分解也不需要预先设计的。
我这里另一个尝试是编写正交的测试,我把要解的问题划分为[无关][4]的子问题,而且每组测试之间也没有什么联系。而自上而下设计能够提取函数,但测试是很难再拆成正交的了。这样就很容易导致score测试里面也去测spare的逻辑,to-roman测试又要覆盖digits的逻辑,这就造成最终的测试数量不必要的多和不够正交。在实际项目中,这样的测试维护成本就会高。
新的尝试和值得继续探讨的