假设我有一个Image类,我想在图像上提供一些操作,比如缩放,旋转等.我想为每个操作提供两种类型的函数.一个修改对象而另一个修改不对象.在Ruby中,有些函数以!并指出这个将修改参数.
由于在C++/Java中不允许这样做,因此最佳命名约定是什么.例如,你如何命名img.scale()的Mutating和non-mutating版本?
谢谢
Jam*_*lis 10
一种选择是Scale用于变异版本和ScaleCopy非变异版本,因为它返回原始副本以及对副本执行的操作.
另一种选择是使非变异版本成为非成员函数.例如,
Image Scale(Image im, double scale_factor) {
im.Scale(scale_factor);
return im;
}
Run Code Online (Sandbox Code Playgroud)
我倾向于非成员方法,因为它减少了类中成员函数的数量.引用Herb Sutter的Monoliths Unstrung,"在可能的情况下,更喜欢将函数写成非成员非朋友."
| 归档时间: |
|
| 查看次数: |
722 次 |
| 最近记录: |