Skip to content

Latest commit

 

History

History
200 lines (164 loc) · 5.15 KB

规范.md

File metadata and controls

200 lines (164 loc) · 5.15 KB

规范

命名

  • 文件

    • 全部小写字母

    • 单词以.符号为分隔,如文件home.list.stateless.tsx

    • 临时、测试的文件(文件夹),命名以 _ 字符开始,如_test.js

    • 通用命名意义

      word mean
      stateless 无状态组件
      stateful 有状态组件
  • 变量

    • 使用驼峰命名法,如let homeStackNavigator = 0
  • 注释

    • 变量

      错误

      //性别
      let sex = "男";       
      

      正确

      let sex = "男";       //性别
      
    • 对齐

      错误

      let sSex = "男";       //性别
      let sName = "小明";       //用户名
      let sBirthday = "2019-01-01";       //生日
      

      正确

      let sex = "female";                  //性别
      let name = "alice";                  //用户名
      let birthday = "2019-01-01";         //生日
      

      正确

      /**
       * @param {sex} 性别
       * @param {name} 用户名
       * @param {birthday} 生日
       */
      let sex = "female";
      let name = "alice";
      let birthday = "2019-01-01";
      
    • props各项参数必须写明注释

项目结构

目录

* doc               文档
* config            Taro配置文件夹
* node_modules      包依赖
* src               源代码
    * action              业务类库
    * common              通用工具库
    * component           组件库
    * container           页面
    * eos                 eos资源和接口
    * img                 图片静态资源
    * service             接口层
    * store               redux
    App.tsx               App主页面
    constants.ts          reducer接口文件
    NavigationService.ts  顶级导航器
    route.tsx             路由配置页面
    TabNavigator.tsx      首页
  • 直接被展示为页面的组件存放在src/container,页面内的所有组件存放在src/component
  • src/component/* 文件夹下的所有页面平级
  • src/container/* 文件夹下的所有页面平级
  • src/container下不直接放置文件,至少需要一级文件夹

Git

  • 必须在私有分支开发,不允许直接使用master

  • 不允许提交

    • 无法编译、无法运行的代码
    • 非必要文件,运行库(node_modules)、编译后的apk等
  • 尽少提交

    • 测试、打印日志代码(这会导致debug时console被刷屏)
  • 提交Message

    • 提交必须附带Message

    • 不使用笼统的文言,如小调整日常提交优化内容微调

    • 列重点

      错误:

          添加了首页,修改了安卓打包的配置,删除了启动页,目前首页写了一半
      

      正确:

          * 新增,首页
          * 修改,安卓打包的配置
          * 删除,启动页
          * 进步,首页写了一半
      

  • 暂不允许升级react-native版本(因为0.57到0.60有重大升级)
  • 安装新module时必须保证原生链接正常,且双端正常运行
  • 统一使用npm/yarn作为包管理器,优先保证package-lock.json的正确性

打包

  • 打包前必须清除缓存
  • 每天至少编译一次Android、iOS的安装包

编码

  • 作成者信息

    文件首部添加 文件简述、作者信息、时间

    example.tsx

    /**
      * @Author: centerm.gaohan 
      * @Date: 2019-06-14 14:27:00 
      * @Last Modified by: centerm.gaohan
      * @Last Modified time: 2019-08-27 17:08:40
      * 
      */
    ...
    
  • 类型

    • 编写组件必须声明Props与State的类型,即Component<IProps,IState>,严禁不声明类型的写法和滥用any
    • 不允许给结构确定的object、array申明为any
    • props只传入必要参数,非必要参数须申明为可选类型
    • 类型有限的参数使用enum
  • redux

    • 必须事先在constants中声明要执行的reducer操作
    • 声明之后在action.ts中进行配置
    • store必须为纯函数
  • 使用断言

    //错误
    if(sex === 0){
        return "男"
    }else{
        return "女"
    }
    
    //正确
    if(sex === 0){
        return "男"
    }else if(sex === 1){
        return "女"
    }else{
        console.error(message)
    }
    
  • switch 语法必须写 default

  • 删除所有未使用的引用 (import)

  • 尽量使用已有样式、组件

  • 合并空标签

    //错误
    <View></View>
    
    //正确
    <View/>
    
  • 全部使用分号结尾(尽管js不要求)

  • 多使用无状态组件,以降低复杂度