【问题标题】:Why do we still need generated code?为什么我们仍然需要生成的代码?
【发布时间】:2010-02-14 22:18:47
【问题描述】:

我见过很多生成存根应用程序的框架,例如 Ruby on Rails,其中大部分代码用于业务领域逻辑,但为什么我们仍然生成代码。图书馆不是更好吗?

【问题讨论】:

    标签: code-generation


    【解决方案1】:

    代码生成有合理和不合理的情况。然而,正确的代码生成可以带来以下好处:

    1. 最佳运行时代码 -- 库在运行时处理内容,而您可以通过在生成期间分析代码结构来消除许多运行时机制。
    2. 消除了重复工作引入的错误。
    3. 更好地理解您的代码,生成通常会导致更高级别的“模型”;其中模型用于表示需要生成的内容。
    4. 减少 LOC - 数千行可导致数百万行输出代码。

    【讨论】:

    • 我完全同意。我认为当有人想要为每个场景编写所有内容时,就会出现问题。用它来让你达到 80% 的分数,然后做剩下的!
    【解决方案2】:

    库将包含可在许多应用程序中按原样使用的通用函数或类。这些框架确实包含代码库。

    生成的代码负责您无论如何都需要自己编写的脚手架。由于其中大部分都是非常标准的,因此可以生成它,目的是您修改您想要的部分。

    【讨论】:

    • 脚手架不是我所说的生成代码,因为无论如何它都必须编写,就像在 Rails 中一样。
    • @Zubair 我正在考虑 struts 中的动作类。这些可以生成,但您自己填写详细信息。
    • 好的,有道理。我认为脚手架是生成代码唯一可接受的答案,你同意吗?
    【解决方案3】:

    使用像 LINQ 这样的技术,我发现(几乎)不需要像 NHibernate 这样的框架和类似的解决方案。当性能是一个真正的问题时,生成的存根应用程序可能比依赖于反射等技术的技术更快。

    生成代码的另一个好处是它是经过编译的,因此在运行时不太可能导致错误。

    【讨论】:

    • 上次我查了一下,NHibernate 没有生成一行代码。 Linq To Nhibernate 确实存在。所以你的第一条评论是空的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多