CodingWithAlice

我的一方小天地,如果对你有帮助,那真的太好了

包管理工具

包管理工具 常见错误: 1、pnpm 的lock 文件是 pnpm-lock.yml, ❌ 不是pnpm.yml 参考文章:JavaScript package managers compared: npm, Yarn, or pnpm? 看到另一篇主要讲 pnpm 实现的博客,也可以了解下 2022年了,你还没用pnpm吗? 背景:在工作遇到 (node14)npm...

重构中的测试

重构中的测试 每当我要重构的时候,第一个步骤永远相同:我得确保即将修改的代码拥有一组可靠的测试 –> 在日常开发中,我们能够体会到修复 bug 通常是比较快的,但是找出 bug 所在却是一场噩梦 测试过程中很重要的一部分,就是测试程序对于结果的报告方式。要么变绿,要么变红,用于自我检验,否则就得耗费大把时间来回对比,这会降低开发速度 -> 测试自动化,让它们检查自己的测试结果...

重构的方法论

重构的方法论 重构经历那么多年,也有很明确的方法论,可以让我们以成本最小的方式,对有问题的代码,进行重构(书中给出的方法,其实和设计模式一样,是一种经验的理论化,产生了具体的方法论,每一种重构方式并不是只有书中提到的方式,但是书中提到的路径一定是相对可执行度比较高,也不容易出错的) 接下来按照书中页码顺序,记录一下学习重构案例的一些心得(笔记让我可以快速搜索关键词找到内容) ps.这里...

修改 useCallback 函数的危险性

修改 useCallback 函数的危险性 useCallback hooks 生成的函数,在依赖不变的情况下,这个函数是不会变化的; 功能 新增一个 lastStatus 存储 上次 status 的状态 问题 当前函数使用了 useCallback ,只在 appId 变更(初始化时)生成函数,后续再访问当前函数,变量 status 一直为 ‘‘,无法读取到上一次接口的值 ...

useEffect不能写异步函数

useEffect不能写异步函数 总结 1、useEffect 中不能写 async 异步函数 useEffect(async () => {}, []) 原因:useEffect 回调函数 应该返回一个清理函数 或 undefined - 而 async 函数隐式返回一个 promise,违反了 React 的规则 ...

需要重构的特征

需要重构的特征 没有恒定的标准,只有迹象,是否重构需要培养自己的判断力 1、switch 写法 / 条件表达式 虽然便于扩展,但是这样的分支逻辑很容易随着代码堆积而腐坏 —> 解决方案:类型多态(以多态取代条件表达式(272)) 实现方式:创建一个继承体系,多个子类 -> 每个子类包含各自独立的计算逻辑,调用者调用一个多态的函数,由语言分发到不同的子类计算过程中 ...

重构的关键理念

重构的关键理念 1、如果一段代码能正常工作,并且不会再被修改,或者我不需要修改它来帮助我工作,那么完全可以不去重构它 2、代码被阅读和修改的次数,远远多于它被编写的次数 实质:这个修改者可能是我自己,而我总是记不住自己写过的代码 3、本质上来说,重构就是在代码写好之后改进它的设计。 程序设计不是在一开始完成的,而是在整个开发过程中逐渐浮现出来。在系统构筑过程中,要学会...

创建一个变量保留上一次值

创建一个变量,保留上一次值 背景: 在回滚部署成功后,我需要提示「回滚成功」 当前部署状态通过在前端页面轮询实现 我的实现方案:通过监听 status 的变化,异步实现 lastStatus 的变化,可以在查询 status 和 lastStatus 的时候,得到 status 为 success 和 lastStatus 为 pending 的一个时机,弹出弹窗: useEffec...

怎么在业务中写可维护性的代码

怎么在业务中写可维护性的代码 本文适用对象:不适合新人小白,适合有一段时间的开发工作经验 本文组成: 写可维护性代码有什么好处?(收益 - Why) 我要付出什么才可以写出可维护性高的代码?(投入 - How) 要做什么?(What) 1、写可维护性代码有什么好处? 首先,全文的基础是:“业务永远是优先的”,在企业里技术的价值是为业务服务来体现的,可维护性代码不是为...

工作 Mac 好用的软件记录

工作 Mac 好用的软件记录 俗话说,磨刀不误砍柴工,我十分喜欢研究一些让电脑用起来很“顺畅”的软件,我喜欢快捷键,喜欢各种让工作、学习更顺畅的小软件;但是我又十分“愚钝”,如果没有直接的操作文档,我很难自己去设计新的脚本来依赖软件实现更好用的功能(我真的很懒,懒得研究,就喜欢开箱即用)。 工作两年多,我也积累了不少好用的软件,是日常一直在使用的一些软件,推荐给大家。很多软件本身是收费的...