关于开发流程和规范的一些初步想法

Q1:有些同事想问为什么要考虑规范的事情?你又不是大佬,别瞎操心,干好自己的事情就好了。

A1:首先我想说的是大型软件的开发不是一个人能够完成的事情(需求、产品设计、数据库设计、UI设计、前端编码实现、后端编码实现),这个过程需要多人配合(部门内部、跨部门),其中任何一个环节出了差错都会导致最终的产出与最初的设计大相径庭。

A2:老是说时间紧,没时间遵守甚至践踏开发规范和流程。殊不知由于这些原因,各个环节出现的看似很小的偏差,累积到最后交付的只能是充满各种问题的系统。lim (0.99999)^n = 0

A3:……

前端部门


废话说了一大堆,严以律己宽以待人,在要求别人规范前,先把自己所在前端部门的任务、职责和规范梳理一下

  1. 任务和职责
    • 按照产品部门输出的文档和UI输出的设计稿,实现设计的前端功能;
    • 按照后端部门输出的接口说明文档完成接口的集成;
    • 最终输出高质量的实现和相应文档;
    • 规范(目的代码可阅读,可协同开发)
  2. 技术上规范
    • 使用更多的ECMAScript 6标准语法来实现功能;
    • 确定使用Vue.js来实现功能;
  3. 风格上规范
    • 使用ESLint进行强制的代码风格检测,代码风格选定为StandardJS;
    • 变量、函数和文件命名使用英文驼峰命名,函数命名动词和名词组合;
  4. 代码质量(质量保证了,才能做得按时交付输出)
    • 引入代码监控机制以及统一的异常处理机制,做到任何错误都能监控,包括前端代码报错和接口响应报文状态码非200的错误响应;
  5. 系统框架、组件和util的封装(提高复用,更快的输出)
    • 以前没有做封装是因为人少、技术选型不同;
    • 封装常用的系统框架(2种后台管理系统和1种门户系统);
    • 常用组件的风格要和产品部门以及UI设计部门沟通确定,不同系统设计阶段要考虑到复用,这样封装的组件才能做到复用;如何封装组件,标准规范待讨论;
    • 常用util的封装,类似JSON数据的格式转换,Key值的替换等等;
  6. 其他(没想到和没想好的以后梳理补充)

接着就说说跨部门(岗位)协同时,对其他部门(岗位)的期望与要求

产品部门


  1. 输出产品说明文档
  2. 讲清整个产品设计的大致思路,是什么,干什么;
  3. 交互细节,业务的限制条件;
  4. 输出初步的产品设计原形;
  5. 目的时把设计者脑海中的设计展现给所有相关干系人,供评审、设计、编码实现、测试和产品宣讲;

UI设计部门


  1. 设计稿、标注和切图;
  2. 适配范围的确定,显示介质的最大分辨率和最小分辨率;
  3. 临界值的确定;
  4. 组件的设计参考已有组件库的设计,形态(样式、功能)不要做大的变化,最好能做到复用;

后端接口开发部门


  1. 接口文档,接口的请求方式,参数,参数的类型,返回值(可能需要双方确定)
  2. 接口规范
    接口风格采用RESTful风格,post、delete、put,delete方法和请求参数形式(path、query、body(JSON/FormData))的组合要做限制确定,如get和delete可以使用path和query两种形式,post和put可以使用path和body(json/formData)两种形式;

    1
    2
    3
    4
    5
    1. path形式 /url/:id;
    2. query形式 /url?param1=xx&param2=yyy;
    3. body(JSON/FormData)形式将参数在body中传值url中不可见,
    application/json参数是JSON形式,
    FormData的参数是字符串类型(不是JSON对象);
  3. 接口数据规范

    • 命名规范,英文,驼峰命名;
    • 数据类型的规范,该是json对象别用数组,该是数组别用对象;
  4. 接口格式规范
    • 统一的接口格式{code: 200, message: success, data: jsonObject}
    • 规范的错误代码code
    • 规范的错误消息message
  5. 提供可供集成的接口
    • 首先是规范的;
    • 其次是经过自己测试没问题的;
  6. 接口变更
    接口变更及时更新文档,及时通知相关干系人

测试部门


  1. 一般情况下测试时发现错误一般指派给前端(系统集成角色),确定相关干系人士做转发指派;
  2. 关于产品的设计和业务限制要尽量找产品设计人员沟通;

运维部门


前端系统部署时,前端人员提供部署文档和指导;