在 emacs 中,标记包命名空间的典型方法是选择一个(最好是短的)前缀应用于与包相关的所有符号;为了表明一个函数被认为是“仅供内部使用”并且不应该直接在包之外使用,最常见的约定似乎是prefix--functionname
and,或者当一个函数需要一个非常简单的子函数时,例如
prefix-functionname-1
.
但是,我也经常需要某种“子包”,例如,当一个包包含几个我已拆分为不重叠子功能的公共函数时。是否有约定
mypkg-list-all
mypkg-list-all--filter-list
mypkg-list-all--fontify-buffer
mypkg-list-all-public-subfunction
或者
mypkg--list-all-filter-list
mypkg--list-all-fontify-buffer
mypkg-list-all
mypkg-list-all-public-subfunction
?
直觉上我发现第一个版本更好,因为--
这里也充当一种“子包”分隔符,并将最密切相关的函数组合在完成缓冲区中。可悲的是,它导致内部函数列在同一层次结构级别的公共函数之前,这让我质疑该约定。
对此是否有任何约定,或者只是“每个人都想要”?
此外,在许多情况下,特别是当函数的“完全限定”名称变得冗长时,单词和包分隔符之间缺乏区别会让人感觉有点问题。我个人发现自己使用命名约定,如
mypkg-view-mode
mypkg-view-mode:mouse-action
mypkg-view-mode:keyboard-action
所以我想知道子组分隔符是否有比单个连字符更好的约定-
。