避免重复代码

避免重复代码,第1张

概述让我们说: switch( choice ) { case A: stmt; do_stmt_related2A; break; case B: stmt; do_stmt_related2B; break; case C: something_different(); ... } 如何避免重复stmt代码? 但是有没 让我们说:
switch( choice ) {  case A:        stmt;     do_stmt_related2A;  break;  case B:     stmt;     do_stmt_related2B;  break;  case C: something_different();   ...  }

如何避免重复stmt代码?

但是有没有解决办法?
gcc扩展标签作为值看起来相当不错的情况.

switch( choice ) {     do {     case A:  ptr = &&A_label;     break;     case B:  ptr = &&B_label;     } while(0);              stmt;              goto *ptr;     case C: ...

有什么技巧可以在ANSI-C中做同样的事情吗?
编辑:当然我已经想到了功能/宏/内联.但还有什么?
这不是关于性能.只是为了教育目的;)

解决方法 为什么你不重构stmt(我假设这是一大块指令,而不是单行)到自己的函数do_stmt()并调用它?就像是:
switch( choice ) {    case A:        do_stmt();        do_stmt_related2A;        break;    case B:        do_stmt();        do_stmt_related2B;        break;    case C: something_different();        ...}

那个gcc的伎俩是真的很可怕.我宁愿在任何一天在这样的怪物上有可读的代码.

你应该总是认为继承你的代码的程序员是一个杀人的疯子谁知道你住的地方:-)

总结

以上是内存溢出为你收集整理的避免重复代码全部内容,希望文章能够帮你解决避免重复代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1254279.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存