→ eva19452002: 光是變數命名就可以出一本書來討論了,也真的有出書 09/11 16:04
十分同意;有不少很棒的資料、前人留下的智慧結晶,論述「命名」的各種原則與
優點。
我希望這系列的文章能提供「方法、工具、零件、指引」,能幫助母語非英文的讀
者更近一步去掌握那些前人留下的智慧結晶。 :)
推 summerleaves: 優文 09/11 16:22
推 DCTmaybe: push 09/11 16:26
→ Domos: 不可數名詞呢?如data, info 09/11 17:46
很有趣的問題,請看下面的回文。 :)
推 Tiguru: 推 09/11 18:17
推 goldie: 優文,推 09/11 22:04
推 Ouranos: 推推! 謝謝分享~ 09/11 23:09
謝謝各位的欣賞 :)
---
> → Domos: 不可數名詞呢?如data, info
推 BlazarArc: 推 這種真的頭很痛 像上面說的 data 複數 XD 09/12 03:09
以 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
→ eva19452002: 請問大大你怎麼看微軟所推出的匈牙利命名法? 09/12 07:50
我的看法是,「匈牙利命名法」是一種工具;每種工具有適合它的舞台、時空背景
。
若回到 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
推 FRAXIS: 那 vector of vector, set of set 要怎麼命名? 09/12 21:59
很有趣的問題,請看下面的回文
推 jasonwung: 推 09/12 22:20
推 TWkobe: 推 很實用 09/13 00:08
謝謝 :)
---
> 推 FRAXIS: 那 vector of vector, set of set 要怎麼命名?
推 wulouise: nested verctor or set...不要寫這種資料結構 09/13 09:23
推 wulouise: 應該用alias/typedef把內層定義有意義的名稱,比方vecto 09/13 09:28
→ wulouise: r<point>定義成polygon, vector<polygon> 09/13 09:28
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
推 wulouise: 感謝原po xd 建議不要有多層資料結構 除非就是x維矩陣 09/13 16:08
不客氣 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:24