现在,我所做的一切都设法适合单个源文件,而且这个文件非常小。你如何决定拆分成单独文件的数量和内容?
使用Java,可以很容易地确定一个文件中的内容(已经为您做出了决定),但在Lisp中我发现我编写了许多相互构建的小函数,并且很难确定什么,如果有什么应该分开。当我在Lisp中处理更大的项目时,不必重新发明轮子会很好,但我在网上找不到很多关于此的具体信息。
你能否分享一些处理Lisp中较大项目的策略,或者指出一些处理这个问题的资源?
答案 0 :(得分:14)
当您开始编写Lisp程序时,从单个文件开始可能会很有用。一旦代码变得太大(无论是什么),你可以将其拆分。当你正在接近需要组织的事情时,你应该投入一些工作。
一些提示:
有一些工具可以管理源文件依赖项,并提供编译,加载,编译和加载等操作。 ASDF 是一个,但也有其他人。
您需要一个文件来描述依赖关系。将其命名为可以识别。
您可能需要一个文件来定义一个或多个包。
您可能需要在自己的文件中加入特定于实施的功能。
将大量配置数据移至自己的文件
常规实用程序应位于其他文件中
宏应在使用前定义。其他文件依赖于此文件,如果更改了宏定义,则应自动重新编译。
如果逻辑连接,则将功能组合到一个文件中。在绘图程序中:所有绘图功能,所有用户界面命令,将数据保存到文件,打印,......
不要太在意文件大小。 Lisp源文件可能很大。有时候是100k。
开发环境支持在文件中移动。 M-。在符号上找到它的来源。
确保您可以重新加载文件,而无需重新启动整个Lisp。
Common Lisp提供LOAD和COMPILE-FILE作为函数。您可以在自己的文件中使用这些功能。
答案 1 :(得分:6)
见Zach Beane的“Making a small Common Lisp project”。 他在Making a small Lisp project with quickproject and Quicklisp
上发布了更新的帖子答案 2 :(得分:4)
如果您使用Common Lisp,ASDF是指定系统的常用方法。它处理源文件之间的负载顺序依赖性(以及更多)。