对阅读代码和代码注释的一些认识

作为一个程序员,无论是入职新公司,还是接手新项目,阅读别人写的代码是必须要做且必须要做好的事情,否则,轻则干不好工作、得不到重用,重则在公司里站不稳脚跟、迟早被淘汰。

对于一个大型程序,如果代码没有注释,要搞清楚它的架构和算法,是一件非常不容易的事情。由于工作需要,先后使用过 uCOS、Linux、Android 开源操作系统、MiniGUI 开源窗口系统和 MPlayer 开源多媒体播放器等,也阅读了其中的大量代码。

关于代码注释,以 Linux 为例谈三点认识:

一、Linux 子系统的接口函数一般都写注释来说明函数的功能和参数,比如 ALSA 音频子系统的 snd_soc_register_codec() 函数:

/**
 * snd_soc_register_codec - Register a codec with the ASoC core
 *
 * @dev: The parent device for this codec
 * @codec_drv: Codec driver
 * @dai_drv: The associated DAI driver
 * @num_dai: Number of DAIs
 */
int snd_soc_register_codec(struct device *dev,
			   const struct snd_soc_codec_driver *codec_drv,
			   struct snd_soc_dai_driver *dai_drv,
			   int num_dai)
{
	struct snd_soc_dapm_context *dapm;
	struct snd_soc_codec *codec;
	struct snd_soc_dai *dai;
	int ret, i;

	dev_dbg(dev, "codec register %s\n", dev_name(dev));

	codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
	if (codec == NULL)
		return -ENOMEM;

	codec->component.codec = codec;

	... // 省略部分代码

	mutex_lock(&client_mutex);
	snd_soc_component_add_unlocked(&codec->component);
	list_add(&codec->list, &codec_list);
	mutex_unlock(&client_mutex);

	dev_dbg(codec->dev, "ASoC: Registered codec '%s'\n",
		codec->component.name);
	return 0;

err_cleanup:
	snd_soc_component_cleanup(&codec->component);
err_free:
	kfree(codec);
	return ret;
}
EXPORT_SYMBOL_GPL(snd_soc_register_codec);

二、关于阅读优秀的代码,有一句挺给力的英文:Read the fucking source code。我们要读懂代码,除了借助良好的代码注释,还有一个重要的手段就是:修改它,运行它,观察运行日志,直到搞懂为止。

三、大量的代码注释都是用英文写的,而且很多高质量计算机书籍原版都是用英文写的,因此学好英文对于程序员来说还是相当重要的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值