作者AmosYang (泛用人型编码器)
看板Soft_Job
标题[心得][英文] 如何命名「状态」变数
时间Fri Sep 4 11:55:29 2020
本周主周:
* 如何命名「状态」变数?
* State, Status 有什麽不一样?
* 「第N个」要怎麽说?
* Google 简报
https://bit.ly/2GtLobb
* GitHub 讨论
https://bit.ly/321ResR
---
# State
## 语源、语意
* 1200 年代
* 人 / 物的暂时属性、状态
* 状况、情况
* 社会地位
* 13 世纪後期:形、结构的物理形态
* 1530 年代:情绪、心理状态
* 今日:人 / 物在特定时间点的状态
## 案例
* finite-state machine 有限状态机
* state of matter 物质状态(固态、液态、气态)
* 电脑科学:资讯系统、程式的状态;记忆事件历程的功能
* stateful 有状态的
* stateless 无状态的
* .NET Threading `ThreadState`
* Running, Stopped, Suspended
* .NET Data `ConnectionState`
* Closed, Open, Connecting, Executing
## 参考资料
*
https://www.etymonline.com/word/state
*
https://www.lexico.com/definition/state
*
https://www.merriam-webster.com/dictionary/state
*
https://en.wikipedia.org/wiki/State_(computer_science)
*
https://en.wikipedia.org/wiki/Finite-state_machine
*
https://en.wikipedia.org/wiki/State_of_matter
*
https://docs.microsoft.com/en-us/dotnet/api/system.threading.threadstate?view=netcore-3.1
*
https://docs.microsoft.com/en-us/dotnet/api/system.data.connectionstate?view=netcore-3.1
---
# Status
## 语源、语意
* 1670 年代:情况、状况的高峰
* 1791 :人的法律地位
* 1920 :人的职业、社会地位
* 今日:情景、整体脉络的状态
## 案例
* exit status 退出状态
* status bar 状态列
* .NET Net `HttpStatusCode`
* OK, NotFound, InternalServerError
* .NET Threading `TaskStatus`
* Created, Running, Canceled
## 参考资料
*
https://www.etymonline.com/word/status
*
https://www.lexico.com/definition/status
*
https://www.merriam-webster.com/dictionary/status
*
https://en.wikipedia.org/wiki/Exit_status
*
https://en.wikipedia.org/wiki/Status_bar
*
https://docs.microsoft.com/en-us/dotnet/api/system.net.httpstatuscode?view=netcore-3.1
*
https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus?view=netcore-3.1
---
# State, Status 有什麽不一样?
state, status 都能让读者联想到「状态」这个观念,就看你想强调哪一个面向。
* 语源都可追溯至拉丁文的 status :「状态、形态、样子、位置」
*
state 倾向「个体『状态』属性」
* finite-
state machine 有限状态机
*
state of matter 物质形态(固态、液态、气态)
* .NET Connection
State, WebSocket
State, Thread
State
*
status 倾向「就整体脉络的综合判断;事态、情况的『状态』」
* exit
status 退出状态
*
status bar 状态列
* .NET Ftp
StatusCode, Http
StatusCode, Task
Status
例如说,在某个逻辑模型里,可能是这样子界定 state, status :
* 某个运算单元
*
state: { 读资料, 写资料, 解码, 执行指令, 闲置 } ← 此个体当前的状态
*
status: { 忙碌, 闲置 } ← 就整体脉络的综合判断
也就是看写程式的人想要如何定义「个体状态 vs. 整体脉络」。
## 参考资料
*
https://docs.microsoft.com/en-us/dotnet/api/system.data.connectionstate?view=netcore-3.1
*
https://docs.microsoft.com/en-us/dotnet/api/system.net.websockets.websocketstate?view=netcore-3.1
*
https://docs.microsoft.com/en-us/dotnet/api/system.threading.threadstate?view=netcore-3.1
*
https://docs.microsoft.com/en-us/dotnet/api/system.net.ftpstatuscode?view=netcore-3.1
*
https://docs.microsoft.com/en-us/dotnet/api/system.net.httpstatuscode?view=netcore-3.1
*
https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskstatus?view=netcore-3.1
---
# 「第N个」 / 序数 / 个体在群体中的位置、索引
题目出处:
https://github.com/EngTW/English-for-Programmers/issues/53
> 你好,我最近在处理股票资料的api,
> 有一个内容是我想要将资料整理成K线的形式,
> 我的Kbar calss中想要存「属於今天中的第N根Kbar」,这种状况要怎麽命名呢。
> 像是以一根10:00~ 10:15的15分钟k线,8:45开盘,这个变数会存5,代表是今天
> 的第六根K线
要表示个体在群体中的「第N个」,可以用 "ordinal" 这个字,它是
「序数 (ordinal number)」的缩写。
例如 .NET DataColumn 的 `Ordinal` 属性,代表一 DataColumn 物件在其所属的
DataColumnCollection 中的位置(第N个)。
要表示「个体在群体中的位置、索引」,也可以参考以下这些字,选择最符合你想
表达的语意:
* index 索引
* id
* key
* name 名字
* title 标题
## 参考资料
*
https://docs.microsoft.com/en-us/dotnet/api/system.data.datacolumn.ordinal?view=netcore-3.1
感谢参与
https://github.com/EngTW/English-for-Programmers/issues/53 讨论
的网友。
---
# 结语
适当的命名可以帮助你的读者了解你的程式码的意图,降低沟通成本,减少误会的
机率。
这系列文章将继续从语源资料、实用性的角度,探讨《程式英文》字汇的语意、使
用情景,帮助大家提昇程式码的可读性。
欢迎推文留言讨论、提问 :)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 136.56.13.184 (美国)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1599191750.A.773.html
1F:推 jasonwung: 推 09/04 12:18
2F:推 sniper2824: 推个 09/04 12:21
3F:推 ihave3cm: 推起来 09/04 12:47
4F:推 deathlightx: 此系列,必推 09/04 13:14
5F:推 summerleaves: 有看有推 09/04 13:25
6F:推 newhandfun: 推 09/04 13:25
7F:推 qaz0101: 受益良多,必推 09/04 14:42
8F:推 ian90911: 推 09/04 15:19
9F:推 BlazarArc: 推 09/04 16:28
谢谢 :)
10F:推 unmolk: 推!想看property attribution之类的要怎麽用 09/04 17:12
目前有一个题目是关於「属性: attribute vs. property 」,我想知道这与你想
知道的 property, attribution 是同个方向吗?如果不是,能否描述一下你的疑
问? :)
https://github.com/EngTW/English-for-Programmers/issues/25
11F:嘘 B0988698088: 小建议:结论可以放前面吗?上面那些单字个别解说放 09/04 17:41
12F:→ B0988698088: 後面有兴趣的自己会去延伸阅读 09/04 17:41
了解,结论放前面对读者来说比较省时省力。
13F:推 uopsdod: 推 09/04 18:24
14F:推 lairx: 推 09/04 18:47
15F:推 CaptPlanet: 不错勃 有点东西 09/04 19:33
16F:推 jack42107: 推这系列 感谢用心 09/04 20:23
17F:推 Ouranos: 推推! 谢谢分享 :) 09/04 21:11
18F:推 ddoy7: 推 09/04 21:19
谢谢各位的欣赏 :)
※ 编辑: AmosYang (136.56.13.184 美国), 09/04/2020 23:34:14
19F:推 obamina48: 推!受益良多! 09/04 23:39
20F:推 l823qqqqqqqq: 感谢分享,有获得启发 09/04 23:47
谢谢 :)
21F:推 unmolk: 喔对我打错了 是attribute XD 感谢分享! 09/05 00:09
了解 :)
22F:推 CoNsTaR: context, env: 环境状态 09/05 04:46
23F:→ CoNsTaR: 也可以讲一下 has, with, is, at... 也可以命名状态变数 09/05 04:46
谢谢你提供题目 :) 我把它整理成以下项目,能否请你看看与你想的方向是否一致
?谢谢 :)
* 环境状态: context, environment 有什麽不一样?
*
https://github.com/EngTW/English-for-Programmers/issues/56
* 介词: with, at, from, to, in, than, ... 使用情景
*
https://github.com/EngTW/English-for-Programmers/issues/57
* 现在简单式(simple present)的使用情景
*
https://github.com/EngTW/English-for-Programmers/issues/58
* 更多「状态」变数的实例
*
https://github.com/EngTW/English-for-Programmers/issues/59
※ 编辑: AmosYang (136.56.13.184 美国), 09/05/2020 08:53:36
24F:推 ingramchen: 通通用status,state 留给 framework 用 09/05 11:48
很有趣的想法,折衷/经验法则。
※ 编辑: AmosYang (136.56.13.184 美国), 09/06/2020 01:53:41
25F:推 changyuheng: 推 09/06 02:50
谢谢 :)
※ 编辑: AmosYang (136.56.13.184 美国), 09/06/2020 08:00:30
26F:推 alihue: 推 09/06 12:46
谢谢 :)
27F:→ geminitw: 程设英文 09/06 23:27
谢谢你的建议 :)
我对这个也很好奇,就台湾的语文习惯而言,《English for Programmers》怎麽
翻会比较好?
* 直译「程式设计师英文」
* 目前称作「程式英文」
* 乡民 geminitw 推文提案「程设英文」
* 缩写提案「程英」 XD
我当初是以 Google, books.com.tw 的搜寻结果为基准,「程式」似乎是最常用的
词,就先用《程式英文》这个名字;我想知道就乡民的中文语感来说,觉得如何。 :)
※ 编辑: AmosYang (136.56.13.184 美国), 09/07/2020 01:37:07
28F:推 geminitw: Ex:商用英文 程设英文除了变数及函数命名 注解及技术文 09/07 20:10
29F:→ geminitw: 件才是重点 09/07 20:10
我再查了一下,从 Google 得到的数据是
* "程式书": 10900
* "程设书": 64
* "程式课": 33400
* "程设课": 5700
* "程式课程": 107000
* "程设课程": 1400
* "程式训练": 15000
* "程设训练": 284
似乎在「描述 "programming" 这个概念上」,「程式」比「程设」更为通用?
---
> 除了变数及函数命名 注解及技术文件才是重点
十分同意;我还没机会去研究这个,但有个东西叫 "controlled natural language",
可说是「简化了的自然语言」 (*1) ;可用在「针对特定技术领域,方便母语非英
文者沟通」上。
或许适合用来写注解、技术文件。
---
*1: 限定使用相对简单的文法与字汇,例如:
* 把句子写短
* 避免使用代名词
* 使用主动语气
## 参考资料
*
https://en.wikipedia.org/wiki/Controlled_natural_language
*
https://en.wikipedia.org/wiki/Attempto_Controlled_English
30F:推 Tatum0119: 很棒 推 09/07 22:57
31F:推 iwillbehere: 推 09/08 13:57
谢谢 :)
※ 编辑: AmosYang (136.56.13.184 美国), 09/09/2020 20:48:53
32F:推 ygl01181: 推 09/14 07:32
33F:推 NCUcsie105: 推 09/15 08:29
谢谢 :)
※ 编辑: AmosYang (136.56.13.184 美国), 09/18/2020 12:17:29