美文网首页
协同开发友好实践

协同开发友好实践

作者: 郁南 | 来源:发表于2020-05-27 14:01 被阅读0次

以下内容基于项目实践,抛砖引玉之用

一、目录结构

主要体现在 src 目录下

  1. src下的功能目录;
  2. 功能目录下的模块目录;
  3. 模块目录下的 index READ.md initData.ts components/ComponentA/index.tsx 等;
    image.png

二、文件命名

  1. src 下采用全小写,如pages/router/components;
  2. 页面或者组件采用 大驼峰/index ,如 pages/Index/index components/Form/index
  3. 语义化


    image.png

三、模块拆分

一般pages、components目录下的页面或组件都是按功能拆分编写,但其他功能就可能欠缺这种思想。
示例如下, router 以及 types 目录下的文件内容,全部都会经由 index 统一引入然后导出。

image.png

四、代码结构

主要体现是功能分层
一个好的页面Code,不但可以让人看起来舒心,更关键的是能给后面的维护带来极大的方便。
示例如下:

// Install API
import React, { FC, useRef, useState, useEffect } from "react";
import { useDispatch, useSelector } from "umi";
import produce from "immer";

// 公用组件
import { Button, Modal, message, Form, Select } from "antd";
import ProTable, { ProColumns, ActionType } from "@ant-design/pro-table";
import { ExclamationCircleOutlined, LeftOutlined } from "@ant-design/icons";

// 业务组件
import PhoneView from "./PhoneView"; 
import AllotModal from "./AllotModal"; 

// utils--如果觉得有必要,可以统一导出/引入 xxx from "@/utils"
import { exportData } from "@/utils";
import useModalVisible from "@/utils/Hooks/useModalVisible";

// 常量--如果觉得有必要,可以统一导出/引入 xxx from "@/services"
import { API_DELIVERY } from "@/services/request";
import { adminUrl } from "@/services/host";

// 请求--如果觉得有必要,也可以把所有接口统一导出/引入 xxx from "@/services/api"
import { getTaskList } from "@/services/TaskManage";

// types
import { Store } from "antd/es/form/interface";
import {
  TableListItem,
  TaskType,
  TaskTypeEnum,
  OptionsType,
  StatusType,
  KeysType,
  ParamsProps,
  ThirdpartyEnum,
} from "./types";

// 本页面使用types...
interface IProps {}
// 本页面使用的function...
function util(){}
// 本页面声明的常量...
const initData = {}
// 页面/组件内容,如下
const List: FC<IProps> = ({})=>{
    // 初始化数据
  const [state,setState] = useState<string>('')
  const [stateList,setStateList] = useState<{id:number,name:string}[]>([])
  
  // 初始化请求
  useEffect(()=>{
    getList().then((res:any)=>{}).catch((err:any)=>{})
  })
  
  // 依赖更改
  useEffect(()=>{
    // do something
  },[state])
  
  // 注释--根据id获取列表
  const getList = (id:number)=>{
    // 处理注释...
  }
  
  // JSX代码结构
  return (
    {/* 页面主要内容 */}
    
    {/* 弹窗内容 */}

        {/* 其他... */}
  )
}

五、代码量级

  1. 页面代码尽量少于500行+;

页面代码功能众多,逻辑复杂,就尽可能拆分成组件组装的方式,把功能/逻辑拆分,这样可以避免代码冗长,方便维护,以及做性能优化

  1. 组件代码尽量少于300行甚至是100行+

拆分出来的功能组件,一般建议少于300行;components目录下的公用组件,一般建议少于100行;

  1. 如果组件功能仍然复杂,看情况继续拆分;

  2. react推荐函数式编程,所以组件尽量使用函数式,而且无论是函数式组件还是class组件,都应该做性能处理;

最后:语义化和代码注释,是协同开发的重中之重!

相关文章

  • 协同开发友好实践

    以下内容基于项目实践,抛砖引玉之用 一、目录结构 主要体现在 src 目录下 src下的功能目录; 功能目录下的模...

  • 基于码云的协同开发实践

    需求描述如下: 有一个基础性工程共享给大家使用,缺省不允许使用者直接提交修改 使用者在使用过程中会发现问题,需要及...

  • 协同开发

    通过需求评审,我们确定了具体工作内容,即将PRD中要求的功能实现出来。为此,各个工种互相配合,将功能落地实现。 在...

  • 02days yoyo

    学习笔记 问题:墨刀用来协同画图。? 实践:使用下墨刀,但协同没发现啊

  • 用敏捷工具Leangoo泳道实现Scrum任务看板

    在敏捷开发的实践当中,通过可视化的任务看板来实现团队协同和透明化管理是必不可少的一个实践。通过可视化的任务看板我们...

  • Git 命令实践(二)

    实践(一)之后,我们完成了对本地代码操作;为了能够协同开发,我们就得把代码提交到远端仓库。 那么现在介绍一下将本地...

  • 阿里云持续部署环境-云效使用简介

    云效,一站式企业协同研发云,源于阿里巴巴多年先进的管理理念和工程实践,提供从“需求->开发->测试->发布->运维...

  • git协同开发

    1.两人协同 以主角A和B为例, A着手开发test库,并用git管理; A邀请B参与test库; B通过克隆局域...

  • vim协同开发

    vim编辑器可以说是程序员最喜爱的编辑器之一,它出色的效率和优雅的快捷映射使得它深受使用者所喜爱。 结伙编程是最近...

  • 计算机毕业设计Python+Vue.js+Flask+Scrap

    开发技术 协同过滤算法、机器学习、vue.js、echarts、Flask、Python、MySQL 创新点 协同...

网友评论

      本文标题:协同开发友好实践

      本文链接:https://www.haomeiwen.com/subject/gyswahtx.html