有啥理由这不是冗余代码吗?

Posted

技术标签:

【中文标题】有啥理由这不是冗余代码吗?【英文标题】:Is there any reason this isn't redundant code?有什么理由这不是冗余代码吗? 【发布时间】:2010-06-15 19:36:51 【问题描述】:

我在一些现有的代码库中遇到了这段代码:

double rad = ComputeCurviness();
double off = Math.Abs(rad);
if (rad < 0) off = -off;

似乎基本上只是让off 等于rad。这些变量稍后在代码中可互换使用。有什么理由留下这段代码吗?

【问题讨论】:

不,但是double offdouble rad 很棒。 ...突然间,我的头好痛。 off 可能存在,以防rad 不计算! 在声称它是 100% 之前,我的倾向是检查异常值(NaN、+/-Infinity、MaxValue、MinValue)。我找不到任何损坏的案例,但我没有仔细检查。 【参考方案1】:

如果rad 为-0.0,off 将为+0.0。您必须检查代码以查看这是否真的会有所作为。两者在计算和比较上是等价的,但是-0.0是负数,如果你足够努力就可以检测到。

【讨论】:

谁是如此令人沮丧以至于连 都必须被表达为否定的? +1 Ack,我在考虑异常值时忘记检查 +/- 0。不错的收获。我发布了示例代码来区分 +/- 0 以响应另一个问题:***.com/questions/1043816/…

以上是关于有啥理由这不是冗余代码吗?的主要内容,如果未能解决你的问题,请参考以下文章

hadoop中存储文件系统hdfs的冗余机制是怎么进行的?有啥特点?

cppcheck 为“使用”语句报告“冗余代码:找到以数字常量开头的语句”

Windows 98冗余版与其它版本有啥不同

使用 if(1 || !Foo()) 有啥理由吗?

有啥理由不放弃“var”吗?

如何在每个方法中引用数据库连接而不是冗余[重复]