c – 为什么方法应该返回一个新实例,而不是修改实例本身?
发布时间:2020-12-16 10:04:46 所属栏目:百科 来源:网络整理
导读:假设我有一个Vector3类,它包含一个normalize()方法.该方法是否应该返回一个新的Vector3,或者修改它被调用的Vector3实例(因此返回对它自己的引用(Vector3)?)有哪些情况会比另一个更优先?性能怎么样? 解决方法 答案取决于你班级的设计. 对于可变类,rotate应
假设我有一个Vector3类,它包含一个normalize()方法.该方法是否应该返回一个新的Vector3,或者修改它被调用的Vector3实例(因此返回对它自己的引用(Vector3&)?)有哪些情况会比另一个更优先?性能怎么样?
解决方法
答案取决于你班级的设计.
对于可变类,rotate应该旋转向量本身.这被认为更有效,并且在大对象的情况下,它允许您避免在向量中包含许多项目时复制大量数据. 另一方面,不可变类必须只返回新对象,因为它们不能自己变异.这增加了一些开销,但它有很多优点,特别是当必须同时使用对象时. 常见的命名约定是使用动词来改变操作,如 myVector.rotate(angle); myVector.scale(factor); 返回新对象的操作应以past participles命名,如 auto newVector = myVector.rotated(angle).scaled(factor); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |