【问题标题】:Using noweb on a large Java project在大型 Java 项目中使用 noweb
【发布时间】:2008-09-30 07:59:27
【问题描述】:

是否有人在大型 Java 项目中使用过noweb literate 编程工具,其中必须在不同的子目录中生成多个源代码文件?你是如何用 noweb 管理这个的?是否有任何资源和/或最佳实践?

【问题讨论】:

    标签: java literate-programming noweb


    【解决方案1】:

    Noweb 将转储相对于当前工作目录或您指定的绝对路径的文件。只是不要在文件名的末尾使用 * (以避免插入 # 预处理器指令)。我建议使用 %def 和 @ 来显示您定义和使用名称的位置。

    <</path/to/file.java>>=
      reallyImportantVariable += 1;
    @ %def reallyImportantVariable
    

    noweb 让您重新排序和(真正的胜利)重用 sn-ps 代码,我认为 javac 无法理解。

    我同意,由于大多数人都希望您使用 javadoc,因此您可能正在逆流而上使用 noweb。

    【讨论】:

      【解决方案2】:

      如果生成的中间代码可以指向原始源文件以允许调试和分析编译器错误,则文学编程会发挥最佳作用。这通常意味着 Java 不支持的预处理器支持。

      另外,对于 Java 来说,文学编程确实不是必需的,因为最初需要严格的顺序 - 这促使 Knuth 编写了一个工具以将 sn-ps 以适当的顺序放在一起 - 不存在。文学编程的最后一个好处,即能够编写关于代码的散文,也可以作为 Javadoc 获得,它允许您将所有内容都作为 cmets 放入。

      对我来说,为 Java 进行文字编程没有任何好处,只有麻烦(想象一下获得 IDE 支持)。

      您考虑的任何特殊原因?

      【讨论】:

      • 对于反对者:我实际上用 noweb 创建了真正的程序。
      • 但是请注意,可以增强 noweb 以利用与 JSP 编译器使用的相同机制(在 JSR-45 - jcp.org/en/jsr/detail?id=45 中描述),这将提供与 C 中预处理器相同的行为. 此外,Java 6 中添加的注解处理器也可能有所帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 2014-10-08
      • 1970-01-01
      相关资源
      最近更新 更多