【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 的情况下也能获得良好的代码提示。


下一节-高性能

相关推荐
乂爻yiyao13 小时前
Spring Boot Fat JAR 容器化指南
spring boot·后端·jar
我命由我1234514 小时前
React - 验证 Diffing 算法、key 的作用
javascript·算法·react.js·前端框架·html·html5·js
Nan_Shu_61420 小时前
学习: 尚硅谷Java项目之小谷充电宝(3)
java·后端·学习
智能工业品检测-奇妙智能20 小时前
AIFlowy如何实现与现有Spring Boot项目的无缝集成?
java·spring boot·后端
Ama_tor20 小时前
Flask零基础进阶(中)
后端·python·flask
爱上妖精的尾巴20 小时前
8-18 WPS JS宏 正则表达式-边界匹配
开发语言·javascript·正则表达式·wps·jsa
人道领域20 小时前
苍穹外卖:菜品新增功能全流程解析
数据库·后端·状态模式
爱上妖精的尾巴20 小时前
8-20 WPS JS宏 正则表达式-懒惰匹配
服务器·前端·javascript
网络点点滴20 小时前
组件通信props方式
前端·javascript·vue.js
野犬寒鸦20 小时前
TCP协议核心:TCP详细图解及TCP与UDP核心区别对比(附实战解析)
服务器·网络·数据库·后端·面试