变量及函数命名经验

5 篇文章 0 订阅

前言

对于实际上手写代码的各位程序员而言,一个好的变量和函数命名标准是必不可少的,但现实情况是没有一种命名标准可以获得所有程序员的赞同。也正因如此,不同的人根据自身经验的不同会有自己独特的命名风格。

虽然没有具体通用的命名标准,但却有一些共性规则是获得大部分人认可的。下文会介绍本人长期总结的一些变量及函数命名的共性规则、并附带本人自身的命名风格(个人习惯)。

此文的编程语言以Python为例(可以少打很多变量类型,手动滑稽),也适用于C/C++、C#、Java、JavaScript、等其它编程语言。

此文适合没有自己独特命名风格的新手程序员阅读,当然,拥有独特命名风格的程序员也可以阅读进行借鉴,同时也希望各位可以给予一些可靠的建议。

共性规则

直观易解读

命名最好采用英文单词及其组合,便于记忆和阅读。切忌使用汉语拼音来命名。
命名的用词应当准确,英文单词不要太偏僻,组合不要太复杂。

示例:

# 正确示例
maxValue
minValue

# 错误示例
qiCheShuLiang  # 汉语拼音,应改为carNum
preeminentAlgorithm  # 单词偏僻,应改为goodMethod
carRunWheelStaticFrictionForce  # 组合复杂,应改为carSFriction或carSFrn,并添加适当的注释

单词简写

命名时,若组合名过长,则其中的英文单词可以简写,并适当添加注释。

示例:

# Number简写为Num
# Value简写为Val

carNum
maxVal
carSFrn  # 简写过多,含义不直观,需要添加注释,汽车轮子的静摩擦力

长度适中

命名长度应当符合min_length && max_information原则,即更短的长度且包含更多的信息。

一般来说,长名字能更好地表达含义,所以命名长达十几个字符不足为怪。但命名并不是越长越好,因为不好理解,例如变量名maxVal就比maxValueUntilOverflow要好得多。单字符的命名也很常见,例如i, j, k, m, n, x, y, z等,它们通常可用作循环便利或函数内的局部变量。

若名字过长,可适当缩减,解决方案有2个,第1个是挑选关键词,第2个便是上文提到的单词简写。

驼峰命名

驼峰命名指每个单词遵循驼峰大小写规律,开头单词首字母小写,后续单词的首字母大写,用来区分不同的单词。

示例:

maxValue
roomDeskNum

下划线命名

下划线命名是不同于驼峰命名的方法,每个单词之间由下划线连接,通常用于所以字母都是小写或都是大写的情况。推荐C/C++的常量都用大写字母。

同理,可以用连词符代替下划线,即连词符命名,效果和下划线命名类似。

推荐使用下划线命名,因为连词符有时会因此含义冲突,从而大部分人喜欢使用下划线命名。

示例:

# 下划线命名(推荐)
first_name
MAX_VALUE

# 连词符命名
first-name
MAX-VALUE

配对命名

用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。

示例:

# 变量
minValue
maxValue
# 函数
SetValue()
GetValue()           

避免仅靠大小写区分的标识符

错误示例:

# 变量x与X容易混淆
x = 5
X = 10
# 函数get与GET容易混淆
def get(x):
def GET(x):

避免完全相同的标识符

程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但会使人误解。

尽量避免命名出现数字编号

尽量避免命名出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号。这样可以使代码逻辑提升,避免混乱。同时也是为了防止程序员偷懒,不肯为命名动脑筋(因为用数字编号最省事)。

防止冲突

为了防止自己编写的库中的一些标识符和其它软件库有冲突,可以为各标识符加上能反映库性质的前缀。

示例:
OpenGL中所有库函数均以gl开头,所有常量(或宏定义)均以GL开头。
OpenCV中所有的库函数均以cv开头。

风格保持一致

同一项目的所有脚本应当保持一致的风格,方便后续解读和修改。

个人习惯

添加注释

命名含义不直观或有混淆时,需要添加注释。
一般在定义变量时进行注释。使用过程中,重要位置或混淆位置也可适当添加注释。

示例:

maxValue  # 最大值
minValue  # 最小值

变量和函数

方案1(推荐):变量名和函数名都遵循驼峰命名
这样命名比较统一。变量名的前缀为名词,函数名的前缀为动词,这样可以让变量和函数区分开来。

但不绝对,转换类函数的前缀可以为名词,如xml2json(),同时也可以不遵循驼峰命名,因为2个单词被2(To)隔开了。

方案2:变量名和函数名都遵循下划线命名
这样命名也比较统一。Python代码推荐此种方式命名变量和函数,因为Python代码会提示变量名和函数名使用小写字母。

方案3:变量名遵循驼峰命名,函数名遵循下划线命名
这样命名不统一,但较好区别变量和函数。

总结
区别变量和函数可以通过括号判断,后面没有括号的是变量,有括号的是函数,这样既方便又准确,因此没必要仅通过名字区分变量和函数,所以使用上述几种方案均可,都不会影响到变量和函数的区分。Python推荐下划线命名法。

示例:

# 变量
carNum
# 函数
getCarNum()
xml2json()  # 转换类函数的前缀可以是名词,

文件和文件夹命名

文件和文件夹命名推荐使用下划线+小写字母命名法,每个单词之间由下划线连接,所有单词都是小写字母。值得一提的是文件夹名称一般由1个单词组成,若需细分可以创建子文件夹,若文件夹名称由多个单词组成,可使用下划线命名法。

补充:若不喜欢使用下划线命名法,也可使用连词符命名法,效果和下划线类似。

示例:

/img/icon  # 子文件夹
/img_icon  # 下划线文件夹
create_list.py  # 脚本文件
car_new.jpg  # 图像文件

类名与成员

(此处以C++为例)

类名首字母大写+驼峰命名,变量和函数首字母小写+驼峰命名。对于成员数据和成员函数,首字母小写+驼峰命名。若函数名的单词数量较多,也可以使用小字母+下划线命名法。

示例1:

// 类名
class Node;
class LeafNode;

示例2:

// 类名
class Point
{
private:
	// 成员数据
	int xPos;
	int yPos;

public:
	// 成员函数
    void setPoint(int x, int y)
    {
        xPos = x;
        yPos = y;
    }
    void printPoint()
    {
        cout<< "x = " << xPos << endl;
        cout<< "y = " << yPos << endl;
    }
};

特殊变量

常量
常量全用大写的字母,用下划线分割单词。

示例:

const int MAX = 100;
const int MAX_LENGTH = 100;

静态变量
静态变量加前缀s_(表示static)。

示例:

void Init(){
	static int s_initValue; // 静态变量
	}

全局变量
如果不得已需要全局变量,则使全局变量加前缀g_(表示global)。

示例:

// 全局变量
int g_peopleNum;
int g_carNum;
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NSJim

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值