一个计算机技术爱好者与学习者

0%

怎样给文件、变量和函数命名?

1. 前言

使用user_tool.py还是user_utils.py?使用name还是username?使用user_add还是add_user?使用get_user_by_name还是get_users_by_name?等等等等,在编程活动中,我们经常会产生各种关于命名的纠结。
给文件、函数、变量命名是一件很难的事,但是也是有方法的。本文中,我们就来学习一下文件、变量和函数命名的方法。

参考文档:

2. 命名方法

要领:一看就懂,保持一致。

2.1. 文件

由于Windows, OSX下文件名不区分大小写(linux是区分的),所以命名建议还是以全部小写为主。
连字符可以使用中划线、下划线或者省略,关键是要统一。

目录建议连字符使用中划线,比如: my-project-name。
有复数的情况使用复数命名法,比如: scripts, styles, images和data-modules。
文件建议连字符使用下划线,比如:user_test.py。

2.2. 变量

变量命名常用的有两种方式:
下划线命名法,比如: my_variable
驼峰式命名法,比如: myVariale

python语言建议使用下划线命名法。

2.3. 函数

函数命名常用的有两种方式:
下划线命名法,比如: get_user_by_name
驼峰式命名法,比如: getUserByName

python语言建议使用下划线命名法。不同于变量命名的是,函数名称要使用动词开头,并且尽可能准确。

3. 常用动词表

动词选取要精准。通常来说,动词决定了一个函数要采取什么”动作”。动词取的好,一个函数名字已经成功了80%。

常用动词表:

类别单词
添加/插入/创建/初始化/加载add、append、insert、create、initialize、load
删除/销毁delete、remove、destroy、drop
打开/开始/启动open、start
关闭/停止close、stop
获取/读取/查找/查询get、fetch、acquire、read、search、find、query
设置/重置/放入/写入/释放/刷新set、reset、put、write、release、refresh
发送/推送send、push
接收/拉取receive、pull
提交/撤销/取消submit、cancel
收集/采集/选取/选择collect、pick、select
提取/解析sub、extract、parse
编码/解码encode、decode
填充/打包/压缩fill、pack、compress
清空/拆包/解压flush、clear、unpack、decompress
增加/减少increase、decrease、reduce
分隔/拼接split、join、concat
过滤/校验/检测filter、valid、check

4. 常用领域词

名词使用领域词汇。举个例子:集合的容量通常用capacity、集合实际元素个数用size、字符串长度用length,这种就遵循大家的使用习惯,不要用size去形如字符串的长度。

再比如,假如使用到建造者模式,那么通常会用build作为函数名字,这个时候就不要另辟蹊径,用create来作为函数名字,使用大家约定俗成的命名习惯更容易让你的代码被别人读懂。

常用名词表:

类别单词
容量/大小/长度capacity、size、length
实例/上下文instance、context
配置config、settings
头部/前面/前一个/第一个header、front、previous、first
尾部/后面/后一个/最后一个tail、back、next、last
区间/区域/某一部分/范围/规模range、interval、region、area、section、scope、scale
缓存/缓冲/会话cache、buffer、session
本地/局部/全局local、global
成员/元素member、element
菜单/列表menu、list
源/目标source、destination、target

5. 常用缩写表

1、本缩写表是《编码命名规范》的附录。

2、本缩写表中列出的都是通用性缩写,不提供标准缩写,如:Win9x、COM 等。

3、使用本缩写表里的缩写时,请对其进行必要的注释说明。

4、除少数情况以外,大部分缩写与大小写无关。

缩写全称
addrAddress
admAdministrator
appApplication
argArgument
asmassemble
asynasynchronization
avgaverage
DBDatabase
bkback
bmpBitmap
btnButton
bufBuffer
calcCalculate
charCharacter
chgChange
clkClick
clrcolor
cmdCommand
cmpCompare
colColumn
coordcoordinates
cpycopy
ctl/ctrlControl
curCurrent
cylCylinder
dbgDebug
dblDouble
decDecrease
defdefault
delDelete
dest/dstDestination
devDevice
dictdictionary
diffdifferent
dirdirectory
dispDisplay
divDivide
dlgDialog
docDocument
drvDriver
dynaDynamic
envEnvironment
errerror
ex/extExtend
execexecute
flgflag
frmFrame
func/fnFunction
grpgroup
horzHorizontal
idx/ndxIndex
imgImage
implImplement
incIncrease
infoInformation
initInitial/Initialize/Initialization
insInsert
instInstance
INT/intrInterrupt
lenLength
libLibrary
lnkLink
loglogical
lstList
maxmaximum
memMemory
mgr/manManage/Manager
midmiddle
minminimum
msgMessage
mulMultiply
numNumber
objObject
ofsOffset
orgOrigin
paramParameter
picpicture
pkgpackage
pnt/ptPoint
posPosition
pre/prevprevious
prgprogram
prnPrint
procProcess
propProperties
pswPassword
ptrPointer
pubPublic
rcrect
refReference
regRegister
reqrequest
resResource
retreturn
rgnregion
scrscreen
secSecond
segSegment
selSelect
srcSource
stdStandard
stgStorage
stmStream
strString
subSubtract
sumsummation
svrServer
syncSynchronization
sysSystem
tblTable
temp/tmpTemporary
tran/transtranslate/transation/transparent
tstTest
txttext
unkUnknown
updUpdate
upgUpgrade
utilUtility
varVariable
verVersion
vertVertical
virVirus
wndWindow