我创建了一些自己的用户包并遇到了名称冲突。
在Java中,命名约定是在包名中使用您的域名: 例如import com.example.somepackage;。
对于常见的lisp包,是否有广泛使用的包命名约定?
此致
罗素
答案 0 :(得分:20)
我使用的约定是使用一个独特的词:salza,skippy,zs3等。我并没有真正尝试与库功能有直接关系。我试图避免其他人可能使用的通用词,如“zlib”或“zip”或“png”。
Edi Weitz使用与Frank Zappa相关的词来命名他的许多包:Hunchentoot,Drakma等。
有些人使用Java风格的org.foo.bar反向域名命名。
所以,直接的答案是否定的,没有一个共同的,商定的约定,每个人都使用。
答案 1 :(得分:7)
您有时会看到一种约定,即通过常规实现但非标准化功能提供精简兼容性包装的包通常称为TRIVIAL-SOMETHING
。
这会产生一些非常精彩的名称:以独立于实现的方式使用*FEATURES*
的库称为TRIVIAL-FEATURES
;更好的是,以标准化方式与垃圾收集器交互的库称为TRIVIAL-GARBAGE
。
答案 2 :(得分:4)
没有一般惯例,但有一些模式:
cl-
为前缀,如cl-gtk2
或cl-ppcre
。虽然有一段时间,当这个前缀被滥用,并且有很多包(例如cl-who
),它们实现了一个独特的功能,但仍然使用它。sb-
),如sb-queue
或lw-compat
。trivial-
为前缀,如trivial-backtrace
或trivial-garbage
s-
前缀,可能代表'符号',如s-xml
,但它很少使用。这些前缀有助于使包的名称唯一,从而简化在网络上查找有关它的信息。
否则没有具体的约定,但一般规则是支持简短,唯一且可能是描述性的名称。出于易于记忆,使用和查找信息的原因。
如果软件包恰好有一个长名称,那么提供一个较短的昵称很方便,因为通常情况下,人们会使用由其名称限定的软件包符号。例如,在我的代码中,我向re
添加了一个昵称cl-ppcre
,它使客户端代码更容易理解和清晰。虽然应该谨慎,但昵称不会引起名称冲突。