当前位置: 首页 > news >正文

干货!代码规范

1. 代码结构与组织

这一类规范关注代码的整体结构,包括模块化、层次划分和代码的物理组织。

  • 层次划分:在 MVC 或类似架构中,controller 层应避免包含业务逻辑,而是将逻辑放在 service 层。service 层应包含主逻辑,将独立的处理逻辑拆分到单独的 service 或 util 中。

2. 编码实践

这一类规范涉及编码时的具体实践,如何编写代码以提高效率和质量。

可参考书目:https://book-refactoring2.ifmicro.com/ 《重构 改善既有代码的设计第二版》中文版)

  • 函数封装:当逻辑重复或足够复杂时,应封装成函数。这有助于代码复用和降低复杂性。
  • 解构使用:善用解构赋值来减少变量定义,使代码更简洁。
  • 工厂模式:在适当的情况下使用工厂模式来创建对象,有助于代码的可维护性和扩展性。
    • 不要在业务中使用 switch-case;使用map和函数匹配代替;原因可参考: https://juejin.cn/post/7070692078069481509
  • 避免重复造轮子:在接手旧项目时,应避免创建重复的工具函数或业务处理函数。

3. 性能优化

这一类规范专注于提高代码的运行效率。

  • 合理使用 Promise.all:只有在并行执行多个不相互依赖的异步操作时,才使用 Promise.all,以避免不必要的性能开销。
  • map/ foreach 使用之争: JavaScript中Map和ForEach的区别 | Fundebug博客 - 一行代码搞定BUG监控 - 网站错误监控|JS错误监控|资源加载错误|网络请求错误|小程序错误监控|Java异常监控|监控报警|Source Map|用户行为|可视化重现

4. 可读性与维护性

  • 注释和文档:函数功能应有清晰的注释,接口命名应准确反映其功能。
  • 日志记录:日志应包含足够的上下文信息,如请求参数和数据库 ID,以便于问题排查。
  • 代码清晰性:避免编写难以理解的代码,保持代码有良好的段落感和细节处理。
  • 避免长代码,举例如下:
    ugly: 
    list.push(...[arr.map(item=>****)])
    valid: 
    const list = [].map(item=> ****)
    return [...list,]

5. 前端特定规范

这一类规范专门针对前端开发,涉及 UI 组件和响应式编程等方面。

  • 使用新 API:尽量使用 UI 组件库提供的新 API。
  • 响应式变量定义:在 Vue 的 setup 函数中,不要在嵌套的函数内部定义响应式变量,而应在 setup 函数的顶层定义。
ugly: 
setup(){const fun1 = ()=>{const a = ref(1) ❌const b = reactive({1})}
}
valid:
setup(){const a = ref(1)const b = reactive({1})const fun1 = ()=>{// do something}
}
  • 对象赋值:建议使用 ref 而不是 reactive,参考: https://juejin.cn/post/7270519061208154112?from=search-suggest

reactive 重新赋值怎么做? object.assign

  • 条件渲染:在模板中使用三元运算符而不是 && 来处理显隐,&& 有可能会出现 0
  • 避免全局污染:静态变量应放在专门的配置文件中,如 config/const,避免散布在页面文件中造成全局污染。

http://www.mrgr.cn/news/6265.html

相关文章:

  • 【开端】 如何判断手机号码属于哪个国家(手机号判断正则)汇总
  • C 内联汇编
  • Java将一张excel数据填充到另一张excel表
  • 基于YOLOv8的船舶目标检测与分割(ONNX模型)
  • 一条sql 在MySQL中是如何执行的
  • 栅格布局在 HarmonyOS 中的应用及扩展
  • 智能听诊器:宠物健康监测的新篇章
  • 【SQL】商品销售
  • Spring 常见设计模式
  • C语言学习——文件
  • 微信小程序flex-grow无效
  • 尚品汇-购物车列表、临时用户购物车与登录用户购物车合并实现(三十七)
  • 流媒体服务器如何让WebRTC支持H.265,同时又能支持Web js硬解码、软解码(MSE硬解、WASM软解)
  • 【已上线】C++ mysql连接池
  • 【xilinx】Vivado 成功运行Ubuntu需要哪些 文件?
  • 【JVM】JVM内存模型与操作系统内存模型(二)
  • Mysql-linux通过rpm安装、linux离线安装mysql
  • XSS-过滤特殊符号的正则绕过
  • 【HarmonyOS NEXT星河版开发实战】天气查询APP
  • 极速文件预览!轻松部署 kkFileView 于 Docker 中!