理解'行为'和方法的放置

时间:2015-02-05 18:02:44

标签: java methods standards

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

背景信息:零售环境中的产品在不在销售场所时会被分配一个位置。将该位置视为具有行和列的分隔书架,如下所示:

enter image description here

程序必须执行的操作是将产品添加到某个位置。例如将红色星分配到上图中的位置10/2/3。我的问题是,这是工人,垃圾箱还是产品的“行为/方法”?当你从执行的角度思考时,你如何决定哪个班级?工作人员可以放置产品......产品可以放置 ...并且垃圾箱可以接收。它似乎可以在所有3中实现。

我的想法是告诉我,我应该在bin级别实现这个,因为bin应该最终负责放入它的内容。例如,当它收到存储项目的请求时,它确保它不存储不正确的产品或非产品。明白我的意思?

产品可能负责检查自身以确保其正确,甚至工人确保其具有合适的产品?有些东西告诉我,也许应该有一种超级形式的验证,然后每一种都实现它自己的版本?

也许我没有正确地思考这个问题。你觉得怎么样?我是在简化吗?简化下?这种事情或最佳实践是否有规则?

1 个答案:

答案 0 :(得分:3)

真正的答案是"它取决于"。我想很多开发人员都很早就开始挣扎。

它还取决于不断变化的要求。你的第一个解决方案最初可能会有很多意义,但是在你实现新功能的2年后就没有意义了。

我最好的建议是购买(或借用)Martin Fowler的重构书籍,并在(我相信)第一章中阅读他的电影租赁示例。他展示了一个简单的例子,以及由于需求的变化,他如何随着时间的推移重构它。 (他琐碎的例子展示了你表达的一些相同的担忧。租赁班,电影班或客户班级应该处理哪些要求。)你不仅应该阅读他的例子,你应该在你自己的IDE中进行。而且你应该尝试自己动手来看看你提出的相同变化要求。

这可能会让您了解最初需要担心的事项以及如何随着时间的推移调整代码。你会犯错误,并学会识别"难闻的气味"在你的代码中。这将在未来为您的设计决策提供信息。这本书也将帮助你解决你已经拥有的那些难闻的气味。

这是一个链接:http://refactoring.com