哲学对象/属性参数查询

时间:2010-11-12 14:34:24

标签: coding-style

我正在查看我编写的一些代码,并在思考“我应该将该对象传递给方法还是只传递一些属性?”。

让我解释一下:

此对象有大约15个属性 - 用户输入。然后,我有大约10种方法,使用多达5个这些输入。现在,如果每个方法都有1个参数 - “用户输入对象”,那么界面看起来会更清晰。但是每种方法都不需要所有这些属性。我可以传递每个方法所需的属性。

我问这个问题的事实表明我接受我可能做错了。

讨论......:)

编辑:增加敏锐度:

用户可以在网页上输入有关其房屋和花园的详细信息。门的数量,房间数和其他性质(共15个)。

这些细节作为简单的整数属性存储在“HouseDetails”对象中。

“HouseDetails”的实例被传递到“HouseRequirementsCalculator”中。这个类有10个私有方法,如“计算地毯面积”,“caclulateExtensionPotential”等。

对于我的查询示例,让我们使用“CalculateAreaOfCarpet”方法。

  • 我应该传递“HouseDetails”对象

  • 或者我应该通过“HouseDetails.MainRoomArea,HouseDetails.KitchenArea,HouseDetails.BathroomArea”等

2 个答案:

答案 0 :(得分:0)

根据我上面的回答并与您的修改

相关
  

a)你应该通过“HouseDetails”   对象

其他想法:

更多地考虑你的问题,特别是增加的细节,我想知道你为什么不把这些计算方法作为你的HouseDetails对象的一部分。毕竟,它们只是针对该对象的计算。为什么要创建一个接口和另一个类来分别管理计算?

旧文:

每个方法应该并且将知道它需要引用的传入对​​象的哪个部分才能完成其工作。您不需要/不应该通过在界面中创建细粒度的重载来强制执行此知识。传入的对象是您的模型和合同。

另外,想象一下,如果从此对象添加和删除属性,将会影响多少代码。保持简单。

答案 1 :(得分:0)

传递个人财产 - 在每种情况下都不同 - 似乎相当混乱。我宁愿传递整个物体。

请注意,您没有充分了解自己的情况。也许试着描述一下这个东西的实际用法?具有15个属性的这个对象是什么?是同一个对象或其他一个对象的“10个使用最多5个输入的方法”?

问题编辑后

我绝对应该传递整个对象并在Calculator类中进行必要的计算。

另一方面,您可能会发现Domain Driven Design是一个有吸引力的选择(http://en.wikipedia.org/wiki/Domain-driven_design)。关于这些原则,您可以将计算器中的方法添加到HouseDetails类中。 Domain Driven Design是一种非常好的编写应用程序的风格,只取决于这种方式对你的干净程度。