目前现存项目其实大部分更多的是迭代,维护,这类项目,更重要的是稳定性,那一般从工程中,常见策略,是通过单测,或者自动化测试等,但是本文,更多的是想从开发者自身,编码习惯,设计思想,数据流设计等方向,从根源去解决,如果每次都依赖测试去发现,本质上也是没有对自己的代码,和项目负责
编码习惯
抽象复用,凡是有可能超过两次使用模块,函数,全部抽象 涉及数组下标的访问,需要去考虑这个数组越界问题。 不要在上线前几个小时,重构,变更代码需求
全局变量,还有那些定义当前组件的公共方法,提至当前组件顶部
编码原则之--对于共有的函数需要去提炼共有路哟及hi
冗余字段变量要及时去除,避免后期引用变量混乱,统一,同时设立全局redux变量,不要什么都设置,只有出现多次被引用,才行
对于多个涉及同样策略的逻辑应该统一提炼到一处
尽最大限度避免重复,无效接口请求造成的访问压力,如果出现明细的空值请求,统一拦截在实际请求前
尽量用解构运算符合简化操作,对于可能多个用到的变量,需要统一提前解构获取,更容易理解和阅读
编码原则: 对于接口调用,首先判空,避免空值调用,其次对于一些非法字段请求,也应该一开始就不应该去
对于useeffect由于初始化即便有依赖性但还是会被执行,所以你必须重新合并或者缓存
线上多次报错的根源在于返回内容有可能无也就是undefined,这类问题想从根源解决要考虑当前入参,值有没有可能是undefined ,也就是要对所有可能为空的值做兜底。
JSON.parse() 补充 try...catch color需定义并使用变量 组件开发中,一般要每个颜色都有统一的变量,不要自己随便去定义。
方法名称的命名应体现方法用途及返回情况,见名知意
参数判空条件,要注意隐士转换问题,因为其实真正关注的是否为null,undefined 对于本身!0的方式,有可能,直接就是为真了,这个判断是否存在的条件,要具体,不能只去写一个if(!test) 这种会规避隐含问题
加上代码执行顺序尽量,不要和书写顺序解耦,不要因为换个位置就导致非预期结果,这种把条件语句调换一下位置,整个逻辑就错了,整体代码结构非常的脆弱
let target = valatilityData?.data?.[0]?.volatilityDetail;
if (valatilityData?.volatilityType === volatilityType &&
valatilityData?.endTradeDateType === endTradeDateType &&
valatilityData.underlying === windCode
// 是否正确
// target.length > 0
) {
// 境内逻辑
if (judgeIRIB(windCode, isAbroad)) {
let initialValue = target?.[0]?.[index];
if (volatilityType === 1) {
initialValue = '100%';
}
if (volatilityType === 2) {
initialValue = target?.[(target?.length - 1) / 2]?.[index];
}
if (varietyType === undefined) {
setSelectVale([])
} else {
setSelectVale([initialValue]);
}
} else {
if (volatilityType === 0) {
target = getSurroundingObjects(target, baseLine, 20);
}
let initialValue = target?.[0]?.[index];
if (volatilityType === 1) {
initialValue = '100%';
}
if (volatilityType === 2) {
initialValue = target?.[(target?.length - 1) / 2]?.[index];
}
函数名字不语义化,语义化主要是从这个函数的功能去思考叫什么,it must be a 动词
组件库的开发原则:颜色变量,不要写死,一个是为了复用,另一个是为了不同主题色的切换。
防御编程思想的建立: 尤其看到一个函数,首先思考的是这个参数需要传递哪些,然后这个函数功能如何,以及这个参数是否存在越界的情况。正数,负数,0是不是都可以
样式代码尽可能减少类名的书写,不同条件下,可以依据类名进行区分,共有属性可以提炼至全局。
接口定义,要注意,不要去给变量声明的时候,不要随意去继承, 接口继承的前提是这个继承的类型是能用的上的。
颜色变量,组件开发,一方面为了复用,已经主题切换,颜色变量不要写死,就是要用到变量去解决。