Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

工作规范沉淀 - 持续更新 #30

Open
HXWfromDJTU opened this issue Oct 26, 2020 · 0 comments
Open

工作规范沉淀 - 持续更新 #30

HXWfromDJTU opened this issue Oct 26, 2020 · 0 comments

Comments

@HXWfromDJTU
Copy link
Owner

前言

不知不觉正式工作已经三年时间了,不同于自己的side-project,正式项目中更加强调流程化、标准化的工作规范。

比如淘系的《前端开发规约》,著名的雅虎35条军规等...学习参考固然重要,但能够沉淀下来成为自己的内容才更为重要。

本文会陆续补充自己在项目中犯过错,吃过亏的一些点,希望通过一次次脑海中的回荡,形成肌肉记忆...

交互

  1. 用户更改数据之后是否及时更新/拉取相关状态
  2. 实时性要求较高的数据,是否做了实施的更新请求。
    • 若采用轮询的方式,后端接口是否能够承受压力
    • 是否考虑使用ws
    • 实时更新数据,但网络不好的条件下。处理多个请求的返回,需要注意判断与当时的条件是否匹配。
  3. 重要操作都有防重复机制
    • 非幂等操作,诸如提现、转账等
  4. 如何决定提醒用户的层次
    • 是否过度打扰用户
    • 是否影响用户当前的主流程操作
    • 在轮询接口时,不要使用频繁弹出提示。(与请求一对一的提示是不必要的)
  5. 一个错误提示(弹窗)的关键要素
    • 用户理解为何出错的原因
    • 开发人员用于定位错误的错误码/错误信息
    • 对用户下一步的引导
  6. URL要尽量能表达页面的状态
    • 表单的条件状态要同步到URL中
    • 同步的时候必须要注意状态的数据流向,避免形成死循环
  7. 尽量缩短用户达到可交互时间的时长
    • 使用本地缓存,减少loading过程
    • 使用缓存初始化页面,然后静默更新,推动后端数据接口响应速度

代码逻辑

  1. API 请求都有错误处理

  2. 错误未被吞掉。

    • 本地日志
    • 主动上报日志
    • 使用 ToastDialog 通知用户
  3. 多个维度的逻辑相互交叉的判断时,要做到以下两点:

    • 不重复处理
    • 不遗漏处理
  4. 注释是否得当

    • 直译变量名的傻事不要去做
    • 特殊逻辑 关键逻辑 才需要添加注释
  5. 代码重复出现两次或以上,就有一定会有抽象的空间

  6. 内存管理

    • 计时器、时间监听,使用结束必须要记得清理
  7. 宁愿写面条代码,也不要将一处逻辑拆离地支离破碎

业务处理

  1. 对于货币decimal的处理
    • 在中心化业务下,建议食用大单位 带精度的值进行计算。而去中心化业务中,使用小单位 不带精度的值进行计算。
    • 需要在前端的几个数据来源入口处,把数据处理成统一的单位
      • 后端的数据接口
      • 用户的输入
      • 第三方SDK的计算结果
    • 在前端内部使用相同的计算单位,避免多次精度转换
    • 设计前端内部工具函数时,也参考上一条的计算单位

Vue.js

  1. 减少在watch中处理主业务代码
    • 因为其切面编写的原因,难以理清主要逻辑。
    • 建议使用在上报数据等场景下。
  2. 页面组件拆分
    • 注意横向拆分纵向拆分相结合
    • 一个组件参数过多,意味着此次的组件拆分需要重新考虑
  3. 使用vuex中的请求缓存
    • 数据的请求与基本异常处理要在action中完成
    • 数据的缓存写入,有内部完成。对外提供是否强制更新缓存的参数。
    • 请求的结果以 [error, resData]的形式对调用方进行暴露

工程实践

  1. i18n
    • 每次提交代码之前,需要确认没有待翻译的中文出现。
    • 需要根据实际场景,抽取特性的翻译规则,便于翻译人员理解场景。
  2. git commit
    • 以单一功能为commit粒度,思维清晰,尽量不交叉功能提交
    • commit message必须要遵循 commit log的形。(这一点可以使用husky保证)
  3. pull request
    • 多人开发一个大feature时,需要单独开辟一个功能主分支
    • 为保证单个pr的代码量,单个feature没有完成的情况下也可以提交。后续开发基于此分支为主分支,开辟子分支继续开发。
    • pr的粒度应该维持在多个小commit(步骤/功能)所组成的一个小任务(修复一个bug,一个功能优化)等等
    • pr已经被同事review通过的情况下,合并前不要对该分支代码进行过大改动。
  4. git rebase
    • 在合并主分支之前,必须rebase主分支的代码
    • 在大feature合并到主分支时,commit过多时,建议使用git merge
  5. 不要依赖Code Review,自己在提交的前,必须做足开发测试。

项目管理

  1. 作为开发有立场,不要被产品前者走
    • 站在开发、项目进度的角度,要和其他角色进行bargin
  2. 能够自己闭环的小问题,尽量自己闭环掉,不要为了分工而分工
  3. 自己的工作任务也应该有缓存区,不能够随便来一个任务,就马上使用主线程进行处理
  4. 向上管理、向下管理、平级管理,永远要管理好别人的期望。有些内容不属于技术,但比技术更重要。
  5. 项目中发现的问题,没有调查就不要随便发言,模糊的结论要优于错误的结论。

to be continue....

参考文章

[1] 阿里前端开发规范

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant