程式碼規範----名字(把資訊裝入名字中、選擇不被誤解的名字)
一、把資訊裝入名字中
1.選擇專業的詞
例1:使用getPage getName getData而不是單單是get這種空洞的詞,更深來說可以用fetch()、download()這種詞更好。
例2:
class BinaryTree{
int size();
}這裡的size就是不明確的,沒有承載很多資訊。我們需要更專業的詞比如height();nodeNum();等
例3:
class Thread{
void stop();
}對於stop我們也可以用更專業的詞講其具體化:比如pause() 、kill()、resume()
例4:找到更有表現力的詞
比如對於傳送send ,我們在不同情況下也可以使用不同的的詞去更有表現力的表達。
在向下分發的時候可以使用dispatch,分配可以使用distibute,還有deliver,route等同樣都是傳送卻?不同的表達力。
像start也有很多同義詞,create、launch、begin、open等
2.避免泛泛的名字
像tmp retval,除非使用它們有特殊的理由
retval 就是表達一個沒有很多資訊的返回值
tmp這個名字只應用於短期存在且臨時性為其主要存在因素的變數
對於 i,j,k這種可以表示式迭代器的使用,但是如果迭代器引數較多,可以更精確點,比如
if(club[ci].members[mi]==users[ui])
對於空泛名字,不是說不能使用,是要有一個理由。
3.用具體的名字代表抽象的名字
ServerCanStart()就不如CanListenrOnPort好
4.使用字首和字尾來給名字附帶更多的資訊
為名字附帶更多的資訊:
- 帶單位的值
start --start_ms
size--size_mb
limit--max_kbps - 附屬你想表達的其他重要的屬性
html---html_utf8
password----plaintext_password - 匈牙利表示法是一個在微軟廣泛應用的命名系統,它把每個變數的型別資訊都編寫進名字的字首裡,
比如pLast 表達某資料結構最後一個元素的指標p
比如cch 表達一個字元ch的計數count
比如psz表達一個以零結尾zero的字串s的指標p
5.決定名字的長度
名字的長短應該和這個變數如何使用有關係。
- 在小的作用域可以使用短的名字,而如果一個識別符號有較大的作用域,那麼它的名字就要包含足夠的資訊以便含義更清楚。
比如一個變數的作用域在一個方法內,它是允許不用帶上太多資訊的。因為所有的資訊(變數型別,初值等)都很容易被看到,所以可以用很短的名字
而如果定義的m只是一個全域性變數中的類成員,那就不容易讀了。 - 首字母縮略詞和縮寫
BEManager--BackEndManager 對於這種縮寫是會讓人費解的,讓新成員閱讀這種可能會不理解,所以要保證對於縮寫的使用別人的易讀的。
而doc替代document
str代替string 這種就是可以的, - 丟掉沒用的詞
ConvertToString()----ToString()這樣有時名字中的某些詞拿掉也不會損失任何資訊就可以丟掉這種詞
6.利用名字的格式來表達含義
類:名詞,採用大駝峰命名法--所有單詞的第一個字母大寫,儘量避免縮寫。ActivityManager
方法:動詞或動名詞,採用小駝峰命名法,除首單詞外,其餘所有單詞的第一個字母大寫
例如 onCreate()
變數:小駝峰命名法,可把統一的量詞放在結尾處。
常量:下劃線命名法,MIN_WIDTH
二、不會被誤解的名字
不會被誤解的名字是最好的名字,讓閱讀程式碼的人理解本意,不會有其他歧義。
例子1:filter("age<20");這就會讓人誤解,是挑出年齡小於20的還是把小於20的去掉 同樣的還有limit
例子2:clip(text,lenght)---truncate(text,max_chars) length 也是會有歧義的 是位元組數、字元數還是字數。
- 用min和max來表示包含極限 大於等於 少於等於 max_ min_ 是很好的字首
- 用first和last來表示包含的範圍
- 用begin和end來表示包含/排除範圍
- 布林值命名 通常來講:加上像is、has、can、should這樣的詞,可以把布林值變得更明確。
相關文章
- 修改+asm的名字!ASM
- 名字查詢
- 隨機生成使用者資訊(號碼、名字)隨機
- 程式碼質量隨想錄(三)名字好,誤會少
- Laravel 名字的來歷?Laravel
- Git修改分支的名字Git
- Javamail 中附件中文名字亂碼祥解 (轉)JavaAI
- 模板中的名字查詢問題
- 提取檔名字到excel表中Excel
- oracle 11g 修改資料庫名字和例項名字Oracle資料庫
- steam怎麼改名字 steam改名字-118怎麼解決
- 解決Oracle11g中的索引名字亂碼問題Oracle索引
- iOS 快速更改類的名字iOS
- Python的名字繫結Python
- Oracle database的names(名字們)OracleDatabase
- go: 修改應用的名字Go
- 域名字尾有哪些型別?各種域名字尾名的區別型別
- find命令檔名字尾
- 按照名字殺死程式的四種方法
- 程式設計師給小孩取的名字程式設計師
- 怎麼修改MAC電腦名字,三步教你修改MAC電腦的名字Mac
- Linux修改網路卡的名字Linux
- 小議 Common Lisp 的名字Lisp
- linux修改網路卡名字Linux
- 獲取查詢塊名字
- win10怎麼改microsoft名字 win10系統microsoft名字如何改Win10ROS
- javascript如何設定名字輸入不合法JavaScript
- java中相同名字不同返回型別的方法Java型別
- 更改ORACLE資料檔名字的方法Oracle
- 有史以來最出彩的程式語言名字
- Linux 中橫線“-”作為檔名字首Linux
- 簡約簽名字型Motters Typeface
- Linux Ubuntu 修改網路卡名字LinuxUbuntu
- 重新命名資料夾名字
- Shell 根據程式名字找到程式號並kill
- excel批量篩選重複人名 excel怎麼篩選相同的名字Excel
- excel批次篩選重複人名 excel怎麼篩選相同的名字Excel
- C和C++中的名字空間和作用域C++