在大型Java项目中使用noweb

在大型Java项目中使用noweb,java,literate-programming,noweb,Java,Literate Programming,Noweb,有人在大型Java项目中使用过识字编程工具吗?在这个项目中,必须在不同的子目录中生成多个源代码文件?你是如何与noweb合作的?是否有任何资源和/或最佳实践?如果生成的中间代码可以指向原始源文件以允许调试和分析编译器错误,那么识字编程将发挥最佳效果。这通常意味着预处理器支持,而Java不支持 另外,Java确实不需要读写编程,因为对严格顺序的最初需求——正是这种需求促使Knuth编写了一个工具,以适当的顺序将代码片段组合在一起——并不存在。识字编程的最后一个好处,即能够编写关于代码的散文,也可以

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

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

另外,Java确实不需要读写编程,因为对严格顺序的最初需求——正是这种需求促使Knuth编写了一个工具,以适当的顺序将代码片段组合在一起——并不存在。识字编程的最后一个好处,即能够编写关于代码的散文,也可以作为Javadoc使用,它允许您将所有内容作为注释输入

对我来说,读写Java编程没有好处,只有麻烦(想象一下获得IDE支持)


您考虑它的任何特殊原因?

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

<</path/to/file.java>>=
  reallyImportantVariable += 1;
@ %def reallyImportantVariable
=
真正重要的变量+=1;
@%def真正重要的变量
noweb允许您重新排序和(真正的胜利)重用代码片段,我认为javac不会理解


我同意,因为大多数人都希望使用javadoc,所以使用noweb可能是逆流而行。

对于下层选民:我实际上已经用noweb创建了真正的程序。但是,请注意,noweb可以得到增强,以使用与JSP编译器使用的相同机制(在JSR-45-中描述)这将提供与C中的预处理器相同的行为。Java 6中添加的注释处理器也可能有所帮助。