文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

代码质量的四个阶段之3Rs软件架构介绍

2024-12-13 23:56

关注

当提到代码质量,我们可能会想到:代码风格,命名,内聚,耦合,重复代码率,圈复杂度等等。当提到代码优化,我们可能会想到代码风格规范,高内聚,低耦合,单一职责,开放封闭原则,约定优于配置,单元测试等等。

给你一段代码,你能简要扼要的说出当前代码的质量情况,并提出优化的方向吗?

如果觉得很难,可以参考 3Rs 软件架构[1]。

3Rs 软件架构对代码质量做了分层,给优化代码提供了方向:可读性 => 可重用性 => 可重构。下面我们来具体了解下每层代码的特点及优化方法。

第 4 个阶段: 很难维护的代码

这阶段的代码很难维护,俗称shi代码。这阶段的代码,读起来和改起来都很难。

这阶段的代码读起来难。例如:

这阶段的代码改起来也难。例如:

第 3 个阶段:可读的代码(Readability)

这阶段的代码可读性好。可读性好换个说法就是读起来不费脑子。它有以下的特征:

如何达到

要达到这个阶段相对比较容易。

代码检查工具能保证代码风格的统一。代码检查工具也能检查:函数的参数个数,圈复杂度[2]等。工具有: ESLint[3],CSS Lint[4]等。代码改动后,必须通过工具检查通过后,才允许提交。用代码格式化工具,可以自动修复有代码风格问题的代码。工具有 Prettier[5] 等。

这阶段最难的就是命名了。好的命名是“看其名而知其意”,是直白的,有意义的。推荐使用故宫命名法[6]。了解更多命名的技巧见这里[7]。

第 2 个阶段: 可重用的代码(Reusability)

这阶段的代码是可重用的代码。这个阶段代码的特点:

如何达到

要达到这个阶段需要在做代码设计的时候,设计好模块之间的边界和 API,做到职责清晰,高内聚,低耦合。达到这个阶段的建议:

第 1 个阶段: 可重构的代码(Refactorability)

这阶段的代码是可重构的。这意味着,当你重构某块代码(不修改对外的API),不改其他代码,其他代码仍能正常工作。这个阶段的代码一定是低耦合的。模块之间的连接就像乐高。

如何达到

要达到这个阶段需要:

隔离副作用

副作用指修改模块外的数据。例如:修改全局变量,修改 DOM等。

在模块代码中,混入副作用代码会导致如下的问题:

如何隔离副作用?答案是在统一的地方管理应用的全局数据。比如用 Redux[8] 或 Vuex[9]。

测试

这边的测试指的是白盒测试。测试可以保证代码的改动不会影响测试覆盖部分的功能。

对前端来说,需要写单元测试,端到端测试。每次提交代码,所有测试都需要跑过。

静态类型

使用静态类型可以规避很多低级的语法和逻辑错误,比如参数少传了。目前前端静态类型主流是用 TypeScript[10]。

参考资料

[1]3Rs 软件架构: https://github.com/ryanmcdermott/3rs-of-software-architecture

[2]圈复杂度: http://eslint.cn/docs/rules/complexity

[3]ESLint: https://eslint.org/

[4]CSS Lint: http://csslint.net/

[5]Prettier: https://prettier.io/

[6]故宫命名法: https://juejin.cn/post/6844903913892610061

[7]这里: https://www.yuque.com/fegogogo/fe/wup00n

[8]Redux: https://redux.js.org/

[9]Vuex: https://vuex.vuejs.org/zh/guide/

[10]TypeScript: https://www.typescriptlang.org/

 

来源:前端GoGoGo内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯