我已經創建了一些我自己的用戶軟件包,並且遇到名稱衝突。是否有一個共同的lisp包命名約定?
在Java中,命名約定是在包名中使用您的域名: import com.example.somepackage ;.
常見的lisp軟件包是否有廣泛使用的軟件包命名約定?
問候,
羅素
我已經創建了一些我自己的用戶軟件包,並且遇到名稱衝突。是否有一個共同的lisp包命名約定?
在Java中,命名約定是在包名中使用您的域名: import com.example.somepackage ;.
常見的lisp軟件包是否有廣泛使用的軟件包命名約定?
問候,
羅素
我使用的習慣是使用一個獨特的一句話:salza,跳跳,ZS3,等我真的不嘗試這個圖書館功能有直接的關係。我儘量避免使用其他人可能會使用的通用詞,如「zlib」或「zip」或「png」。
艾迪·韋茨使用弗蘭克澤帕相關的詞來命名他的許多包:Hunchentoot,Drakma等
有些人用Java風格org.foo.bar逆轉域命名。
所以,直接的答案是否定的,沒有一個人人都使用的共同的,公認的約定。
有時您會看到的一個慣例是提供了一個簡單的兼容性包裝而不是常規實現的包,但非標準化的功能通常稱爲TRIVIAL-SOMETHING
。
這導致了一些非常美妙的名字:與*FEATURES*
一起工作的庫以獨立於實現的方式被稱爲TRIVIAL-FEATURES
;更好的是,以標準方式與垃圾收集器交互的庫被稱爲TRIVIAL-GARBAGE
。
有沒有通用的慣例,但也有幾個模式:
cl-
前綴的端口,像cl-gtk2
或cl-ppcre
。雖然有一段時間,當這個前綴被濫用,並且有很多包(例如cl-who
),它們實現了一個獨特的功能,但仍然使用它。sb-
)爲前綴,如sb-queue
或lw-compat
。trivial-
,像trivial-backtrace
或trivial-garbage
s-
前綴,其可以代表「符號」,像s-xml
,但它很少使用。這些前綴有助於使包名稱具有唯一性,從而簡化在網絡上查找有關該包的信息。
否則沒有特定的約定,但一般規則是贊成簡短的,唯一的,可能是描述性的名稱。出於易於記憶,使用和查找信息的原因。
如果軟件包碰巧有一個長名稱,提供一個較短的暱稱很方便,因爲更多的時候,人們會使用符合他們名字的軟件包符號。例如,在我的代碼中,我添加了一個暱稱re
到cl-ppcre
,它使客戶端代碼更容易理解和清晰。儘管應該謹慎使用,以便暱稱不會導致名稱衝突。
感謝您的回答。這證實了我從我用過的幾個軟件包中得到的觀察 - 除了使用Frank Zappa相關的詞:)。 – Russell 2009-11-16 01:03:14
別忘了Drew Crampsie的backronmms,比如線上口語。 – felideon 2009-11-16 18:02:00
我個人不喜歡Lisp的名字。 – 2009-11-17 22:36:41