我正在查看我编写的一些代码,并在思考“我应该将该对象传递给方法还是只传递一些属性?”。
让我解释一下:
此对象有大约15个属性 - 用户输入。然后,我有大约10种方法,使用多达5个这些输入。现在,如果每个方法都有1个参数 - “用户输入对象”,那么界面看起来会更清晰。但是每种方法都不需要所有这些属性。我可以传递每个方法所需的属性。
我问这个问题的事实表明我接受我可能做错了。
讨论......:)
编辑:增加敏锐度:
用户可以在网页上输入有关其房屋和花园的详细信息。门的数量,房间数和其他性质(共15个)。
这些细节作为简单的整数属性存储在“HouseDetails”对象中。
“HouseDetails”的实例被传递到“HouseRequirementsCalculator”中。这个类有10个私有方法,如“计算地毯面积”,“caclulateExtensionPotential”等。
对于我的查询示例,让我们使用“CalculateAreaOfCarpet”方法。
我应该传递“HouseDetails”对象
或者我应该通过“HouseDetails.MainRoomArea,HouseDetails.KitchenArea,HouseDetails.BathroomArea”等
答案 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是一种非常好的编写应用程序的风格,只取决于这种方式对你的干净程度。