如何在前端项目中制定代码注释规范

news2024/11/18 7:45:40
本文是前端代码规范系列文章,将涵盖前端领域各方面规范整理,其他完整文章可前往主页查阅~

开始之前,介绍一下​最近很火的开源技术,低代码。

作为一种软件开发技术逐渐进入了人们的视角里,它利用自身独特的优势占领市场一角——让使用者可以通过可视化的方式,以更少的编码,更快速地构建和交付应用软件,极大程度地降低了软件的开发、配置、部署和培训成本。

应用地址: https://www.jnpfsoft.com
开发语言:Java/.net

这是一个基于 Java Boot/.Net Core 构建的简单、跨平台快速开发框架。前后端封装了上千个常用类,方便扩展;采用微服务、前后端分离架构,集成了代码生成器,支持前后端业务代码生成,满足快速开发;框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用;后端框架支持 Vue2、Vue3,平台即可私有化部署,也支持 K8S 部署。

代码注释是软件开发中的重要组成部分,它帮助开发者理解代码的功能和目的,同时也是代码维护和团队协作的基础。一个清晰的注释规范能够提高代码的可读性和维护性。本文将介绍如何在前端项目中制定代码注释规范。

1. 注释的类型

在前端项目中,我们通常有两种类型的注释:

  • 单行注释:用于简短的描述或解释单个语句。
  • 多行注释:用于描述复杂逻辑或文件、模块的信息。

2. 单行注释

单行注释应该紧跟在代码的上一行或同一行的末尾。注释内容与代码或上一行注释应保持至少一个空格的距离。

// 正确的单行注释
const count = 1; // 初始化计数器

// 错误的单行注释
const count = 1;//初始化计数器

3. 多行注释

多行注释通常用于文件头部,描述整个文件的功能,或者用于复杂逻辑的解释。多行注释应该有一个清晰的开始和结束,内容与星号之间保持一个空格。

/**
 * 正确的多行注释
 * 这是一个用于计算数组总和的函数
 * @param {number[]} numbers - 要计算的数字数组
 * @return {number} 数组的总和
 */
function sum(numbers) {
  // ...
}

/* 错误的多行注释
这是一个用于计算数组总和的函数
@param {number[]} numbers - 要计算的数字数组
@return {number} 数组的总和
*/
function sum(numbers) {
  // ...
}

4. JSDoc注释

JSDoc是一种流行的注释规范,它不仅可以提高代码的可读性,还可以被一些工具用来生成文档。在前端项目中,推荐使用JSDoc来注释函数、类和方法。

/**
 * 计算数组总和
 * @param {number[]} numbers - 要计算的数字数组
 * @returns {number} 数组的总和
 */
function sum(numbers) {
  return numbers.reduce((acc, current) => acc + current, 0);
}

5. 注释的内容

注释应该清晰、简洁、有目的。避免无意义的注释或过度注释。注释应该解释为什么这么做,而不是什么在做。代码本身应该清晰到足以表达它在做什么。

// 正确的注释
// 因为用户可能会输入负数,所以在加法前进行检查
if (number < 0) {
  throw new Error('Number must be positive');
}

// 错误的注释
// 检查数字是否小于0
if (number < 0) {
  throw new Error('Number must be positive');
}

6. 代码修改时更新注释

当代码发生变化时,相关的注释也应该相应地更新。过时的注释会误导其他开发者,降低代码的可读性。

7. 注释模板

对于一些重复性的注释内容,如组件、模块、函数等,可以制定统一的注释模板。

/**
 * 组件名称
 * 
 * 描述这个组件的作用和功能
 * 
 * @prop {PropType} propName - 对prop的描述
 */

8. 工具支持

可以使用一些工具来强制执行注释规范,如ESLint的注释相关规则,或者使用Prettier来自动格式化注释,这块会在后续的系列文章中单独说明。

9. 避免注释整块代码

不应该在代码库中保留被注释掉的代码。这些代码往往是过时的,并且会给其他开发者带来困惑。如果需要保留代码的历史版本,应该使用版本控制系统git来管理。

// 错误:注释掉的代码
// function oldCalculate() {
//   // ...
// }

10. 特殊注释标记

在代码中使用特殊的注释标记(如TODO, FIXME, NOTE)来标识需要特别注意的地方,这些标记可以帮助开发者快速定位到需要进一步工作的部分。

  • TODO: 表示代码中将来需要添加或完成的功能。通常用于提醒开发者还有功能未实现或需要进一步的工作。
  • FIXME: 指出代码中存在问题,需要修复。这通常表示代码能够运行,但结果可能不是预期的,或者代码本身可能不稳定。
  • HACK: 指代码中的临时解决方案或者不够优雅的代码。这通常用于快速修复问题,但长远来看可能需要更好的解决方案。
  • NOTE: 用于强调代码中的某个特别重要的信息,比如解释某个复杂算法的逻辑或者提醒为什么要以特定方式实现代码。
  • OPTIMIZE: 提示代码的性能可以进一步优化。这不一定表示代码有问题,但可能存在提高效率的机会。
  • REVIEW: 表示代码需要额外的审查,以确定是否满足需求或是否存在更好的实现方式。
  • DEPRECATED: 表明代码已经过时,不应该被使用或将来会被移除。
  • NOCOMMIT: 这是一个警告,表示代码不应该被提交到版本控制系统中。这常用于开发过程中的临时改动,如调试代码。
// TODO: 增加异常处理
function loadData() {
  // ...
}

// FIXME: 这里的算法实现有问题,以后需要优化
function calculate() {
  // ...
}

// NOTE: 这是一个临时解决方法
function temporaryFunction() {
  // ...
}

使用这些注释标签可以帮助团队成员快速识别代码中的特定部分,但它们也不应该过度使用。过多的TODO或FIXME可能表明代码质量问题,应该定期审查和解决这些标记。

11. 开发工具注释

开发工具基本都有便捷指令支持注释,本文只列举在 VSCode 和 WebStorm 这两个编辑器中对代码注释的便捷方式或插件。

在 VSCode 中添加代码注释:

  • 手动添加:通过快捷键 Ctrl + /(Windows/Linux)或 Cmd + /(Mac)添加行注释,在选中代码后按下快捷键即可。也可以手动编写注释。
  • 插件:VSCode 有很多代码注释相关的插件,如 Document This、jsdoc-comment、better-comments、vscode-todo-highlight 等,可以通过 VSCode 的扩展市场安装并使用,提供更丰富的注释功能。

在 WebStorm 中添加代码注释:

  • 自动添加:在函数或方法上方输入 /** 并按下 Enter 键,WebStorm 将会自动生成函数注释的模板,然后你只需填写相应的信息即可。
  • 自定义模板:可以在 WebStorm 的设置中自定义注释模板,满足团队的特定需求或遵循特定的注释规范。

无论是在 VSCode 还是 WebStorm 中,都可以通过简单的快捷键操作或安装插件来实现代码注释,使代码更易读、易维护。

总结

良好的注释规范有助于提高代码质量,促进团队协作,加快新成员的项目熟悉速度,不仅能帮助自己和他人快速理解代码,还能提高代码的可维护性。在前端项目中,注释不仅仅是给自己看的,更是给团队中其他成员看的,因此应当保持注释的清晰、准确和及时更新。

通过本文介绍的注释规范,希望能帮助你在前端项目中写出更清晰、更规范的注释。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1864169.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SSM+Jsp的雅博书城在线系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

【Pandas驯化-17】一文搞懂Pandas如何优雅的连接mysql函数to_sql技巧

【Pandas驯化-17】一文搞懂Pandas如何优雅的连接mysql函数to_sql技巧 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 相关内容文档获取 微…

mysql数据库中使用存储过程带来的好处和示例(存储过程的概念、定义、作用等详解)

目录 一、概述 二、存储过程的作用 1、代码重用 2、简化复杂操作 3、提高性能 4、安全性和数据完整性 三、相对于sql操纵语句&#xff08;select、insert等&#xff09;存储过程的好处 1、代码重用和封装 &#xff08;1&#xff09;概述 &#xff08;2&#xff09;举…

28. 深度学习中的损失函数:起源、分类及统一理解

在深度学习和机器学习领域&#xff0c;损失函数&#xff08;Loss Function&#xff09;是优化问题的核心&#xff0c;决定了模型参数的调整方向和幅度。尽管损失函数种类繁多&#xff0c;但理解其起源和背后的理论有助于我们更好地选择和应用它们。 损失函数的起源 所有的优化…

吴恩达揭秘:编程Agent如何革新软件开发行业

作为 AI 领域的杰出人物&#xff0c;吴恩达教授对编程 Agent 的兴起表示了极大的兴趣。他认为&#xff0c;编程 Agent 有潜力通过自动执行繁琐的任务、提高代码质量和加速开发周期来彻底改变软件开发行业。 本文将深入探讨吴恩达对编程 Agent 的见解&#xff0c; 多代理系统质…

【RF Transceiver】ADRV9040 THEORY OF OPERATION

工作原理 概述 GENERAL 该 ADRV9040 是一款高度集成的射频收发器&#xff0c;能够针对各种应用进行配置。该器件集成了在单个器件中提供所有发射器、流量接收机和观测接收机功能所需的所有射频、混合信号和数字模块。可编程性使该器件能够适应 TDD 模式下的许多 3G/4G/5G 蜂窝…

Hadoop3:Yarn工作机制

一、流程图 注意&#xff1a;步骤0中&#xff0c;如果是本地运行&#xff0c;则创建的是LocalRunner 二、流程说明 1、首先&#xff0c;我们把自己编写好的MR程序&#xff0c;上传到集群中客户端所在的节点。 2、使用shell客户端命令&#xff0c;执行jar程序&#xff0c;执行…

【线上绘图网站分享】

好用的线上绘图网站分享 使用场景特点使用例子 Excalidraw 使用场景 流程图绘制、组会分享工具等&#xff1b; 特点 最重要的就是&#xff1a;免费&#xff01;&#xff01; 简单&#xff0c;快捷&#xff1a;有时候临时要画一个流程图之类的用来示意、分享知识点&#xff…

一码搞定三种预测!!多变量回归预测+区间预测+核密度估计,LSSVM-ABKDE的多变量回归预测程序,小白上手,不会程序也能用

适用平台&#xff1a;Matlab2022版及以上 区间预测&#xff0b;概率密度估计传统的回归预测无法有效地捕捉新能源等波动的不确定性&#xff0c;很难取得审稿专家的肯定。区间预测能够提供更丰富的不确定信息&#xff0c;也极大地增加了光伏和风能预测在实际应用中的价值&#x…

2024山东大学软件学院创新项目实训(10)项目总结

项目名称&#xff1a;基于InternLM2的题库系统——考研政治助手 一、项目亮点 二、项目分工 三、成果展示 可以看到微调后最直观的首先是答案更加正确&#xff0c;第二点就是&#xff0c;微调完后&#xff0c;给出的回答格式比较鲜明。上来会告诉你选择某个选项&#xff0c;…

时延降低 50%,小红书图数据库如何实现多跳查询性能大幅提升

多跳查询为企业提供了深入的数据洞察和分析能力&#xff0c;它在小红书众多在线业务中扮演重要的角色。然而&#xff0c;这类查询往往很难满足稳定的 P99 时延要求。小红书基础架构存储团队针对这一挑战&#xff0c;基于大规模并行处理&#xff08;MPP&#xff09;的理念&#…

自然语言处理课程论文:《Attention is all you need》复现与解读

目录 1.背景介绍 1.1 文献介绍 1.2 研究背景 1.3 知识概述 1.3.1 机器翻译 1.3.2 attention机制与self-attention机制 2.数据来源与处理 2.1 数据集描述 2.2 数据处理 3. 模型架构 ​​​​​​​3.1 Positional Embedding ​​​​​​​3.2 Multi-Head Attention ​​​​​…

摄影师危!AI绘画即将降维打击摄影行业

你还以为AI绘画影响的只是插画师行业吗&#xff1f;错了&#xff0c;摄影行业也即将面临技术洗牌 话不多说&#xff0c;先看一下这几张图 你能一眼看出这是AI画的迪丽热巴吗&#xff1f; 你是不是还以为AI绘画只能画点动漫艺术风格&#xff1f;那你就低估了AI的发展速度&…

ICE构建坚不可摧的交易环境

金融技术迅速发展的今天,Intercontinental Exchange, Inc.再次站在了行业前沿,首席技术官Mark Wassersug表示:“我们的目标是通过ICE.AI,为全球交易者提供市场领先的技术解决方案。平台的推出标志着我们在利用人工智能技术优化金融市场交易方面迈出了重要一步。我们保证这将大幅…

开发RpcProvider的发布服务(NotifyService)

1.发布服务过程 目前完成了mprpc框架项目中的以上的功能。 作为rpcprovider的使用者&#xff0c;也就是rpc方法的发布方 main函数如下&#xff1a; 首先我们init调用框架的init&#xff0c;然后启动一个provider&#xff0c;然后向provider上注册服务对象方法&#xff0c;即us…

人工智能在医学图像分割中的最新研究进展|顶刊速递·24-06-26

小罗碎碎念 今日推文主题——人工智能在医学图像分割领域中的最新研究进展。 今天的推文都来自同一个期刊——《Med Image Anal 》&#xff0c;最新的IF是10.7。 小罗观点 今天的六篇文献都是直接面向实际应用场景的&#xff0c;可以针对你自己的研究课题选择合适的文章进行阅读…

uniapp标题水平对齐微信小程序胶囊按钮及适配

uniapp标题水平对齐微信小程序胶囊按钮及适配 状态栏高度胶囊按钮的信息计算顶部边距模板样式 标签加样式加动态计算实现效果 状态栏高度 获取系统信息里的状态栏高度 const statusBarHeight uni.getSystemInfoSync().statusBarHeight;//系统信息里的状态栏高度胶囊按钮的…

已解决java.security.GeneralSecurityException: 安全性相关的通用异常的正确解决方法,亲测有效!!!

已解决java.security.GeneralSecurityException: 安全性相关的通用异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 报错原因 解决思路 解决方法 确定具体异常类型 检查输入参数 验证算法支持性 调整安全策略 确保资源可…

学习TS看这一篇就够了!

目录 TS的优点和缺点基础类型数字类型布尔类型字符串类型void 类型null 类型和 undefined 类型bigint类型Symbol类型 其他类型数组元组枚举Enum对象和函数any void never unknown 的区别是什么泛型 Generic交叉类型联合类型 特殊符号 ? ?. ?? ! _修饰符 TS的优点和缺点 优…

优思学院|做工厂的意义是什么?如何管理好一个工厂?

工厂的意义是什么&#xff1f;工厂是让物品增加附加价值的地方。既然使用地球上有限的资源进行生产&#xff0c;工厂就不能浪费这些有限的资源。 什么是附加价值&#xff1f;有人说做菜像变魔术。确实&#xff0c;原本不能食用的食材&#xff0c;经过厨师巧手烹调就能变成美味…