在大型Java项目上使用noweb

时间:2020-03-06 14:54:45  来源:igfitidea点击:

有没有人在一个大型Java项目上使用过noweb literate编程工具,在该项目中必须在不同的子目录中生成几个源代码文件?我们如何使用noweb进行管理?是否有任何资源和/或者最佳实践?

解决方案

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

另外,对于Java而言,实际上不需要精简编程,因为最初对严格顺序的需求并不存在,这促使Knuth编写工具以适当的顺序将代码片段组合在一起。精通编程的最终好处,就是能够编写有关代码的散文,也可以通过Javadoc获得,它使我们可以将所有内容都放入注释中。

对我来说,对Java进行扫盲编程没有任何好处,只有麻烦(可以想象得到IDE支持)。

我们是否正在考虑任何特殊原因?

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

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

noweb使我们可以重新排序和(真正的胜利)重用代码片段,我认为javac无法理解。

我同意,由于大多数人都希望我们将使用javadoc,因此我们可能在流中游刃有余地使用noweb。