淘客熙熙

主题:【原创】继续关于swap的讨论 -- 不锈钢破锣

共:💬22 🌺5 新:
全看分页树展 · 主题 跟帖
家园 【原创】补充一点

那为什么现在比较常用的方法还是使用临时变量呢?两个原因,一个是赋值运算比逻辑运算的速度更快;另一个是在编程方面,使用临时变量可读性更高。

更重要的原因,如果a,b是一个复杂的object,后两种做法很可能就不work,因为一般class的design,通常都会实现operator=(),而不一定会实现operator+, operator-,几乎很少会实现XOR operator。

因此第一种做法是上面唯一一个能handle generic case的,同时您也提到了,可读性好,效率也不差(实际上如果a,b是object,效率应该比后两种更好)。

严格说来,后两种做法(不使用临时变量),是违反软件工程的基本原则,因为会使code reusability大幅度降低,也不容易维护。

除了在interview中刻意为难一下Interviewee,实际编程工作中,一般不会用后两种做法。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河