【Express.js】代码规范

代码规范

编程规范,对于一个优秀的项目是不可或缺的,有了良好的代码规范,有益于项目的维护与拓展。

命名规范

命名的第一要义是明了,要让阅读者看到命名就能大概猜测出其意义或用处。

以用户身份(userRole)为例,不可过度简略为 "ur",本身这个单词也不算长,拼全 "userRole" 即可,或者 "uRole",因为字母 "u" 通常代表用户,这是约定俗成的。

命名规范可以跟据被命名的目标再细分:

变量命名

可变变量通常用 let 声明,命名时可以采取首字母小写的驼峰(userRole)或者小写蛇形命名法(user_role);常量变量通常用 const 声明,命名时通常采用全大写(USERROLE)或者大写蛇形命名法(USER_ROLE)

函数命名

独立的函数或者作为成员变量的方法,命名通常采取首字母小写的驼峰(checkUserRole)小写蛇形命名法(check_user_role)

类命名

类、接口或者一系列函数和变量的聚合引入的命令通常采用大写驼峰命令法(User),对其内部私有的量或者方法,由于 js 和 ts 都不存在真正意义上的 private,所以在私有量或方法前加上 _ 短下划线即可,意指这是私有的。此外,在声明类或对象拥有的属性和方法时,要避免冗余的前缀,比如:

js 复制代码
class User {
  userLogin() {
  	//...
  }
}

以上代码的 "userLogin" 就是典型的前缀冗余。

文件命名

文件命名通常采用小写驼峰命名(strUtil.js)或者小写点隔式命名(str.util.js),小写蛇形命名法也不是不行,但在 js 项目中较为罕见。

排版规范

一个统一且整洁的排版也是相当重要的,比如:

  1. 统一的 4空格 或者 2 空格缩进,符号后 1 空格缩进
js 复制代码
const sayHi = () => {
  console.log('Hi, Express Learner!');
}
  1. 同行内逗号分隔后的 1空格缩进
  2. 单文件内不同性质或不同阶段的代码用单空行相隔
  3. 引入依赖或其它文件通常写在文件顶部
  4. 函数多参数下放
typescript 复制代码
function add_10_nums(
  a1: number, b1: number,
  a2: number, b2: number,
  a3: number, b2: number,
  a4: number, b2: number,
  a5: number, b2: number)
{
  return //...
}
  1. 多行对齐

等等...

注释规范

合适的注释有助于自己和他人快速理解并维护一段代码,写注释不必事事具细,比如在意义很明显的 login() 函数上加 // 登录函数 这么一句代码,只需要在比较复杂或者仅靠命名和表面的调用关系即可推断出作用的代码上进行适当的注释即可。此外,现在的主流 IDE 对注释都支持 markdown,可以适当地利用 markdown 语法进行注释增强。

切记注释是给人看的,别把注释格式写的难以阅读,比如长篇大论且挤在一行上。

此外通过注释的 JsDoc 可以对函数的参数、返回,对象的属性等进行类型标注和解释,合理的运用 JsDoc 注释,将使得我们在不使用 TypeScript 的情况下也能获得良好的代码提示。


下一节-高性能

相关推荐
李慕婉学姐9 分钟前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
掘金酱18 分钟前
「寻找年味」 沸点活动|获奖名单公示🎊
前端·人工智能·后端
颜酱22 分钟前
栈的经典应用:从基础到进阶,解决LeetCode高频栈类问题
javascript·后端·算法
Xin_z_30 分钟前
Vue3 + Sticky 锚点跳转被遮挡问题解决方案
前端·javascript·vue.js
WeiXin_DZbishe1 小时前
基于django在线音乐数据采集的设计与实现-计算机毕设 附源码 22647
javascript·spring boot·mysql·django·node.js·php·html5
百思可瑞教育1 小时前
Vue 前端与 Node.js 后端文件上传与处理实现
前端·javascript·vue.js·前端框架·node.js·ecmascript·百思可瑞教育
玹外之音1 小时前
Spring AI MCP 无状态服务器实战:构建AI智能用户管理系统
java·后端
what丶k1 小时前
Spring AI 多模态开发全解析:从入门到企业级落地
后端·spring·ai编程
ATCB1 小时前
零门槛!PythonAnywhere 免费部署全指南:不止 Django,这些项目都能搭(附主流平台对比)
后端·python·django
小黑的铁粉1 小时前
什么是事件循环?调用堆栈和任务队列之间有什么区别?
前端·javascript