有没有更好的优雅方法来实现朴素的以下代码(diffYear,A和B是数字):

diffYear = yearA - yearB;

if (diffYear == 0) {
    A = B = 0;
}
else if (diffYear > 0) {
    A = diffYear * -1;
    B = 0;
}
else if (diffYear < 0) {   // obviously one could only write a simple else, this is for the sake of the example
    A = 0;
    B = diffYear;
}

最佳答案

这个实现很好。



经验法则是:是否清楚正在做什么?如果是,则将其保留。

其他实现也是可能的,但是您必须考虑谁将阅读此代码。例如,在一个团队/组织中,大多数开发人员每天都在使用数学,因此,我会编写如下内容使他们看起来更“自然”:

auto neg(int x) { return x < 0 ? x : 0; }
//...
int const A = neg(yearB - yearA);
int const B = neg(yearA - yearB);

10-08 08:18