写好注释的核心是准确传达代码意图,提升可维护性;优先用//作单行注释,保持简洁清晰;多行说明用/.../,Doxygen文档用/*.../并规范标签;注释须随代码同步更新,避免过时或冗余。
写好注释不是为了凑数,而是让别人(包括未来的你)能快速理解代码意图。C++本身不强制注释风格,但统一、简洁、有信息量的注释能极大提升可维护性。
推荐优先使用//,它语义清晰、视觉轻量,适合说明某一行或紧邻几行的目的。
int count = 0; // 初始化计数器(✅)int count = 0;//初始化计数器(❌ 缺少空格)
int i = 0; // 初始化i——除非i的初始值有特殊含义(如哨兵值-1)if (ptr == nullptr) return -1; // 空指针提前返回,调用方需检查
/* ... */适合文件头、复杂算法说明、或需要跨多行解释的场景,但别嵌套、也别滥用。
/*
* @file parser.h
* @brief JSON片段解析器,支持嵌套对象但不校验UTF-8
* @warning 不线程安全,多线程请加锁
*/如果项目用Doxygen生成API文档,函数上方统一用/** ... */块,并包含@brief、@param、@return等标签。
/*** @brief 查找数组中第一个大于target的元素下标 * @param arr 有序整数数组(升序),非空 * @param size 数组长度,> 0 * @param target 搜索目标值 * @return 下标(0~size-1),未找到返回size */ int upper_bound(const int* arr, int size, int target);
@brief本身已表明这是简介逻辑改了但注释没动,会误导阅读者,甚至引发误修。把注释当作代码的一部分来维护。
基本上就这些。注释不是越多越好,而是刚好够用、准确、可持续。保持克制,尊重读者的时间。