应该是“设置透明度”还是“设置不透明度”?

我有一个抄自spacemacs的设置透明度函数:

(defun remx/set-transparency (value &optional frame)
  "Set transparency to VALUE for FRAME.
VALUE is a pair of active and inactive transparency values
between 0-100 (where 0 is transparent and 100 is opaque).
If FRAME is nil, it defaults to the selected frame."
  (interactive "nTransparency (0 is transparent - 100 is opaque): ")
  (set-frame-parameter frame 'alpha (cons value value)))

今天我越看越觉得别扭……觉得它应该叫set-opacity……但是此函数还是透明度开启的函数,叫“不透明度”也不合适……

于是我又来问了…… 目前我想到一种解决方法就是……把函数改造成这样,不改名字:

(defun remx/set-transparency (value &optional frame)
  "Set transparency to VALUE for FRAME.
VALUE is a pair of active and inactive transparency values
between 0-100 (where 0 is opaque and 100 is transparent).
If FRAME is nil, it defaults to the selected frame."
  (interactive "nTransparency (0 is opaque - 100 is transparent): ")
  (set-frame-parameter frame 'alpha (cons (- 100 value) (- 100 value))))

……各位觉得我该怎么改?前提是不动这个函数的功能。

真是太闲了。

好比饮料有个指标「甜度」,范围 0~100

你大可以叫它「不甜度」,范围 100~0,但是有必要吗。

1 个赞

我的问题就在于我想让用户设置“透明度”,但是alpha值实际上是“不透明度”。

在 css 当中 alpha / opacity 都是 transparent 的意思,即越大越不透明。我认为这有个好处,就是用户不必纠结到底是在设置「透明度」还是「不透明度」(到底应该「减小」还是「增大」数字),只记住一个规则就好。这本来就是一个事物的两面。

1 个赞

所以我还是应该叫set-alpha或者set-opacity, 而关闭透明度的函数叫disable-transparency?

「度」是中性的,无论「透明度」还是「不透明度」,并没有倾向任何一端。即使一本很薄的书,你也可以用「厚度」来衡量

「设置透明度」和「设置不透明度」是一个意思,只有「增加透明度」和「增加不透明度」,是相反的,关键在于数字。如果大家都习惯0透明~100不透明,你又何必弄个相反的概念。

我只是想问哪个词更能准确的表达这函数里核心代码的意思,我可能需要的是大家的“鱼”,而不是“渔”,我也只想解决 “XY Problem”中的Y。

我现在已经想通了数字不应该相反,但是那个名字呢?当然在交互式调用的时候自然没什么误解(已经在输入语句里写清楚了),但是如果是非交互调用呢?我总感觉会出些误会。

说白了还是强迫症闹的……这函数下面还有个remx/disable-transparency, 我不想让这个函数和它不对称而已。而实际上以前这个函数叫remx/enable-transparency……

我放弃了……就set-opacity了……

(写过css的我觉得)显然是set-opacity更清楚啊。set-transparency我看到还要想想是要我填透明度还是不透明度……