Lisp CL-FAD-DEF系统中的冗余?
我开始研究Edi Weitz的CL-FAD来学习一些好的编码实践。当我看着Lisp CL-FAD-DEF系统中的冗余?,lisp,common-lisp,asdf,Lisp,Common Lisp,Asdf,我开始研究Edi Weitz的CL-FAD来学习一些好的编码实践。当我看着cl fad.asd时,有一件事引起了我的注意。在defsystem中,Weitz使用:serial t,如果我根据正确理解,它会指示ASDF按照外观顺序包含:组件。在我看来,这应该使:在这种情况下依赖于是多余的。Weitz之所以包含:取决于,是有原因的,还是只是疏忽 以下是defsystem部分(最新的Github克隆): 朋友不允许朋友使用cl fad cl fad对于任何类型的“最佳实践”来说都是错误的。这是一个快速
cl fad.asd
时,有一件事引起了我的注意。在defsystem
中,Weitz使用:serial t
,如果我根据正确理解,它会指示ASDF按照外观顺序包含:组件。在我看来,这应该使:在这种情况下依赖于是多余的。Weitz之所以包含:取决于,是有原因的,还是只是疏忽
以下是defsystem
部分(最新的Github克隆):
朋友不允许朋友使用cl fad
cl fad对于任何类型的“最佳实践”来说都是错误的。这是一个快速而肮脏的不那么便携的可移植层
改用UIOP。可能同时执行串行和依赖会产生冲突,即依赖定义的非循环图与组件序列给出的顺序不兼容。我怀疑,但谁知道,如果asdf真的检查了
当然,这是多余的。但是,冗余不一定是坏事。除了序列号之外,声明依赖项可能会为读者提供有关代码结构的bit-o-info
开发人员可能偶尔会注释掉序列号,以获得由此带来的好处。你对冗余的看法是正确的。一般来说,我同意,但在这种特殊情况下,很简单:“路径”和“临时文件”取决于“fad”。句号:)如果需要,可以比较源代码,您将看到差异。UIOP支持15种不同的实现。cl fad没有。UIOP支持大量cl fad不支持的角落案例。有些cl fad函数的接口是假的。不管怎样,只要看看代码,你就会明白。
(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))