为测试而架构

软件架构的目标是什么?为了解耦?解耦的目标是为了什么?为了测试!

所以我意识到软件架构的根本目标是为了测试。如果代码是可测试的,那么这个软件架构就是好的,如果这个软件架构是难以测试的,那么就是垃圾。

定理:软件架构质量=最大测试覆盖率

一个不健壮的难以维护的软件架构,也必然是难以测试的,他所能达到的最大测试覆盖率必然是很低的。

一个测试覆盖率高的软件架构,其模块必然是解耦的,因此也必然是灵活的,必然是一个高质量的软件架构。

常见架构

1
2
3
4
5
6
7
8
9
10

--------------------------
* APP UI, API
-------------------|------
Service | |
Facility - Context |
ORM | |
--------------| |
* 配置 | |
--------------------------