假设我的比较函数 foo
以时间序列为输入,该序列可以是从小到大或者从大到小的一系列时间。
Foo
可以像这样:
Foo(List<double> timestampList) {
if (currentTime > previousMaxValueTimestamp) {
...
} else if (curremtTime > previousMinValueTimestamp) {
...
}
}
上述方法适用于正向序列,但不适用于反向序列。我该如何优雅地编写一个适用于两种类型序列的逻辑呢? 下面是我想要达到的效果,但它重复了大部分代码,这并不是期望的结果。
Foo(List<double> timestampList, boolean isForward) {
if (isForward) {
if (currentTime > previousMaxValueTimestamp) {
...
} else if (curremtTime > previousMinValueTimestamp) {
...
}
} else {
if (currentTime < previousMaxValueTimestamp) {
...
} else if (curremtTime < previousMinValueTimestamp) {
...
}
}
}
我的当前解决方案如下,这种编码风格是否好?
Foo(List<double> timestampList, boolean isForward) {
if ((isForward && currentTime > previousMaxValueTimestamp) || (!isForward && currentTime < previousMaxValueTimestamp)) {
...
} else if ((isForward && curremtTime < previousMinValueTimestamp) || (!isForward && currentTime > previousMaxValueTimestamp)) {
...
}
}