假设我有一个Vector3
包含normalize()
方法的类.该方法是否应该返回一个新的Vector3
,或者修改Vector3
它被调用的实例(因此返回对self(Vector3&
)的引用?)有哪些实例优先于另一个?性能怎么样?
答案取决于你班级的设计.
对于可变类,rotate
应该旋转向量本身.这被认为更有效,并且在大对象的情况下,它允许您避免在向量中包含许多项目时复制大量数据.
另一方面,不可变类必须只返回新对象,因为它们不能自己变异.这增加了一些开销,但它有很多优点,特别是当必须同时使用对象时.
常见的命名约定是使用动词来改变操作,如
myVector.rotate(angle);
myVector.scale(factor);
Run Code Online (Sandbox Code Playgroud)
返回新对象的操作应使用过去分词命名,如
auto newVector = myVector.rotated(angle).scaled(factor);
Run Code Online (Sandbox Code Playgroud)