一个函数命名所引发的思考

事情大约如下:

对framebuffer进行操作时,我们需要定义一种颜色作为透明色,framebuffer设备驱动有相对应ioctl操作函数, 开始设计时就将其归纳成一个函数, 此函数名命名为fb_set_colorkey(...)。个人觉得函数的命名,实有不妥,一个好的函数命名,应该清楚的告知此函数的功能。fb_set_colorkey,字面上可以理解为设置framebffer的colorkey值,这的确是此函数所完成的操作,但我们还不是不清楚此命名的真正意义和功能。所以我将此函数的命名修改为fb_set_not_display_color(...),此命名清晰的反映了函数所完成的功能,设置framebuffer层不显示的颜色值,也就是只要在framebuffer映射的数据区填充此颜色,就默认不显示颜色(透明)。

后一同事见此修改后, 对其评论说:函数的命名太不专业了。

 

什么样的函数名是专业的呢? 《代码大全》中给出以下几条指导原则

1 描述子程序所做的所有事情

2 避免无意义的,模糊的动词

3 不要仅通过数字来形成不同的子程序名字

4 根据需要确定子程序名字的长度

5 给函数命名要对返回值有所描述

6 给过程起名使用语气强烈的动加宾语的形式

7 准备使用对仗词

8 为常用操作确立命名规则

比对了这几条指导原则,新的函数命名真没有不专业的的地方。与原来的函数命名相比, 新的函数命名是有点直乎其意,简单明了,但之更好像是优点。写出来的程序,只有模块的开发者能够读得懂是远远不够的,让其它模块的开发者也能够读起代码来不难受,这也是最终目的之一。 ps:想当年,白居易写完的诗,还得拿去给老奶奶先行读过, 老奶奶读懂得了,才能才去发表。

 

一个好的子程序命名应清楚的表达的函数所做的事情。当程序员第一眼看见此函数名,就能清楚的获知此函数的功能, 而不是还得去猜测函数的意图(上面的例子中,fb_set_colorkey与fb_set_not_display_color进行对比)。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值