软件架构原则注记

2020-09-17 10:21:51 +08:00
 jatsz

软件架构

软件架构的整体目标:降低软件的整体复杂度(Overall Complexity)。

在这样的基础前提下我们看看软件架构整体原则和手段。在看架构的时候,有些书阐述的是原则,有些书更加着重于手段。从根本上讲是同一个东西的不同侧面。

模块化

这个在架构上已经是通识了,也是应对复杂的直接和有力的手段。模块化如果上升到原则层面可以描述为:高内聚和松耦合。通过什么样的指导原则或者手段来划分模块呢?

需要注意的就是模块化是有成本的。抽象的成本是会蠕变,其次通信的成本。在应用模块化的时候需要检测这些成本,过犹不及。

抽象是会蠕变的,有可能让系统剩下的部分变的不那么清晰。这个可以称之为蠕变(creep)或者说是背负(carry on)成本。

依赖管理-让不稳定的依赖于稳定的

这里在架构上也是通识,但在实现中花样有点多。也不是很容易理解。常见的依赖管理手段

透明性

这一点在架构上没有得到足够的重视,即使是很小的项目,简单的代码,也要保证其透明性。通常通过下面手段来保证架构的透明性

数据为王

在架构中,数据为王。这个被严重低估和忽视了。

程序性能是个功能选项( Performance is a feature )

https://www.imzjy.com/blog/software-achitecture-principle-notes

//有没有啥特别重要被我遗漏的?

3006 次点击
所在节点    编程
3 条回复
jones2000
2020-09-17 13:15:54 +08:00
最总要的是代码 review, 把你的这些原则在代码 review 里面体现出来,不符合的退回去重写。 否则都是空谈。
mightofcode
2020-10-13 22:22:52 +08:00
从原则怎么落地到实际产品研发,这里面其实还有一段距离
jatsz
2020-10-14 09:40:42 +08:00
@mightofcode 赞同。距离相当长,这些原则如果不加思考的使用,可能还不如把精力集中在问题本身来的更直接。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/707805

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX