PTT推薦

[心得][英文] 如何命名「數量變數」

看板Soft_Job標題[心得][英文] 如何命名「數量變數」作者
AmosYang
(泛用人型編碼器)
時間推噓49 推:49 噓:0 →:18

「英文」是不少人學寫程式的一個關卡,而「命名」又是電腦科學最難的問題之一
。我正在整理幾個最常見的「如何用英文命名程式裡的某個東西?」的問題與答案
,在此與各位分享目前整理好的第一個題目:

* 如何命名「數量變數」?
* Count / Number / Quantity
* 什麼時候該用哪個字?該怎麼用?

---
* Google 簡報版: https://bit.ly/38OWoKf
* Google 簡報原始檔: https://bit.ly/3elcZGT
* Facebook 相簿版: https://bit.ly/3iNsgDO
* GitHub 討論區: https://bit.ly/321ResR

---
首先,可以試試看命名以下變數(文末有參考答案):

1. 玩家(player)數量
2. 彈藥(ammo)數量
3. 子彈(bullet)質量(mass) (以克(gram)計)
4. 生命值(hit points)

如果這對你來說沒有難度,或許你會有興趣到 GitHub 討論區看看其它我正在整理
的題目: https://bit.ly/321ResR

---
# 命名「數量變數」的方法

1. 辨認變數名詞詞性
* 不可數名詞
* 可數生物
* 可數非生物
2. 對應單字及格式(見後文)
* 可數生物、可數非生物: Count / Number
* 不可數名詞、可數非生物: Quantity

---
# 不可數名詞

## 推薦格式

* 不可數名詞 + In + 單位(複數)

goldInKilograms 黃金(以公斤計)

* 單位(複數) + Of + 不可數名詞

kilogramsOfGold 黃金(以公斤計)

## 其它格式

* 不可數名詞 + Amount : goldAmount 黃金數量

* 不可數名詞 + Quantity : goldQuantity 黃金數量

* amountOf + 不可數名詞 : amountOfGold 黃金數量

* quantityOf + 不可數名詞 : quantityOfGold 黃金數量

這些格式無法清楚表達數量單位,其可讀性在科學或金融計算上並不理想,但在其
它情景或許不是問題(例如,遊戲設計)。

---
# 可數生物

## 推薦格式

* 生物(單數) + Count

studentCount 學生人數

尤其適合為「用來計數的變數」命名

* numberOf + 生物(複數)

numberOfEmployees 員工人數

## 常見問題

* 生物(單數) + Number

在語意上是「號碼」的意思

studentNumber 學生號碼

* countOf + 生物(複數)

在語法上通常不會這樣寫

---
# 可數非生物

## 推薦格式

* 非生物(單數) + Count

bookCount 書本數量

尤其適合為「用來計數的變數」命名

* 非生物(單數) + Quantity

bookQuantity 書本數量

尤其適合用在「貨物」上

* numberOf + 非生物(複數)

numberOfBooks 書本數量

* quantityOf + 非生物(複數)

quantityOfBooks 書本數量

尤其適合用在「貨物」上

## 常見問題

* 非生物(單數) + Number

在語意上是「號碼」的意思

accountNumber 帳戶號碼

* countOf + 非生物(複數)

在語法上通常不會這樣寫

---
# 其它討論

* 有的時候,程式可讀性的確是 *相對地* 沒那麼重要。

* 滿足需求、解決問題、創造價值最重要。

* 提昇程式可讀性的方法不止一種

* 要把程式碼上下文脈絡、使用情景、團隊文化、產業領域也納入考量。

---
相對於「寫作風格」(駝峰式大小寫、蛇式/烤肉串式、等等),我想從另一個角
度,聚焦於「學會用英文表達想法」,

學會用英文提昇程式可讀性。

我很想知道讀者在寫程式時,遇到了怎麼樣的英文表達問題。

我目前有蒐集到一些題目,例如:

* Count / Length / Size, 什麼時候該用哪個字?該怎麼用?
* Copy / Clone / Duplicate
* Sum 與 Total 的差別
* Validate vs. Verify

很歡迎讀者推文(或到 GitHub 討論區 https://bit.ly/321ResR )提出

* 問題
* 建議
* 感想

謝謝。

---
# 練習題 *參考* 答案

1. numberOfPlayers, playerCount
2. quantityOfAmmo, ammoQuantity
3. bulletMassInGrams
4. hitPoints

--

※ PTT 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 136.56.13.184 (美國)
PTT 網址

chuegou07/10 14:56這個有趣

goodseeyou07/10 14:57

sk685207/10 15:10實用

devilkool07/10 15:14實用推

y246810121607/10 15:21

謝謝各位的欣賞 :) 如果在程式寫作上有任何與英文表達有關的問題,請讓我知道 ,這會是「用英文提昇程式可讀性」很棒的研究題材。

vi00024607/10 15:31我喜歡台式英文 bulletWeight remainLife

完全能理解,解決問題優先。 語言能做到優雅當然是好,但最重要的功能還是溝通(人與人的溝通、人與機器的 溝通)。 我開了

https://github.com/EngTW/English-for-Programmers/issues/8

來追蹤 這個題目,謝謝 :)

※ 編輯: AmosYang (136.56.13.184 美國), 07/10/2020 15:56:07

jobintan07/10 15:52niceTutorial, it_is_very_useful.

XD

※ 編輯: AmosYang (136.56.13.184 美國), 07/10/2020 15:57:50

askaleroux07/10 15:58magicNumber // do not erase this

testPtt07/10 16:06基本上不用Quantity 太長

完全能理解,縮寫、簡寫、更短的字、更簡潔的寫法,只要能解決問題,都是好的 。 我開了

https://github.com/EngTW/English-for-Programmers/issues/7

來追蹤 這個題目,謝謝 :)

RedArmy9507/10 16:15

chuegou07/10 16:31#define ZERO 0

unmolk07/10 16:52樓上是殺小xddd

bowin07/10 16:59推 AmosYang 好文!

accessdenied07/10 17:09zero = 0 這個我真的看到! 還有 True = 1, False =

accessdenied07/10 17:09 0

alihue07/10 17:12

sniper282407/10 17:12好文

ben81051407/10 17:27bulletCount

ben81051407/10 17:28沒事 是重量以為是數量

sirius6548207/10 17:40不管啦 通通用xxxNum

bheegrl07/10 17:40ammoQty

我開了

https://github.com/EngTW/English-for-Programmers/issues/7

來追蹤 「縮寫、簡寫」這個題目;謝謝提供這個題目 :)

paulshain0407/10 18:07很讚欸 推一個

Rm07/10 18:09amount跑去哪了

amount 整理在「不可數名詞」的「其它格式」那段。 :) amount 本身當主詞時,常用來描述金錢上的「總金額(total amount)」,我開了

https://github.com/EngTW/English-for-Programmers/issues/9

來追蹤這個題目 ,謝謝 :)

atpx07/10 19:02好文, 不得不推

pttano07/10 19:10我都定arg1,arg2,var1,var2

pttano07/10 19:10我都定arg1,arg2,var1,var2

kokolotl07/10 19:11a1, b1啊~~

pttano07/10 19:12我都定arg1,arg2,var1,var2

pttano07/10 19:13我都定arg1,arg2,var1,var2

pttano07/10 19:14我都定arg1,arg2,var1,var2

infixman07/10 19:19推推

chuegou07/10 19:21樓上重複定義編譯器不給過

dks5021707/10 19:21Cnt

我開了

https://github.com/EngTW/English-for-Programmers/issues/7

來追蹤 「縮寫、簡寫」這個題目;謝謝提供這個題目 :)

yyc121707/10 19:24remove delete erase cancel dismiss

我開了

https://github.com/EngTW/English-for-Programmers/issues/10

來追蹤 這個題目,謝謝 :)

enthos07/10 19:35pn, an, bg, hp \ Forth(Write-only lang.) style.

我開了

https://github.com/EngTW/English-for-Programmers/issues/7

來追蹤 「縮寫、簡寫」這個題目;謝謝 :)

goldflower07/10 19:46看過中國人用拼音寫扣 jin_jia_ki_si

我開了

https://github.com/EngTW/English-for-Programmers/issues/8

來追蹤 這個題目,謝謝 :)

leo591626707/10 19:57多查英文字典吧?有時候直接問英文好的人資XD超好笑

leo591626707/10 19:57,寫程式還會問到人資那邊

gasbomb07/10 19:59上一份工作看到的 氣死https://i.imgur.com/x9GmljV.jpg

我開了

https://github.com/EngTW/English-for-Programmers/issues/8

來追蹤 這個題目,謝謝 :)

jason9092907/10 20:09

Lhmstu07/10 21:00推推

negligence07/10 21:39

invidia07/10 22:13感謝分享

abc092200107/10 22:26感謝分享,命名真的是難題

jasonwung07/10 22:59實用推

labbat07/10 23:10qwertyyuiop

CaptPlanet07/10 23:21

dces421207/10 23:28nr_student

我開了

https://github.com/EngTW/English-for-Programmers/issues/7

來追蹤 「縮寫、簡寫」這個題目;謝謝 :)

OrzOGC07/10 23:46用拼音真的...還有日文拼音的...冏...

我開了

https://github.com/EngTW/English-for-Programmers/issues/8

來追蹤 這個題目,謝謝 :)

Dracarys07/11 00:10foo bar baz

我開了

https://github.com/EngTW/English-for-Programmers/issues/11

來追蹤 "metasyntactic variable" 這個題目,謝謝 :)

Luke372307/11 00:21

※ 編輯: AmosYang (136.56.13.184 美國), 07/11/2020 02:40:00

感謝各位的欣賞與提供題目 orz 如果我漏看了題目,請告訴我,謝謝 :)

※ 編輯: AmosYang (136.56.13.184 美國), 07/11/2020 02:44:32

Bencrie07/11 02:46nr_ 這個是 Linux kernel 的命名

感謝指點 orz

richard0725007/11 03:39先推在看

Ouranos07/11 04:02Amos 必推!!!

※ 編輯: AmosYang (136.56.13.184 美國), 07/11/2020 05:36:24

ben456200207/11 08:32推 獲益良多

joy7658x34807/11 09:45推!命名對新人工程師更是一個問題XD常常會看不懂那

joy7658x34807/11 09:45是啥

NeCool07/11 09:57

coder556607/11 11:34

believe9132607/11 15:08實用推

zxcv86051307/11 16:12推,很怕看到需要通靈的命名

感謝各位的欣賞 :) 如果能想到「很難看懂、需要通靈」的命名案例,請讓我知道;這可以幫助我把這 些資料整理得更完善,謝謝。 在這篇底下推文,或在 GitHub 或 Facebook 留言都可以 :) * GitHub:

https://github.com/EngTW/English-for-Programmers/issues

* Facebook:

https://bit.ly/3iNsgDO

※ 編輯: AmosYang (136.56.13.184 美國), 07/12/2020 04:07:11

補上 Google 簡報原始檔:

https://bit.ly/3elcZGT

※ 編輯: AmosYang (136.56.13.184 美國), 07/12/2020 12:44:21

klandakuei07/12 22:15

visual07/14 18:55

zelt07/17 10:20

a831907/20 14:00有趣又實用

beryah07/26 00:57

謝謝 :)

※ 編輯: AmosYang (136.56.13.184 美國), 08/08/2020 03:09:46

Rmustang02/09 13:21推推推