UNPKG

innomind-vita

Version:

InnoMind Vita - AI-Powered Industrial Software Platform

152 lines (128 loc) 3.22 kB
# 代码注释规范 ## 基本原则 1. 注释应该解释为什么(Why),而不是是什么(What) 2. 代码即文档,优先通过良好的命名和结构来表达意图 3. 注释要及时更新,过时的注释比没有注释更糟糕 4. 避免无意义的注释,如果代码足够清晰就不需要注释 ## 注释类型 ### 1. 文件头注释 ```typescript /** * @fileoverview 文件的用途描述 * * 详细说明(可选) * * @author 作者名 <邮箱> * @copyright InnoTech * @license UNLICENSED */ ``` ### 2. 类注释 ```typescript /** * 类的用途说明 * * @class * @implements {Interface} * @extends {ParentClass} */ ``` ### 3. 方法注释 ```typescript /** * 方法功能说明 * * @param {string} param - 参数说明 * @returns {boolean} 返回值说明 * @throws {Error} 异常说明 * @private */ ``` ### 4. 行内注释 ```typescript // 复杂逻辑的简要说明 const result = complexCalculation(); /* 多行注释 * 用于较长的说明 * 通常用于算法解释 */ ``` ## 注释规范 ### 1. 必须注释的场景 - 所有导出的类、接口、类型、函数 - 复杂的算法或业务逻辑 - 特殊的边界条件处理 - Hack和临时解决方案 - 依赖外部系统的代码 ### 2. 不应注释的场景 - 显而易见的代码 - 已经通过变量名表达的含义 - 简单的赋值和操作 - 重复代码的含义 ### 3. 注释格式 - 使用完整的句子 - 句尾使用句号 - 保持适当的缩进 - 注释和代码之间留一个空格 ## 特殊注释标记 ### 1. TODO 注释 ```typescript // TODO(开发者): 需要完成的工作 // TODO(#123): 关联issue的工作 ``` ### 2. FIXME 注释 ```typescript // FIXME: 已知问题的说明 // FIXME(#456): 关联issue的问题 ``` ### 3. HACK 注释 ```typescript // HACK: 特殊处理的说明 // HACK: 后续需要优化 ``` ## 示例 ### 1. 业务逻辑注释 ```typescript /** * 计算订单总价 * * 计算规则: * 1. 商品原价总和 * 2. 减去折扣金额 * 3. 加上运费 * 4. 抹去小数部分 */ function calculateOrderTotal(items: OrderItem[], discount: number, shipping: number): number { // 计算商品总价 const subtotal = items.reduce((sum, item) => sum + item.price * item.quantity, 0); // 应用折扣(如果有) const discounted = discount > 0 ? subtotal * (1 - discount) : subtotal; // 添加运费并取整 return Math.floor(discounted + shipping); } ``` ### 2. 算法注释 ```typescript /** * 二分查找实现 * * 时间复杂度: O(log n) * 空间复杂度: O(1) */ function binarySearch<T>(arr: T[], target: T): number { let left = 0; let right = arr.length - 1; while (left <= right) { // 避免整数溢出的中点计算 const mid = left + Math.floor((right - left) / 2); if (arr[mid] === target) { return mid; } else if (arr[mid] < target) { left = mid + 1; // 在右半部分查找 } else { right = mid - 1; // 在左半部分查找 } } return -1; // 未找到目标值 } ```