我要设计一个复杂的系统。 我有两种方法:
自上而下:我会设计很多接口(interface)和契约。之后,我将实现这些接口(interface),并编写一个原型(prototype)来验证设计。
自下而上:我会写代码让系统运行起来。之后,我将从实体代码中提取接口(interface)和契约。精炼的界面和契约是我的设计。规则是“让它运行,让它正确”。
什么是更好的方法?在我看来,我会选择Bottom-up。因为Top-down非常难,没有人可以在高抽象层次上设计很多接口(interface),至少对我来说很难。当我编写可靠的实现来验证最初的设计时,有很多不合理的地方迫使我从头开始重新设计。而我使用Bottom-up的时候,我觉得还是挺“安全”的,至少能跑起来。
最佳答案
正如其他人所说,它通常是混合的。在更实际的层面上,以下方法通常会有所帮助:
从自上而下的抽象开始。即,将系统/设计分解为逻辑组件以解决任务。但是不要为这些组件设计精确的最终接口(interface)。递归地进行,直到您到达的某些组件具有“实现可能”的大小(例如,是单个函数/方法/类的大小)
然后,自下而上地浏览生成的组件列表,并开始设计接口(interface)/契约的初稿。
然后,自下而上地浏览生成的组件列表,并开始实现它们。这将使您能够:
立即拥有可运行且可测试的代码(无需等待底层组件实现后进行测试)
您可以根据已完成的较低级别组件的需求,为较高级别组件合成最终版本的接口(interface)/契约。
关于java - 设计复杂系统的两种方法 : Top-down vs Bottom-up,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4969152/