我想知道将整个类的实例传递给另一个类或者只是该类的特定属性是否更好。例如,如果我想在类B中的类A的height属性,我只将高度值传递给类B或类的整个实例,并在类B中使用classA.height吗?
我在具有灵活性和传递整个类或封装和传递特定属性之间徘徊。
由于
克里斯
答案 0 :(得分:7)
你逻辑传递的是什么?你是否在逻辑上传递了关于整个人的信息,而且恰好在你只对高度感兴趣的那一刻?或者B 中的操作自然和明确只对高度感兴趣吗?
选择最符合逻辑的内容,即使这意味着您可以获得的信息比您当前使用的信息还要多。
答案 1 :(得分:1)
传递类(或{},即普通旧对象)而不是传递单独值的优点是:
当你开始实现更多的事件调度或消息传递时,我发现第二个原因是最强的。在事件创建A点,在事件A中收集数据和填充数据,调度事件A,B具有事件A的事件监听器,拾取事件A的数据,可能包含数据,然后还需要调度N个事件C,D和E带有一些A数据,可能附加新数据。
现在说你要从事件A的发送点传递一个新的'foo'参数,它将被事件C,D和E拾取。如果你填入事件A的数据是一个类(甚至只是a {},即基础对象)然后您不需要调整事件A或事件C或任何其他侦听器。
在讨论调度事件时,处理事件的重点是,在创建对象的位置与使用和传递对象之间可能存在长距离“距离”。对象(或属性集)越远离其实例化来源(从方法调用到方法调用到填充到调度事件的数据),就越需要注意数据的传递方式。通过保持简单,即传递单个类实例,您只需要专注于正确创建对象并正确使用对象。
答案 2 :(得分:1)
这取决于您的方法的功能以及您希望如何使用它。如果在您的示例中,您所关心的所有方法都是高度,那么只传入高度。尽可能具体,以便明确方法的功能。
请记住,就像好的变量名一样,合理的数据类型也可以提供良好的文档和可读性。