[心得][英文] 如何命名「集合名詞」數量變數?
本週主題
* 如何命名「集合名詞」數量變數?
* 「集合名詞」「整體」數量變數
* 「集合名詞」「成員個體」數量變數
* 如何命名「回傳值」?
* 能不能用 books 代表書本數量?
* Google 簡報 https://bit.ly/3m9PWDZ
* GitHub 討論 https://bit.ly/321ResR
---
# 如何命名「集合名詞(collective noun)數量變數」?
「集合名詞」是個很有趣的觀念,隨著使用情景不同,集合名詞表達的「整體、個
體」語意也不同,而美式、英式英文對於集合名詞的文法也不同,使得情況更為複
雜;這裡我們將聚焦在「集合名詞數量變數」上,
## 以 team 這個字為例
* 團隊
* team
* teams (複數)
* 團隊數 ← 有多少支隊伍
* teamCount
* numberOfTeams
* 團隊大小 ← 某特定隊伍裡有多少成員
* teamSize
* teamMemberCount
* numberOfTeamMembers
## 以 fleet 這個字為例
* 艦隊
* fleet
* fleets (複數)
* 艦隊數 ← 有多少支艦隊
* fleetCount
* fleetQuantity
* numberOfFleets
* 艦隊大小 ← 某特定艦隊裡有多少船
* fleetSize
* fleetShipCount
* fleetShipQuantity
* numberOfFleetShips
易言之,當把「集合名詞」視為「一體」時,多半可以沿用之前提過的「數量變數
」命名法則 ( https://bit.ly/3elcZGT ) 。
要數「集合名詞」中的「成員個體」時,多半可以用 Size 這個字來代表「成員個
體數」,例如:
* team + size → teamSize
* fleet + size → fleetSize
或著,也可以把「數量變數」命名法則應用在「集合名詞 + 成員個體名詞」上,
例如:
* team + member + count → teamMemberCount
* fleet + ship + quantity → fleetShipQuantity
## 參考資料
*
https://en.wikipedia.org/wiki/Collective_noun#Agreement_in_different_forms_of_English
*
https://en.wikipedia.org/wiki/American_and_British_English_grammatical_differences#Subject-verb_agreement
* https://bit.ly/3elcZGT 如何命名「數量變數」
感謝參與 https://github.com/EngTW/English-for-Programmers/issues/6 討論的
網友。
---
# 如何命名「回傳值」?
以下提供兩個參考選項。
## ret
* 在 1979 年 Intel 8086 的指令集中就有 RET 指令;代表「從程序返回」
( "Return from procedure" )
* 延伸版本
* returnValue
* retVal
## result
* 在 ASP.NET 框架裡,以 IActionResult 等類別代表回傳值
* 特定語意情景的「結果」
* 例如: 答案 answer; (總)和 sum, total; 差 difference; 積 product;
商 quotient; 平均 mean, average
* 或著,在像是 `GetStorageQuota()` 這樣的方法中,傳回 `quota`
* 在 `GetBookTitle()` 這樣的方法中,傳回 `title`
## 參考資料
* https://en.wikipedia.org/wiki/X86_instruction_listings
*
https://docs.microsoft.com/en-us/aspnet/core/web-api/action-return-types?view=aspnetcore-3.1
* https://bit.ly/3a1lDcO ;第 7 頁,「讀者提問:總和 sum vs. total」
感謝參與 https://github.com/EngTW/English-for-Programmers/issues/3 討論
的網友。
---
# 能不能用 books 代表書本數量?
"books" 在語意上是「一堆書 / 不只一本書 / 書的集合(collection) 」。
我傾向於用以下方式表達「書本數量」,語意會更清楚。
* bookCount
* bookQuantity
* numberOfBooks
## 參考資料
* https://bit.ly/3elcZGT 如何命名「數量變數」
感謝參考 https://github.com/EngTW/English-for-Programmers/issues/15 及原
臉書討論串的網友。
---
# 結語
適當的命名可以幫助你的讀者了解你的程式碼的意圖,降低溝通成本,減少誤會的
機率。
歡迎推文留言討論、提問 :)
--
光是變數命名就可以出一本書來討論了,也真的有出書
十分同意;有不少很棒的資料、前人留下的智慧結晶,論述「命名」的各種原則與 優點。 我希望這系列的文章能提供「方法、工具、零件、指引」,能幫助母語非英文的讀 者更近一步去掌握那些前人留下的智慧結晶。 :)
優文
push
不可數名詞呢?如data, info
很有趣的問題,請看下面的回文。 :)
推
優文,推
推推! 謝謝分享~
謝謝各位的欣賞 :) ---
> → Domos: 不可數名詞呢?如data, info推 這種真的頭很痛 像上面說的 data 複數 XD
以 data 為例,我想到兩種情形: # "data" 另有其物 例如說 * dataFile 資料檔案 * dataPoint 資料點 * dataStream 資料流 而 file, point, stream 可以用 "count" 來數,就變成 * dataFileCount ← 有多少個資料檔案 * dataPointCount ← 有多少個資料點 * dataStreamCount ← 有多少個資料流 還可以有其它的 "data" 物件,例如 * dataEntry 資料條目 * dataCell 資料格 等等。 # 視 "data" 為一個整體 那就可能是 * dataLength 資料長度 (暗示著這資料是像是 array, list 這樣的結構) * dataSize 資料大小 (佔據的儲存空間) 也可以寫成 * dataInMegabytes 以 MB 計的資料量 --- 如果有其它的情形,請讓我知道,我來看看要怎麼用英文表達出來 :)
※ 編輯: AmosYang (136.56.13.184 美國), 09/12/2020 04:02:24請問大大你怎麼看微軟所推出的匈牙利命名法?
我的看法是,「匈牙利命名法」是一種工具;每種工具有適合它的舞台、時空背景 。 若回到 1970, 1980 年代,我可以想像匈牙利命名法有它的好處。 來到 2020 年代,我會覺得我們有比匈牙利命名法更方便的工具。 匈牙利命名法 (又分成系統、應用兩個層面) 在技術上的優缺點,多年來已經累積 了相當透徹的討論,可以參考這個: *
https://zh.wikipedia.org/zh-tw/%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%95※ 編輯: AmosYang (136.56.13.184 美國), 09/12/2020 18:54:10
那 vector of vector, set of set 要怎麼命名?
很有趣的問題,請看下面的回文
推
推 很實用
謝謝 :) ---
> 推 FRAXIS: 那 vector of vector, set of set 要怎麼命名?nested verctor or set...不要寫這種資料結構
應該用alias/typedef把內層定義有意義的名稱,比方vecto
r<point>定義成polygon, vector<polygon>
wulouise 給了很棒的例子,幫它排版一下: * vector<
vector<point>> * vector<
polygon> 我是從這兩個方向去想: * 「就這個程式的情境而言,什麼是實用的、有意義的?」 * 「如何與讀者大腦中既有的知識連結?」 例如說,假設現在是在測試「編譯器處理泛型的功能」,那麼, * setOfSets * setsInSet 這樣的名字就因為這個情境而實用、有意義;讀者大概也看得懂。 假設現在在寫 3D 影像相關的東西,那麼, * vectorOfPointVectors * PointVectorVectors 大概就沒有 * vector<polygon> polygons * vector<polygon> polygonVector 來得好。 易言之,我會這樣想:若能把情境也納入考量,會對命名更有幫助 :)
※ 編輯: AmosYang (136.56.13.184 美國), 09/13/2020 10:28:26感謝原po xd 建議不要有多層資料結構 除非就是x維矩陣
不客氣 XD
> 建議不要有多層資料結構 除非就是x維矩陣這讓我想到,我有次需要做到「把一個字串對應到多個字串」,例如, * 輸入 "app" * 輸出 "apple, application, apply" 我就用了個 `HashSet<string, List<string>>` 的資料結構,像這樣 * HashSet<string, List<string>> wordMappings 現在想想,的確可以運用 type aliasing 把程式碼改成像是這樣: * HashSet<string, WordList> wordMappings * HashSet<Word, WordList> wordMappings 很有趣的方向,我要再仔細想想 :)
※ 編輯: AmosYang (136.56.13.184 美國), 09/13/2020 20:18:2487
[問卦] 你對類XX的底線是什麼?餓死抬頭 這就是一個掩耳盜鈴 指鹿為馬的名詞 你就是特別想要或避免什麼 又不能做或得不到48
[問卦] 寫程式要怎麼命名?安安 小弟程式社畜拉 小弟我從小就有命名困難症 玩網遊第一天就是在取名中度過得 最近PTT開放註冊我也因為想不出新唉低所以沒去註冊45
Re: [討論] 仇公主病=仇女??其實要好好定義也沒那麼困難吧 首先定義 A: 台灣女性(台女)的集合 B: 具備某種特性β的台灣女性的集合 然後是假設40
[請益] 變數命名技巧想請益變數命名有什麼技巧嗎,有時候遇到多個單字在一起的變數或method 都不太會命名,我大部分都打上完整的單字,不過都會變得滿長的 如果想要縮寫,又怕縮寫寫不好到時候別人或者自己回過來看還看不出來 還是縮寫有什麼技巧 還請各位前輩提點29
[問卦] 姓隋孩子怎麼命名?阿肥開始寫程式後才發現 命名是門學問啊,還很深 寫程式花最長的時間就是思考如何命名變數 扯遠了 隋棠的孩子好像不姓隋,沒有從母姓16
[請益] 欄位或是變數改名這邊想請問各位前輩系統維護上常常遇到的一個問題 就是程式中的變數或是資料表欄位命名的"變更" 我不確定是不是一開始我的設計的想法就錯了 通常我在設計時,會將使用者的操作"畫面"與系統中的命名盡量保持一致, 討論起來比較有共通的語言,尤其是在一些專有名詞的欄位命名上。8
Re: [情報] F1 2021日本站 Honda冠名確認原文43 菜雞這邊想請問大神版友們 大獎賽(Grand Prix)的命名來由是什麼呀? 大部分的GP是以該國的國民作為命名的依據 像是Chinese, Japanese, Austrian GP2
Re: [新聞] 因「不忍心」參選 張亞中:「中國」是國所 : 在的山林大火故事,闡述想救國、救兩岸的大願,也籲與會的中常委扮演天神,降下大 雨 : 熄滅大火,救國、救黨,「不忍心」就是他參選理由與抱負。 : 對於國民黨內存在的「台灣國民黨」改名聲音,張亞中說,中國國民黨的「中國」就是1
[問卦] 幫忙想一個適合此政策的名詞乳提 台北市長柯文哲今天發佈了確診者在家自主隔離 但這行字太長了 不方便民眾記憶 小弟沒有文采