《软件工程之美》day4

什么架构师思维

架构设计,就是要控制技术的复杂性,其中有几种有效的方式:

  1. 抽象
  2. 分治
  3. 复用
  4. 迭代

抽象思维

抽象思维可以说是整个架构设计的基础。因为对于架构设计来说,是要为了满足业务需求的,而业务需求都是一些文字性的描述、原型、UI 设计图,这些需求要最终变成代码让机器执行,就必须先进行抽象,抽象成计算机能识别的模型。

分治思维

架构设计的一个重点,就是要对复杂系统分而治之,分解成小的、简单的部分。但光分解还是不够的,同时还需要保证分解后的部分能够通过约定好的协议集成在一起。

复用思维

复用是一种非常简单有效的提升开发效率的方法,通过对相同内容的抽象,让其能复用于不同的场景。

迭代思维

好的架构设计,通常不是一步到位,而是先满足好当前业务需求,然后随着业务的变化而逐步演进。

优秀架构师的特点

所以要成为好的架构师,需要具备几个条件。

  1. 有架构师思维:具备良好的抽象思维、分治思维、复用思维和迭代思维;2. 懂业务需求:能很好地理解业务需求,能针对业务特点设计好的架构;
  2. 有丰富的编码经验:像抽象、分治、复用这些能力,都需要大量的编码练习才能掌握;另外保持一定量的编码经验也有助于验证架构设计;
  3. 良好的沟通能力:架构师需要沟通确认需求,需要让团队理解架构设计。

什么是技术债务?

技术债务,就是软件项目中对架构质量和代码质量的透支。

识别技术债务

  1. 开发速度降低:通常项目正常情况下,在相同的时间间隔下,完成的任务是接近的。尤其是使用敏捷开发的团队,每个任务会评估故事分数,每个 Sprint 能完成的故事分数是接近的。但是如果单位时间内能完成的任务数明显下降,那很可能是技术债务太多导致的。
  2. 单元测试代码覆盖率低:现在大部分语言都有单元测试覆盖率的检测工具,通过工具可以很容易知道当前项目单元测试覆盖率如何,如果覆盖率太低或者下降厉害,就说明存在技术债务了。
  3. 代码规范检查的错误率高:现在主流的语言也有各种规范和错误检查工具,也叫 lint 工具,比如 Javascript 就有 eslint,Swift 有 SwiftLint,python 有 pylint。通过各种 lint 工具,可以有效发现代码中潜在的错误和不规范之处,如果错误率高,则说明代码质量不够好。
  4. Bug 数量越来越多:正常情况下,如果没有新功能开发,Bug 数量会越来越少。但是如果 Bug 数量下降很慢,甚至有增多的迹象,那说明代码质量或者架构可能存在比较大问题。

解决技术债务有三种策略

  1. 重写:将老系统推翻重写、
  2. 维持:维持现状,只对严重问题修修补补。
  3. 重构:每次只是改进系统其中一部分功能,在不改变功能的情况下,只对内部结构和代码进行重新整理,不断调整优化系统的结构,最终完全偿还技术债务。

预防技术债务的产生

  1. 预先投资:好的架构设计、高质量代码就像一种技术投资,能有效减少技术债务的发生;
  2. 不走捷径:大部分技术债务的来源都是因为走捷径,如果日常能做好代码审查、保障单元测试代码覆盖率,这些行之有效的措施都可以帮助你预防技术债务;
  3. 及时还债:有时候项目中,因为进度时间紧等客观原因,导致不得不走捷径,那么就应该把欠下的技术债务记下来,放到任务跟踪系统中,安排在后续的开发任务中,及时还债及时解决,就可以避免债务越来越多。

内容来源

极客时间 软件工程之美

posted @ 2021-01-14 20:22  PwnKi  阅读(22)  评论(0编辑  收藏