一次前端的CodeReview发现了很多问题

1,401 阅读3分钟

初入职场的我们,都是从一个小兵开始的。

不会上来就让你做用户量特别大的产品,因为用户越多需要考虑的地方越多,规范也越多。

所以在做前期简单的需求时,我们要养成一些好的开发习惯,为以后的发展做好准备。

一、引入本地文件、三方文件

  • 引入文件的顺序,一般依赖的库写在前面,本地文件写在后面,同类型的可以空格区分
  • 避免冗余的引入

不好的示范: 企业微信截图_f12df42f-d5fe-4fb4-861d-7f9612fc6548.png

更好的写法:

// js库
import { Fragment, useCallback, useEffect, useMemo, useState } from 'react';
import PropTypes from 'prop-types';
import { Box, Typography, Alert, TableContainer, TableBody, TableCell, TableHead, TableRow, Paper, Table } from '@mui/material';
import { useFormik } from 'formik';
import * as yup from 'yup';
import FormatMessage from 'intl-service';
import { useTheme } from '@mui/material/styles';
import EastIcon from '@mui/icons-material/East';
// 本地组件
import UAutocomplete from 'views/components/UAutocomplete';
import SelectList from 'views/components/SelectList';
// 本地js方法
import { fieldType } from 'utils/const';
import { underscoreToCamel } from 'utils/utils';
// API
import { GetCDPAttributes } from 'api/contacts';

二、引入文件名称,大小等

  • 保持组件名和文件名的一致,防止出现下图中,相似却不同,导致后续开发很容易就看错位。
  • 文件命名大小写根据当前项目的规范进行。

企业微信截图_286928f6-7e97-41b8-a24f-db4763edff78.png

三、错误单词

现在插件那么多,单词检测的插件各种各样的都有,属实不理解一堆错误单词

image.png

四、无脑复制的代码要Review下

去掉无用的注释,保持代码整洁

image.png

image.png

减少无用代码判断

image.png

本地代码减少不确定性的判断

image.png

五、枚举值的维护

代码里面很容易出现1,2,3这样的判断,导致代码维护成本高昂。

企业微信截图_0dbfb583-134c-4613-9a69-62a3cffa5f48.png

针对跳转路径,最好是引用定义的地方,或提取在页面顶层,不要嵌入到页面,维护成本贼拉高

image.png

六、组件的封装

封装的组件要做好参数校验和必要的参数说明,当然下面只是一个很简单的组件。

image.png

七、常量

错误示范: image.png 常量建议写法

const CHART_LINE_HEIGHT = '400px';

八、调用函数时尽量保持参数的整洁

不好的示范,特别是js写法的情况下,下面的写法根本就看不出来,当前的函数需要几个参数,如果漏一个很容易出现隐藏的Bug。

image.png

九、代码的简写

不好的示范: image.png

更好的写法

flag ? setChartLoading(false) : setTableLoading(false)

不错的写法 image.png

尝试另一种写法

const [success, failed, unknown, cost] = [[], [], [], []]

十、尽量不要将mock数据放在组件中

Mock数据不可避免,如果必须那就单独建个mock文件/目录,减少删除代码时造成的Bug

image.png

十一、帮助我们加快开发速度的方法

  • 1、快捷键(Tab、VIM)
  • 2、专注
  • 3、业务熟悉和分析(业务流程图/站在用户的角度思考问题)
  • 4、AI插件的使用
  • 5、前置、并行的任务是否完成(提前处理一些没有依赖的组件)
  • 6、自动化解决的问题是否处理(代码格式化,单词检测)
  • 7、一些工具和常用的库,减少自行封装