理解 'behaviors' 和方法的放置

Understanding 'behaviors' and placement of methods

我想更好地了解如何在具有继承性的简单库存管理器程序中构造方法。

上下文:零售环境中的产品在不在销售区时被分配了一个位置。把这个位置想象成一个有行和列的分开的书架,像这样:

程序必须执行的一项操作是将产品添加到某个位置。例如将红星分配到上图中的位置 10/2/3。我的问题是,这是工人、垃圾箱还是产品的 'behavior/method'?当您考虑执行时,您如何决定哪个 class?工人可以放置产品...产品可以放置...并且垃圾箱可以接收.好像3都可以实现。

我想告诉我,我应该在垃圾箱级别实施此操作,因为垃圾箱最终应该负责放置在其中的内容。例如,当它收到存储物品的请求时,它会确保存储的不是不当产品或非产品。明白我的意思了吗?

关于产品可以负责自我检查以确保它是正确的,甚至工人可以确保它有正确的产品的论点呢?有些东西告诉我,也许应该有一种超级形式的验证,然后每个人都实现自己的版本?

也许我没有正确考虑这个问题。你怎么看?我过度简化了吗?在简化?是否有针对此类事情的规则或最佳做法?

真正的答案是"it depends"。我认为许多开发人员很早就为此苦苦挣扎。

这也取决于不断变化的需求。您的第一个解决方案最初可能很有意义,但在 2 年后实现新功能时就没有意义了。

我最好的建议是购买(或借用)Martin Fowler 关于重构的书的副本,并阅读(我相信)第一章中他的 Movie Rental 示例。他展示了一个简单的示例,以及他如何根据不断变化的需求对其进行重构。 (他的简单示例展示了您表达的一些相同的担忧。租赁 class、电影 class 或客户 class 应该满足哪些要求。)您不仅应该阅读他的示例,还应该应该按照您自己的 IDE 进行操作。并且您应该尝试自己进行操作,看看在相同的不断变化的需求下您能得到什么。

这可能会让您开始了解最初需要担心的事情以及如何随着时间的推移调整您的代码。您会犯错并学会识别代码中的 "bad smells"。这将为您将来的设计决策提供信息。这本书还将帮助您解决已经存在的难闻气味。

这里是 link:http://refactoring.com