您的位置:首页 > 其它

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

2011-03-10 10:37 330 查看
事情大约如下:

对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进行对比)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: