您如何区分设计决策与实现决策?
举个具体的例子: 我们正在开发一些网络服务,将我们的应用程序与另一个集成 我问的问题之一是——我们是否希望两个应用程序之间的集成通过 异步还是同步?
有人建议这是一个实现问题而不是设计。
我的请求是 - 如果我改变了一些东西而你不需要知道我改变了什么或为什么改变 - 这是实现决定。
但是,如果我改变了什么——这改变了你使用我的服务的方式——这是一个设计决定。
如果我将我的实现从同步更改为异步 - 我猜测它将影响服务的使用方式 - 因此 - 这是一个设计决策而不是实现
例如,无论我选择 XML 进行存储还是数据库 - 只要它不影响其他应用程序 - 它仍然是一个实现选择而不是设计
你同意吗?不同意?想法?
最佳答案
我想您已经知道答案了,老实说,对于大多数实际用途而言,这是一种不必要的语义区分。话虽如此,如果它影响最终用户/消费者,那就是设计,如果不影响,那就是实现。在您的示例中,它将对使用您的服务的任何客户端的设计产生深远影响,因此它当然是设计。
而且没有顺序。在实现开始之前,您实际上无法完成设计,并且盲目地遵循具有高且不必要的实现成本的设计是非常危险的。考虑到您对成本的了解,您可能会选择在实现过程中进行一半的重新设计。
关于web-services - 设计还是实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1888709/