我经常发现自己在If-Else链的所有分支的末尾重复一些代码:
示例:
if (cond1) {
// [...] code 1
// repeated code
} else if (cond2) {
// [...] code 2
// repeated code
} else if (cond3) {
// [...] code 3
// repeated code
}
在这里沿着DRY principle号公路走最好的方法是什么?
我想到了以下几点:
- 把重复的代码放在一个函数中:你仍然需要在每个分支中重复调用这个函数.
- 在If-Else链之后有一个新的If条件(所有先前条件的大"或"):您需要重复前面的条件.
- 为什么没有为此而存在的东西呢?我希望在If-Else链之后可以使用一个关键字,对于异常来说,有点像
finally
.只有当前面的条件之一被证明为真时,它才会执行代码:
if (cond1) {
// [...] code 1
} else if (cond2) {
// [...] code 2
} else if (cond3) {
// [...] code 3
} wrapup {
// repeated code
}
如何在代码中解决此问题?
Note:这个问题被贴上了C
语言的标签,但我也很感兴趣地看到其他编程语言的解决方案可能对这种程序流/路径有很好的构造.