<style> html, body, .ui-content { background-color: #333; color: #ddd; } body > .ui-infobar { display: none; } .ui-view-area > .ui-infobar { display: block; } .markdown-body h1{ color: #9CCEF2; } .markdown-body h2{ color: #B1D6CA; } .markdown-body h3{ color: #F5F6B6; } .markdown-body h4, .markdown-body h5, .markdown-body h6 { color: #ddd; } .markdown-body h1, .markdown-body h2 { border-bottom-color: #ffffff69; } .markdown-body h1 .octicon-link, .markdown-body h2 .octicon-link, .markdown-body h3 .octicon-link, .markdown-body h4 .octicon-link, .markdown-body h5 .octicon-link, .markdown-body h6 .octicon-link { color: #fff; } .markdown-body img { background-color: transparent; } .ui-toc-dropdown .nav>.active:focus>a, .ui-toc-dropdown .nav>.active:hover>a, .ui-toc-dropdown .nav>.active>a { color: white; border-left: 2px solid white; } .expand-toggle:hover, .expand-toggle:focus, .back-to-top:hover, .back-to-top:focus, .go-to-bottom:hover, .go-to-bottom:focus { color: white; } .ui-toc-dropdown { background-color: #333; } .ui-toc-label.btn { background-color: #191919; color: white; } .ui-toc-dropdown .nav>li>a:focus, .ui-toc-dropdown .nav>li>a:hover { color: white; border-left: 1px solid white; } .markdown-body blockquote { color: #bcbcbc; } .markdown-body table tr { background-color: #5f5f5f; } .markdown-body table tr:nth-child(2n) { background-color: #4f4f4f; } .markdown-body code, .markdown-body tt { color: #eee; background-color: rgba(230, 230, 230, 0.36); } a, .open-files-container li.selected a { color: #5EB7E0; } </style> ###### tags: `雜~~瓦魯多~~筆記` # 細說C++變數命名規則 在課程中提到變數宣告,雖然變數的名稱基本上是可以依自己的需求命名,但依舊有一些規則與禁忌。 [TOC] ## 命名基本規則 ### 符號 一般來說,命名時經常使用的字元有以下幾個: * 大寫 `A~Z` * 小寫 `a~z` * 底線 `_` * 數字 `0~9` 要注意的是,就算是一個英文字母 *大小寫不同* ,也會被視為是不同的名稱,因為C++是一種具有 *大小寫敏感性* (case sensitive)的語言。 而以這些字元進行命名時,也有一些應遵守的規則與禁忌。 ### 禁忌 #### 不可使用重複名稱 命名兩變數時,不可使用同一個名稱。 若是兩變數擁有相同名稱,在使用時,編譯器會無法分辨兩個變數,即使兩變數型態不同也會無法識別。 錯誤範例如下: ```cpp= int name; char name; //錯誤,name這名稱已被使用過,不可再次用來命名不同變數 ``` #### 數字不可為第一位 變數名稱雖然可以包含數字,但不可在第一位。 錯誤的範例如下: * `12dd` * `2nd_var` * `5th_arr` 而這些是可使用的名稱: * `num1` * `arr57` * `DP_01` #### 名稱不可與保留字相同 保留字,即為在C++中具有特殊意義的詞,在後續會有詳細列表。 變數命名時應避開保留字,以免編譯器將其誤判為指令。 以下舉幾個常見的例子: * `return` 意思為 *回傳* ,在主程式結尾都會出現。 * `cout` 即為常用的 *輸出* 。 * `int` 、 `char` 這類的 *變數型態名稱* 亦不可使用。 ## 保留字列表 前面提到過的保留字,這裡為各位整理為表格,方便在練習時參考對照使用。 有出現在表格內的字詞,不可用於命名變數。 ### 變數與範圍相關 ![variable_and_range](https://i.imgur.com/ApvK56D.png =600x) ### 修飾詞相關 ![modifier](https://i.imgur.com/CHytbnq.png =600x) ### 流程控制與迴圈相關 ![control_flow](https://i.imgur.com/yWSropS.png =600x) ### 運算子與條件判斷 ![operator](https://i.imgur.com/tDv9MYa.png =600x) ### 物件相關 ![objects](https://i.imgur.com/hWT758u.png =600x) ## 命名習慣 一般來說,命名時會以簡單的命名輔以縮寫,重點在於 *能使人理解該變數用途* 。 良好的命名習慣可以增進寫程式的效率,也能增加程式的可讀性,使程式易於除錯與維護。 ### 字詞分隔 若是名稱有多個英文字詞,可以用底線 `_` 分隔。 如: `upper_case` 、 `array_edge` 或是以大小寫區別各字詞。 如: `UpperCase` 、 `ArrayEdge` ### 縮寫 有些變數名稱過於冗長,這時可以將其適當縮寫。 常用的名稱縮寫如下: `number` -> `num` `string` -> `str` `array` -> `arr` `pointer` -> `ptr` `variable` -> `var` 或是取首字母作為縮寫,如: `dynamic_programming` -> `DP` `fibonacci` -> `F` 當然這些只是本人的小小習慣,若是有更適合自己的一套習慣,那也是很好的,畢竟重點在於易讀與習慣操作。