gpt4 book ai didi

coding-style - Emacs lisp 命名空间和内部函数约定

转载 作者:行者123 更新时间:2023-12-03 09:26:44 25 4
gpt4 key购买 nike

在 emacs 中标记包命名空间的典型方法是选择一个(最好是短的)前缀应用于所有与包裹;为了表明一个函数被认为是“内部的仅使用”,不应直接在包装外使用最常见的约定似乎是 prefix--functionname and,或者 when一个函数需要一个非常简单的子函数,例如prefix-functionname-1.

然而,我也经常需要一些“子包”,例如当一个包裹由我分成的几个公共(public)功能组成不重叠的子功能。是否有约定是否喜欢

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

?

直觉上我发现第一个版本更好,因为 -- 这里也起作用作为一种“子包”分隔符和最紧密的分组相关函数一起放在完成缓冲区中。可悲的是它导致内部职能列在公共(public)职能之前相同的层次结构级别,这让我质疑该惯例。

是否有关于此的任何约定,或者只是“每个人都像他们一样想要”?

此外,在许多情况下,特别是当一个函数变得冗长,词与词之间缺乏区分包分隔符感觉有点问题;我个人发现我自己使用像

这样的命名约定
mypkg-view-mode
mypkg-view-mode:mouse-action
mypkg-view-mode:keyboard-action

所以我想知道是否有更好的子组约定比单个连字符 - 分隔符。

最佳答案

冒号作为符号分隔符通常是不鼓励的(它使 load emacs lisp into common lisp 变得更难,并且可能会干扰 future 的 emacs lisp 包系统)。

双破折号(连字符)-- 用于表示the symbol is internal到包裹。

因此目前公认的做法是package-external-symbolpackage--internal-symbol

官方Emacs Lisp Coding Conventions page没有详细讲这个问题,只是说明:

You should choose a short word to distinguish your program from other Lisp programs. The names of all global variables, constants, and functions in your program should begin with that chosen prefix. Separate the prefix from the rest of the name with a hyphen, ‘-’. This practice helps avoid name conflicts, since all global variables in Emacs Lisp share the same name space, and all functions share another name space.

关于coding-style - Emacs lisp 命名空间和内部函数约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18983360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com