1
cloveryume 2014-07-29 18:22:40 +08:00 1
可以试试do{} while(0), goto 换成break。
|
2
liberize OP @cloveryume 不错,也是个好方法,但如果只在这三种里面选呢?
|
4
sivacohan 2014-07-29 20:12:57 +08:00 via Android 1
如果只向下跳跃。goto也是可以接受的。
|
5
baoyexi 2014-07-29 20:19:44 +08:00 1
看的懂就好。方便维护代码的人理解为优先。
|
6
vixvix 2014-07-30 00:09:33 +08:00 1
throwing exception的开销蛮大的,所以goto还是有意义的。
|
7
Ricepig 2014-07-30 01:04:04 +08:00 1
性能选goto
或许可以考虑使用函数指针实现伪函数式编程 |
8
gateswong 2014-07-30 04:30:19 +08:00 1
以前写命令行主循环时经常会这样写:
int main() { init(); int op; goto input; while(op != EXIT) { // Do things input: input_value(op); } } 跳过第一个循环的前半部份,直接输入数据 这样如果有很多输入的内容的话可以省下来好几行代码 |
9
c742435 2014-07-30 08:39:37 +08:00 1
我个人偏向于goto和函数。这里使用goto意义足够清晰,所以使用goto尚可接受。个人不喜欢在正常情况下使用异常。
另外如果可能的话,拆分函数以及整理思路使用较为清晰的if嵌套可能更符合我的风格。 |
10
bombless 2014-07-30 08:56:05 +08:00 1
异常是什么情况?
如果异常的话是上层代码处理了,问题是上层代码知道怎么处理么… 要么意思是把函数体用一个try-catch代替么。那就脱离异常的本意了… 我倾向于如果可以用raii处理资源回收就用raii,这样比较C++。 用一个函数来收尾的话这个函数的参数会不会很多?感觉不太现实。 |
11
williamx 2014-07-30 11:40:19 +08:00
不推荐用 do while(0)和异常,前者从定义了语法,后者让事情(调试)变得复杂。
考虑代码的可读性,可以直接用函数,但是如果函数 foo 合适的话,最好的处理方法是返回一个错误,然后在外面判断 foo 的返回值再调用清理函数进行清理————如果反复用到很多次,可以再多封装一个函数。 |
12
dong3580 2014-07-30 11:49:30 +08:00
不要用多了goto,这样多了让别人很难看懂的。
|