在大型Java项目上使用noweb

lin*_*lof 5 java noweb literate-programming

有没有人在大型Java项目中使用noweb文字编程工具,必须在不同的子目录中生成多个源代码文件?你是怎么用noweb来管理的?那里有资源和/或最佳实践吗?

Jas*_*ena 5

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

<</path/to/file.java>>=
  reallyImportantVariable += 1;
@ %def reallyImportantVariable
Run Code Online (Sandbox Code Playgroud)

noweb让你重新排序和(真正的胜利)重用代码片段,我不认为javac会理解.

我同意,因为大多数人都希望你使用javadoc,你可能正在游戏中使用noweb.


Tho*_*sen 3

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

此外,文学编程对于 Java 来说确实不是必需的,因为最初对严格顺序的需求(这正是促使 Knuth 编写一个工具来将片段按适当的顺序放在一起的原因)并不存在。文学编程的最后一个好处,即能够编写有关代码的散文,也可以作为 Javadoc 提供,它允许您将所有内容作为注释放入。

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

您考虑这样做有什么特别的原因吗?