COMEFROM控制流程

时间:2011-05-11 08:05:27

标签: language-agnostic programming-languages control-flow comefrom

根据wikipedia COMEFROM流量控制被认为是一个笑话,不可读或彻头彻尾的有害。我想这样的功能在AOP场景中非常有用(即,在没有向方法添加记录器调用的情况下将记录器添加到方法中)。

这种控制结构的非显而易见性的缺点是否超过了潜在的用途?还有其他缺点需要考虑吗?

由于this而提示问这个问题。

2 个答案:

答案 0 :(得分:1)

对于初学者来说,在任何现代语言中都是无用的,因为你需要:

  • 引用从行号跳转的位置,这些是不稳定的。
  • 在代码中放置一个标记或标签,以表示可以跳过的位置,从而破坏不需要执行此操作的任何可能的好处。

此外:

  • 通过检查进行任何类型的调试基本上没用。
  • 除非你保持变量持续存在,否则无法真正捕获它跳转的任何上下文,这就是在寻找麻烦。

更好的想法是:

  • 编写挂钩API。
  • 调用函数!

答案 1 :(得分:0)

就你提到的目的而言,Aspect Oriented Programming(维基百科)似乎是比comefrom更有条理的解决方案。请参阅Motiviation and Basic Concepts(同上)的底部,了解如何在单独的文本单元中将日志记录添加到方法中。

在一种充分动态的语言中,可以使用“环绕”修饰符处理这种方法:

  def do_something
    ...
  end
  log :do_something, "Something got done"

在这个设计的示例中,log宏导致do_something方法被新方法替换,该方法首先调用原始do_something方法,然后将某些内容写入日志。