CL-FAD - defsystem中的冗余?

时间:2014-04-04 12:38:52

标签: lisp common-lisp asdf

我开始关注Edi Weitz的 CL-FAD 以获得一些好的编码实践。在查看cl-fad.asd时,有一件事引起了我的注意。在defsystem Weitz使用:serial t,如果我根据docs正确理解,则指示 ASDF 按照出现的顺序包含:components。在我看来,这应该使:depends-on在这种情况下变得多余。 Weitz是否有理由包括:depends-on,或者只是一个疏忽?

这里是defsystem部分(最新的Github克隆):

(asdf:defsystem #:cl-fad
  :version "0.7.2"
  :description "Portable pathname library"
  :serial t
  :components ((:file "packages")
               #+:cormanlisp (:file "corman")
               #+:openmcl (:file "openmcl")
               (:file "fad")
               (:file "path" :depends-on ("fad"))
               (:file "temporary-files" :depends-on ("fad")))
  :depends-on (#+sbcl :sb-posix :bordeaux-threads :alexandria))

(asdf:defsystem #:cl-fad-test
  :version "0.7.2"
  :serial t
  :components ((:file "packages.test")
               (:file "fad.test" :depends-on ("packages.test"))
               (:file "temporary-files.test" :depends-on ("packages.test")))
  :depends-on (:cl-fad :unit-test :cl-ppcre))

2 个答案:

答案 0 :(得分:3)

朋友不要让朋友使用cl-fad。

cl-fad是任何类型的“最佳实践”的错误地方。这是一个快速而肮脏的不那么便携的可移植层。

改用UIOP。

答案 1 :(得分:2)

有可能同时执行串行和依赖都会产生冲突,即由on-depends定义的非循环图与组件序列给出的排序不兼容。我怀疑,但谁知道,如果asdf实际上检查了那个。

当然,这是多余的。但是,多余并不一定是坏事。除了序列之外,说明on-depends可能会为读者提供有关代码结构的信息。

开发人员可能会偶尔注释掉序列号以获得随之而来的好处。