[TOC] > Sat Apr 24 2021 05:32:52 GMT+0800 (GMT+08:00) 为什么要说这个,因为默认情况下,WPS JS宏只认 function 。这意味一切都得放在 function 内处理。 你可能会有很多个 function。这并没什么不妥,问题在于: 1. 你写的宏,录制的宏都会出现宏列表和表格的公式备选项中,不注意就会出现同名污染,稍不注意你就忘记哪个宏是干嘛的(是自定义函数、是宏、还是供其他函数调用的普通函数) 试试下面的代码你就知道问题有多严重: ```js function TEXT(str,before){ if(/\,/.test(str)){ let stringSplit = str.split(',') return `${before}${stringSplit[0]},${before}${stringSplit[1]}` }else{ return "" } } ``` 如果你想把`TEXT()`当UDF使用,那么很不幸,用不上。想用得改名字或者通过其他途径。 > 不过,应该极少有人干吧 但一定有人会这么干: ```js function a (){} function t (){} function test (){} function test1 (){} function foo (){} function a1 (){} ``` > 典型的下一秒就忘记写啥、干嘛用的命名 ## 建议 1. 能藏起来的藏起来,不想暴露到宏列表和函数备选列表的都藏起来(参考:【全局隐藏函数名(仅 WPS )】) 2. 语义化命名,可以加上些分类的前缀: * macros 宏;`m_xxx`、`_m_xxx`; * function 函数: `fn_xxx`、`_f_xxx`; * UDF 自定义函数(在表格中用于公式):`udf_xxx`、`u_xxx` * 如果可以,建议把工作表名和作用区域都加上。`_m_Value2FirShtA1()` 3. > 只是建议,安你习惯的来就好。*为了防止在输入公式时自己写的函数名跑出来,我一律用 `_` 开头。* 4. 直接上中文吧,就很哇塞。*要不是嫌切换输入法麻烦,我也想这么干。*