命名

如果你准备花一小时写代码,那么其中半小时得用于起名字。这句话虽然有些夸张,但体现出命名的重要性。的确,类名、函数名、变量名、文件名等等如果含混晦涩,会给维护工作造成麻烦。

命名时把握一个原则:对于函数说明其在“做什么”,对于类或变量说明其“是什么”。言简意赅是一种理想状态。首先要用词准确,特别是对英语没把握的人,请随时查一下字典。然后把这些词拼成一个短语或短句。最后,如果名字太长,再做一些简化。

  • 用词准确

英语好的人在准确用词方面会比较轻松,但英语不好的人,比如我,也不要气馁,一定要多查查字典。甚至可以学学白居易写诗的方法,问问旁边的同事能不能读懂你起的名字。

曾经在一个系统中需要管理若干“检查任务”,我在给这些检查任务的基类命名时的确花了很长时间。“任务”一词在翻译软件里找到了4个结果:assignment, mission,task,duties。逐个选择,assignment主要侧重的是“分配”的意思。mission主要指“使命”,范围更大,而我们这里的任务主要是单个任务,范围小。duties的意思主要是职责、责任。相比较而言task比较适合,最终选择了task作为任务基类的名字。

还要避免出现Chinglish的单词。曾经在一个开票系统的代码中看到一个函数名叫OpenInvoice。invoice是发票,但为啥要open它,琢磨了半天才悟出是“开票”的意思(我们把“开具发票”简称为“开票”)。

在有些场景使用拼音也未尝不可。比如在保密系统中的“绝密”、“机密”、“秘密”几个术语就没有很适合的英文单词对应。不妨就直接用拼音JueMi,JiMi,MiMi。

  • 拼接短语

选好单词后,就把它们连在一起。我认为以下几种方式都是可行的:

IsReadOnly   //驼峰式

is_read_only  //Unix短横线式

isReadOnly   //Java首字母小写

或者你还有自己的方式。但我的忠告是:一旦你选定了一种方式,就一直使用它,不要在自己的代码中出现多种风格。

  • 简化

不要太迷信“代码自注释”这句话,对于一些太长的名字,可以做一些简化,比如函数:

void  low_level_read_write_block_devices(int rw, int nr, struct buffer_head * bhs[])

可以简化为:

/**

 * ll_rw_block: low-level access to block devices

….  */

void  ll_rw_block(int rw, int nr, struct buffer_head * bhs[])

这样在调用该函数的地方,可以少敲几个字母。特别是对于局部变量,我推荐使用简写,比如下面这样:

BOOL LocateFile(const CString& strFilePath)

{

       PROCESS_INFORMATION  pi = { 0 };

       ......

}

pi的命名方式,比stProcessInformation更为简洁。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值