blog
blog copied to clipboard
工作规范沉淀 - 持续更新
前言
不知不觉正式工作已经三年时间了,不同于自己的side-project
,正式项目中更加强调流程化、标准化的工作规范。
比如淘系的《前端开发规约》,著名的雅虎35条军规等...学习参考固然重要,但能够沉淀下来成为自己的内容才更为重要。
本文会陆续补充自己在项目中犯过错,吃过亏的一些点,希望通过一次次脑海中的回荡,形成肌肉记忆...
交互
- 用户更改数据之后是否及时更新/拉取相关状态
- 实时性要求较高的数据,是否做了实施的更新请求。
- 若采用轮询的方式,后端接口是否能够承受压力
- 是否考虑使用
ws
- 实时更新数据,但网络不好的条件下。处理多个请求的返回,需要注意判断与当时的条件是否匹配。
- 重要操作都有防重复机制
- 非幂等操作,诸如提现、转账等
- 如何决定提醒用户的层次
- 是否过度打扰用户
- 是否影响用户当前的主流程操作
- 在轮询接口时,不要使用频繁弹出提示。(与请求一对一的提示是不必要的)
- 一个错误提示(弹窗)的关键要素
- 用户理解为何出错的原因
- 开发人员用于定位错误的
错误码
/错误信息
- 对用户下一步的引导
- URL要尽量能表达页面的状态
- 表单的条件状态要同步到URL中
- 同步的时候必须要注意状态的数据流向,避免形成死循环
- 尽量缩短用户达到
可交互时间
的时长- 使用本地缓存,减少
loading
过程 - 使用缓存初始化页面,然后静默更新,推动后端数据接口响应速度
- 使用本地缓存,减少
代码逻辑
-
API 请求都有错误处理
-
错误未被吞掉。
- 本地日志
- 主动上报日志
- 使用
Toast
、Dialog
通知用户
-
多个维度的逻辑相互交叉的判断时,要做到以下两点:
- 不重复处理
- 不遗漏处理
-
注释是否得当
- 直译变量名的傻事不要去做
-
特殊逻辑
关键逻辑
才需要添加注释
-
代码重复出现两次或以上,就有一定会有抽象的空间
-
内存管理
- 计时器、时间监听,使用结束必须要记得清理
-
宁愿写面条代码,也不要将一处逻辑拆离地支离破碎
业务处理
- 对于货币
decimal
的处理- 在中心化业务下,建议食用
大单位
带精度
的值进行计算。而去中心化业务中,使用小单位
不带精度
的值进行计算。 - 需要在前端的几个数据来源入口处,把数据处理成统一的单位
- 后端的数据接口
- 用户的输入
- 第三方SDK的计算结果
- 在前端内部使用相同的计算单位,避免多次精度转换
- 设计前端内部工具函数时,也参考上一条的计算单位
- 在中心化业务下,建议食用
Vue.js
- 减少在
watch
中处理主业务代码- 因为其切面编写的原因,难以理清主要逻辑。
- 建议使用在
上报数据
等场景下。
- 页面组件拆分
- 注意
横向拆分
和纵向拆分
相结合 - 一个组件参数过多,意味着此次的组件拆分需要重新考虑
- 注意
- 使用vuex中的请求缓存
- 数据的请求与基本异常处理要在
action
中完成 - 数据的缓存写入,有内部完成。对外提供是否强制更新缓存的参数。
- 请求的结果以
[error, resData]
的形式对调用方进行暴露
- 数据的请求与基本异常处理要在
工程实践
- i18n
- 每次提交代码之前,需要确认没有待翻译的中文出现。
- 需要根据实际场景,抽取特性的翻译规则,便于翻译人员理解场景。
- git commit
- 以单一功能为
commit
粒度,思维清晰,尽量不交叉功能提交 -
commit message
必须要遵循commit log
的形。(这一点可以使用husky保证)
- 以单一功能为
-
pull request
- 多人开发一个大
feature
时,需要单独开辟一个功能主分支 - 为保证
单个pr
的代码量,单个feature
没有完成的情况下也可以提交。后续开发基于此分支为主分支,开辟子分支继续开发。 -
pr
的粒度应该维持在多个小commit
(步骤/功能)所组成的一个小任务
(修复一个bug,一个功能优化)等等 - 在
pr
已经被同事review
通过的情况下,合并前不要对该分支代码进行过大改动。
- 多人开发一个大
- git rebase
- 在合并主分支之前,必须
rebase
主分支的代码 - 在大
feature
合并到主分支时,commit过多时,建议使用git merge
- 在合并主分支之前,必须
- 不要依赖
Code Review
,自己在提交的前,必须做足开发测试。
项目管理
- 作为开发有立场,不要被产品前者走
- 站在开发、项目进度的角度,要和其他角色进行
bargin
- 站在开发、项目进度的角度,要和其他角色进行
- 能够自己闭环的小问题,尽量自己闭环掉,不要为了分工而分工
- 自己的工作任务也应该有缓存区,不能够随便来一个任务,就马上使用
主线程
进行处理 - 向上管理、向下管理、平级管理,永远要管理好别人的期望。有些内容不属于技术,但比技术更重要。
- 项目中发现的问题,没有调查就不要随便发言,模糊的结论要优于错误的结论。
to be continue....
参考文章
[1] 阿里前端开发规范