作者AmosYang (泛用人型编码器)
看板Soft_Job
标题[心得][英文] 如何命名「删除」功能
时间Fri Jul 31 18:08:38 2020
「删除(delete)」是资料处理 CRUD 四大基本项目之一。
这篇文章收录了几个与「删除」有关的程式设计常用字,以及回答读者相关问题。
* 如何命名「删除」功能?
* Clear / Empty / Delete / Remove
* 有什麽不一样?
* Google 简报
https://bit.ly/2XazA2P
* Facebook 相簿
https://bit.ly/2EsPmj9
* GitHub 讨论
https://bit.ly/321ResR
# 先说结论
* 在实作後端时,「清除资料容器所有内容物」,使用 clear 。
* 在设计前端时,「清除容器内容物」,使用 clear 、 empty 都可以。
* 在实作後端时,「(从容器)移除物件」,使用 remove 。
* 「删除物件」,使用 delete 、 remove 都可以。
---
请试试看将以下「删除、清除」等词对应到英文。(本文末有参考答案)
1. 清除文字栏
2. 清空购物车
3. 删除文字栏中第三行字
4. 移除购物车中第三项货品
如果这对你来说很容易,可以到《程式英文》 GitHub 讨论区
https://bit.ly/321ResR
看看有没有更有趣的题目,或提出你在写程式时遇到的英文问题;这能帮助我把这
个知识库整理得更完善。谢谢 :)
---
# 从有到无
用来表达「删除」动作的字可略分为两大类:
* 清除「容器、区域、空间」的内容物
* clear, empty
* 消灭或移除物件
* delete, remove
这篇文章将会探讨以上两组动词,以及回答读者提问:
* clear vs. clean
* delete vs. erase
* cancel vs. dismiss
---
# 清除容器内容物: Clear vs. Empty
* clear 意指「清除某区域中的(障碍)物件」。
例如,影剧中医生电击急救病人时会大喊 "Clear!" 来要求其它人「清场、让开
、离远一点」。
* empty 意指「清空某容器的内容物」。
例如,电影《瞒天过海:13王牌》中 Al Pacino 演的角色大吼
"Everyone in this room! Empty your pockets! Now!"
「房间里的每个人!掏空清出你口袋里的东西来!现在马上!」
易言之,作为动词,
* clear 偏向於「清场」;「场」可以是实体区域,或着是资料容器。
* empty 强调「清空(实体)容器的内容物」
* 例如「口袋」、电商网站的「购物车」
## clear 的应用实例
* .NET 与 Java 采用 clear 作为「清空容器」 [1] 的方法动词。
* C++ Standard Library 采用 clear 作为「清空容器」 [7] 的方法动词。
* 《微软 PowerShell 动词表》 [2] 推荐使用 clear 作为「清空容器」的动词。
## empty 的应用实例
* .NET 采用 empty 作为「取得空的容器、字串、 Guid 、等等」 [3][9][10]
的方法动词、成员名字。
* C++ Standard Library 采用 empty 作为「测试此容器是否为空的」 [6] 函式名字。
---
在实作後端时,我推荐使用 clear 来表达「清空资料容器」的动作。
在设计前端时,例如,电商网站、 webmail 介面, clear 与 empty 都可以用来
表达「清空购物车」、「清空垃圾筒」的动作,而 empty 会比 clear 更能强调「
清空」这个动作。
---
# 消灭或移除物件: Delete vs. Remove
* delete 意指「删除」,把东西从存在变成消灭。
* remove 意指「移除」,也可以表达「删除」。
## delete 的应用实例
* Facebook 删除文章
* Twitter 删除文章
* HTTP 动词之一
* C++ 销毁物件(释放记忆体)
* Windows 删除档案
* SQL 删除资料
* .NET 与 Java 用 delete 作为「删除档案」 [4] 的方法动词
## remove 的应用实例
* 《微软 PowerShell 动词表》 [2] 推荐使用 remove 表达「从容器移除物件」
的动作
* .NET 与 Java 采用 remove 作为「从容器移除物件」 [5] 的方法动词
* Facebook 「从好友建议名单移除某帐号」
* Linux 删除档案
## 互相替代性
* remove 多半可以用来取代 delete 表达「删除」的意思
* 例如在 Linux 上删除档案的 `rm` 指令
* 但 delete 多半无法取代 remove 表达「(从容器)移除物件」的意思
---
# 读者问题: Clear vs. Clean
* clear 偏向「清场」的意思。
* clean 意指「清洁、去除污垢」的意思。
假设这样的情景:「桌上散着书本纸张」,而我们会用「杂乱」来形容这桌子。
这时候, clear 与 clean 都可以表达「清扫整理」的意思。
再假设另一个情景:「桌上满是汤水油污」,而我们会用「肮脏」来形容这桌子。
这时候,就适合用 clean ,而不适合用 clear 。
写作程式时,就「清空容器」来说,例如「清空房间里的怪物」, clear 会比
clean 更适合。
另外,有时候会用 clear 或 clean 这个字来表达「初始化记忆体区块」这个动作
,然而,「初始化」用 initialize 表达会更适合。
---
# 读者问题: Delete vs. Erase
* delete 的原意是「画记、画线杠掉想消除的文字」
* 例如, HTML 的 `<del>` 标签
* erase 的原意是「以擦、抹消除文字」。
在现代数位世界里,
* 在与人沟通时, delete 与 erase 都可以表达「删除资料、档案」。
* 在写程式时,多半用 delete 表达「删除资料、物件、档案」。
* C++ Standard Library Vector 采用 erase 来表达「删除容器中的物件」 [8]
的函式动词。
* 可能是为了避免与 C++ 关键字 delete 冲突。
* 在「抹除储存媒体资料」时(例如:磁带),用 erase 。
---
# 读者问题: Cancel vs. Dismiss (前端设计)
在前端设计的情景下,
## Cancel 「取消」
* 适用於「让使用者选择停止、放弃正要进行的动作」
* 例如:「是否要将此文章发布出去?」
* Cancel (取消)
* OK (确认)
## Dismiss 「废弃某想法 / 屏除、遣散某人」
* 适用於「让使用者打发掉提示、提醒、警告、错误讯息」
* 例如:「__首家线上赌场上线啦!」
* Dismiss (朕知道了)
---
# 结语
每个人都是从零开始学起的。 :)
有任何写程式时遇到的英文问题,欢迎推文留言。
或到《程式英文》讨论区提问:
* GitHub:
https://bit.ly/321ResR
* Facebook:
https://bit.ly/2EsPmj9
这可以帮助我把这知识库整理得更完善,谢谢 :)
---
# *参考* 答案
1. clear
2. empty
3. delete
4. remove
---
[1]:
https://docs.microsoft.com/en-us/dotnet/api/system.collections.objectmodel.collection-1.clear?view=netcore-3.1
[2]:
https://docs.microsoft.com/en-us/powershell/scripting/developer/cmdlet/approved-verbs-for-windows-powershell-commands?view=powershell-7
[3]:
https://docs.microsoft.com/en-us/dotnet/api/system.linq.enumerable.empty?view=netcore-3.1
[4]:
https://docs.microsoft.com/en-us/dotnet/api/system.io.file.delete?view=netcore-3.1
[5]:
https://docs.microsoft.com/en-us/dotnet/api/system.collections.objectmodel.collection-1.remove?view=netcore-3.1
[6]:
https://docs.microsoft.com/en-us/cpp/standard-library/vector-class?view=vs-2019#empty
[7]:
https://docs.microsoft.com/en-us/cpp/standard-library/vector-class?view=vs-2019#clear
[8]:
https://docs.microsoft.com/en-us/cpp/standard-library/vector-class?view=vs-2019#erase
[9]:
https://docs.microsoft.com/en-us/dotnet/api/system.string.empty?view=netcore-3.1
[10]:
https://docs.microsoft.com/en-us/dotnet/api/system.guid.empty?view=netcore-3.1
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 136.56.13.184 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1596190126.A.449.html
1F:推 nyyn: 受教了 推推 07/31 19:05
2F:推 iceman5566: truncate 表示: 07/31 19:27
3F:推 lairx: 推 07/31 19:28
4F:推 CaptPlanet: 推推 07/31 19:54
5F:→ newversion: 没有wipe吗? 07/31 20:03
6F:→ allenxxx: 川普:我都用fire 07/31 21:03
7F:推 qrtt1: dispose 呢? 07/31 21:11
8F:→ Domos: 我个人都用annihilate 07/31 21:44
9F:推 EntHeEnd: 推 07/31 21:46
10F:推 mathrew: 我都用 getout 07/31 21:56
11F:推 alihue: 我都用 kim 07/31 22:10
12F:推 GGFACE: 我都用kill 07/31 22:17
13F:推 naestnecniv: 那purge勒 07/31 23:59
14F:推 FY4: 推 08/01 00:35
15F:→ aoisama: drop table users 08/01 01:07
16F:推 FatSquirrel: 我都用Nuke 08/01 01:38
17F:推 Bencrie: free release destroy 08/01 02:05
18F:推 KOD: 推推 08/01 09:49
19F:推 mybluesky: 赞 08/01 10:12
20F:推 Esvent: 有时候会用eliminate 08/01 10:12
21F:推 blueskier: 还没看 先推个 08/01 11:11
谢谢各位的欣赏 :)
推文里提到了不少与「删除」有关的字,来整理一下我对这些字的「感觉」:
# 与资料库 / SQL 有关的
* drop
* 多见於「删除资料库物件」的情景
* truncate
* 也有用在其它情景,用来表达「截短」的动作
* 相关字 trim 的动作也是「截短」,但更强调「删除 *多余的* 东西」
# 与资源管理有关的
* 释放资源
* free
* release
* dispose 常指「(妥善)处理掉要销毁的物件」的动作
# 语气更强烈的「删除」
* destroy
* 有时候 delete 的实作方式是所谓 "soft delete", 会有 undelete 还原的选
项;而 destroy 暗示着「不可逆的删除」。
* purge
* 原意是「暴力强制驱离」,可以想成「强制执行 delete 」
# 其它
* kill 常用於「终止 (OS) process (长期、持续运作的流程) 」
* wipe 与 erase 相似:
* 表示「抹除」资料
* 也多常用在「抹除资料储存媒体」的情景
# 相对口语化的用词
* annihilate
* eliminate
* nuke
其它还有
* eradicate
* terminate
* obliterate
* expunge
# 我参不透的梗 XD
* getout
* kim
# 要有霸王色霸气才能用的 XD
* 龙老母 Daenerys Targaryen: Dracarys!
* 川普: You are fired!
※ 编辑: AmosYang (136.56.13.184 美国), 08/01/2020 14:10:11
22F:推 alihue: kim = 金正恩 08/01 14:37
XD
※ 编辑: AmosYang (136.56.13.184 美国), 08/01/2020 14:46:55
23F:→ Vitaceae: 尽量用前人的动词表, 英语能力不适合在这里发挥 08/01 15:30
同意。
愈是在公开、可见度高的
* API 介面
* 使用者介面
* 文件
我会愈倾向使用该领域人员常用的术语。
24F:推 smart0eddie: 但是empty有些是拿来确认容器是否为空 08/01 17:11
25F:→ smart0eddie: 像是c++ std:: vector 08/01 17:11
你说的对。
我的解读是,那不像直接利用 empty 在英文中「清空容器内容」的动词语意;那
比较像是 IsEmpty() 这样「测试此容器是否为空(形容词)」的意思。
而就「清空容器内容物」来说, C++ Standard Library 看来也是用 clear 这个
字。(我猜 clear() 的实作是会去呼叫 erase() )
十分感谢你的提醒,我已编辑我的原文,在上面提到 empty, clear, erase 的章
节都补充了 C++ Standard Library 应用实例,谢谢 :)
26F:推 mychiux413: 请问如果一种是丢到垃圾桶可复原的,一种是完全删除 08/01 17:31
27F:→ mychiux413: ,应该用什麽比较妥当? 08/01 17:31
这要看情景、需求及此功能的使用者习惯的术语。
现代个人电脑使用者大概已经很习惯了「删除(delete)只是 "soft delete", 删掉
的东西还可以从回收筒救回来」这件事。所以不少使用者介面都会特别注明
"permanently delete" 字样来强调其「不可复原性」。
就你描述的情形,或许可以这麽做:
* 提供 hide / show 功能
* 提供 delete 功能
让使用者看到有 hide, delete 两种功能,区分其可复原性、不可复原性。
※ 编辑: AmosYang (136.56.13.184 美国), 08/01/2020 18:47:55
28F:推 yupog2003: 推推 08/01 18:06
谢谢 :)
※ 编辑: AmosYang (136.56.13.184 美国), 08/01/2020 19:51:07
29F:推 ms79392002: 觉得你真的很棒 08/02 01:07
30F:推 siuoly: 推 有学到 08/02 07:34
谢谢 :)
31F:推 csfgsj: 所以说,写程式,国文也要好 08/02 08:21
同意。
目的是沟通,语言是工具,文字是载体。
需要依对象、情景来思考怎麽使用语言及文字。
例如,机器、使用者、团队成员、商业人员「想听的东西」跟「听得懂的东西」不
同。
而随着情景时空改变,就算是「刚写完程式的自己」跟「写完程式两周後的自己」
,「想听的东西」跟「听得懂的东西」也不同 XD
这的确是需要持续练习精进的题目。
32F:推 skizard: 我都用Magic 08/02 08:32
XD
33F:推 hanshsu: prune勒? 08/02 09:43
34F:→ HamalAri: virsh: destroy undefine 08/02 11:53
很有意思,整理一下我的想法:
* prune 与上面推文讨论中提到的 trim 类似,意指「修剪」。
* truncate / trim / prune 与 delete 的差别在於: delete 偏向「整个删除
」,而 truncate / trim / prune 偏向「消除部分」。
* destroy 上面推文讨论有提到,感觉是「语气更强烈」、「(暗示)不可逆」的
删除。
* undefine
我的 *感觉* 是,这像是 set / unset 的组合。
undefine 似乎常与 define 一起出现,而少有单独出现的情形。
※ 编辑: AmosYang (136.56.13.184 美国), 08/02/2020 14:20:03
35F:推 wulouise: undefime好像很少用动词耶,用adj的倒是很多undefined 08/02 20:57
同意。
36F:推 DCTmaybe: Dismiss 08/02 21:07
是的,另外还有 discard, 我的感觉是相对偏向前端设计会使用的字。
※ 编辑: AmosYang (136.56.13.184 美国), 08/02/2020 21:54:37
37F:推 unmolk: 推!很受用 08/03 00:32
38F:→ unmolk: 现在大二,学资结的时候常常看到实作的function是用remove 08/03 00:32
39F:→ unmolk: 或clear常常觉得疑惑,现在终於比较清楚一些了 08/03 00:32
如果有其它让你觉得困惑的单字,请让我知道 (在这里推文、站内信、 Facebook
简讯、 Twitter 简讯都可以) ,这可以帮助我把这方面的知识整理得更完善 :)
* GitHub 讨论区
https://bit.ly/321ResR
* Facebook 相簿
https://bit.ly/2EsPmj9
* Twitter 讨论
https://bit.ly/2D57pM5
40F:推 ian90911: 感谢分享 08/03 10:59
不客气 :)
※ 编辑: AmosYang (136.56.13.184 美国), 08/03/2020 16:35:58
41F:→ APTON: 推!非常感谢 08/04 09:53
不客气 :)
42F:→ APTON: 没想到当初没深度的战文可以引出这麽好的系列文! 08/04 09:53
> 当初没深度的战文
这是指哪个讨论串? :)
我想去看看那讨论串里有没有可以独立出来研究的题目。
※ 编辑: AmosYang (136.56.13.184 美国), 08/04/2020 16:13:53
43F:推 jack42107: 推 08/06 01:47
谢谢 :)
44F:推 CoNsTaR: 我都不用删除,我都直接 YEET!!! 掉 08/07 03:07
XD
※ 编辑: AmosYang (136.56.13.184 美国), 08/08/2020 03:10:54
45F:推 gkkswae: 问 Dracarys适合用在那种程度的清除? 08/08 17:36
当你需要把整个资料中心从地图上消灭的时候? XD
※ 编辑: AmosYang (136.56.13.184 美国), 08/12/2020 07:49:57