---
# System prepended metadata

title: 命名規格
tags: [CSIE]

---

---
date: May 24, 2022
id: 2022-05-001
tags: program
---
# 命名規格

對於電腦來說，變數名稱的好壞並不重要。但對於programer來說, 變數命名習慣將影響整個程式的可讀性及可維護性。

**命名習慣的好壞可由以下2點判斷:**
- 可讀性
- 一致性
<br>

## 可讀性

一般以該函數、變數的功能命名, 常見的作法有:

**駝峰式命名法 (Camel Case)**
第一個字母為小寫，之後每一個單字的開頭為大寫，不包含空格。例如:
- userName
- fileName

**Snake Case 命名法**
單字皆為小寫，單字以底線_分離。例如:

- user_name
- file_name

**Pascal 命名法 (Pascal Case)**
跟 Camel Case 類似，只是第一個字要大寫。例如:

- UserName
- ileName

**Kebab Case 命名法**
跟Snake Case類似，單字以減號-分離。例如:

- user-name
- file-name

其中又以 Camel Case 和 Snake Case 為較多人採用的命名方式，擇一使用即可。
<font color=#0000FF>筆者的習慣是採用camel case, 且多單字的狀況下以"物件->處理描述->備註"的順序命名</font>
<br>

## 一致性

一致性是指必須要用相同的規則命名整個程式的變數，可以是合作的工程師口頭約定也可以是一份 code style 文件。

如果採用了駝峰式就必須一直使用駝峰式，如果將使用者名稱命名成userName 就不要在中途改成 accountName 或只剩下 user。

---

## 變數命名參考手冊

1. 不要使用長度超過50字元的變數
太長的變數會使程式碼可讀性降低，在清楚表達的前提下，名稱越短越好。
2. 變數的組成應為多個形容詞、名詞組成，避免使用單一動詞當作變數，如create = 1。
3. 區分單複數
例如: user是單數，users、userArray、userList、userCollection是複數。
4. 不要加入無意義的前綴及不使用無意義的單字，data、temp、value、等干擾詞，若是遍及整份程式碼，會掩蓋了具有意義的單字。
例如: m_name，這寫法通常代表一個 class 下的成員變數(member variable) name，一個class底下的 name 只可能是成員變數，使用 name 即可。
5. 使用可以發音的單字，在溝通時若選用難以發音的單字，就會增加溝通的難度。
6. 若要使用無意義的單字或是單個字母如: i, j, data 等，要確保變數的作用域在短行數的程式碼內，如 for loop 或一個 if block，當變數的作用域越廣則須越長的名稱清楚地描述該變數的意義，名稱的長度應與作用域範圍大小成正比。
7. 使用有意義的英文單字而不是類似中文拼音的方式或是自創的單字
例如 biaoGe(中文拼音的表格), 如果要採用縮寫, 必須是公認的, 否則就應該採用全寫。
8. 當進行開發時，如果有更適合的變數名稱，就去更改他，不要忌諱隨時改名, 但要避免無意義的變更名字
例如: 使用了 user 中間就不要換成 member。
