判断OS类型的function/const怎么命名?

一般我们都会定义一个const/function来判断操作系统类型:

(defconst IS-MAC (eq system-type 'darwin))

类似这种函数/const怎么命名比较好?我现在能看到的有以下几种

Spacemacs:

spacemacs/system-is-mac

doom-emacs:

IS-MAC

还有 @seagle0128 的:

sys/macp

谢谢各位,虽然我的强迫症似乎永远治不好了……

*is-a-mac*

这是purcell的……

是的,后来我就一直在用这个了…

要是有一个Emacs配置传承学,从这个变量的命名可以看出来不少东西啊

自己有统一的规范就好,我用sys/macp这个好多年了,还比较符合emacs规范也就一直用下去了。 Doom那种大写的感觉和Linux不搭,不过内部统一也无妨。

按照Emacs的规范,判断函数确实是单单词后面加p,多单词后面加-p.

问题是很多单词后面加个p真不好看……

而且我有个疑惑,如果是(defconst xxx (eq system-type 'darwin)的形式的话,那个xxx到底算不算predicate method ?

我有在init-const中的几个变量加了p,不算多。

平时写注释的吗

最好的注释是什么呢?

我觉得是没有注释。

对你的问题也一样。

直接用system-type岂不是更好

有时候比较麻烦,需要自己包装下。比如:判断系统是mac,并且在图形界面下而不是终端模式。

还有一个问题……就是写那么一长溜东西很容易写错……

我发现有个挺重要的原因是Emacs Lisp的命名并无什么硬性/成为世界公认标准的规定。

比如如果这是Java的方法名,我就肯定写is-macOS……

至于我现在用的,是macOSp

这有一个社区维护的。

我现在突然偏向Spacemacs的方案,因为我觉得它更能清楚地表达“操作系统是mac”的意思。而macOSp更觉得像是“这是 Mac 吗?”的意思

这两个不是一个意思么

……很明显不是一个意思好吧……

你看,从软件层面来说,mac == macOS。 而且,你觉得不一样可能是因为表达的方式不一样:一个是陈述,另一个是疑问。

如果都换成疑问:

操作系统是mac吗? <—> 这是mac吗?

如果都换成陈述:

操作系统是mac <—> 这是mac

我感觉是一样的。

不是……可能我的表达有误,也可能我是个习惯过度解读的人。

sys/macp – system/mac predicate – 系统/Mac判定

macOSp – macOS predicate – macOS判定

这里含有“是否”的意思。

system-is-mac – 系统-是-mac

这里只有“是”的意思。

而那个变量存储的虽然是boolean,但是就其字面上来说((eq system-type 'darwin))还是“是”更准确点。

我并未纠结于mac还是macOS……而是觉得其他几种如果直译总给人一种不知所云的感觉。虽然其实意译都差不多。

就服你,六个字

然而我又突然想到,如果是function的话,那么sys/macp就合适了。因为此时它是一个动作,而不是状态了。