【问题标题】:Why drop macros as much as possible? [closed]为什么要尽可能地放弃宏? [关闭]
【发布时间】:2010-11-02 19:49:42
【问题描述】:

不做宏有什么关系?或者尝试避免使用宏有什么用?

我最近看到一些帖子告诉我要放慢宏的使用速度:DSL!=macros,用函数而不是宏重写代码,开始研究从宏切换到函数...

但是有什么关系呢?你认为宏会统治世界而你不希望这样吗?

宏有什么问题?为什么要降低他们的使用率?它们不应该是一种扩展语言的方法吗?

【问题讨论】:

  • 正如 Steve Yegge 所说:“宏就像拥有这些强大的创可贴,当你想要的不是一开始就受伤时。”
  • 重点不是放弃它们,而是不要过度使用它们。

标签: macros clojure


【解决方案1】:

我认为函数优于宏的主要论据是它们在运行时不能作为第一类函数使用,这限制了您使用各种强大的函数式编程技术的灵活性。

我个人认为宏仍然是一个非常有用的编程工具如果您适当地使用它们 - 即使您能够在编译时进行复杂的代码转换,否则会产生高运行时成本或需要大量不必要的样板代码。

【讨论】:

  • 这正是重点:适当地使用它们。没有人告诉你避免使用宏,而是尽可能地避免使用宏
  • +1 表示“它们不能作为一流的函数使用”,因为我不知道这一点,这是避免它们的真正好理由
【解决方案2】:

Christophe Grand 在 clojure-conj 的演讲很好地涵盖了这一点:http://vrac.cgrand.net/DSL.pdf

希望视频很快就会发布。

【讨论】:

    【解决方案3】:

    尽可能多地删除宏:

    • 无需重复代码
    • 重复一个模式,
    • 写不清楚的代码,
    • 或者正如 mikera 指出的那样,在运行时进行 显着 计算,而这本来可以在编译时完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多