F61bc9afe852d43c6ddd5d9ba842da17
[译]架构的初衷

在 medium 上看到这篇文章: Designing iOS architecture: Motivation,觉得写的非常有意思。
用我的理解把这篇博客的内容讲述一遍。

什么是架构

架构是顶层的系统性设计。
系统设计用来促进应用程序内代码的产生。
应用程序是达成商业目标的一个中介。

可以没有架构吗?

即使你在写一个 app 前没有考虑过架构设计,你在写代码前依然需要决策,这被称为随缘系统设计,最后的架构就是随缘架构(accidental architecture)。

其实很容易发现这种架构:
Q:这代码怎么写的这么丑?
A:历史原因。。。

能得到什么好处

建立一个正式的架构而不是想到哪些到哪需要制定规范、约束,根据代码未来的扩展设立模式。
建立一个架构就像建立一条给代码前进的轨道,这样代码的增加才会有据可依。

我为什么要约束自己

规范,约束,模式可以有助于:

  • 代码遵循最少惊奇原则
  • 理解现有系统是怎么工作的
  • 避免重复造轮子
  • 和社区的人分享工作想法

我直接用网上别人的架构怎么样

你应该从这些架构中学习,但是那些架构也有很多问题:

  • 没有提供项目增长后的策略
  • 只对某一个特定规模的团队或者 app 有效
  • 少数几个层次的抽象组件和通信
  • 模糊的角色定义
  • 很激进,带有偏执的倾向

我有能力自己设计吗?

没有人敢说自己有足够的能力设计一个完美的架构,但是你能力越强,你就能越接近终点。
下面一些方式可以帮助你提高设计能力:

top Created with Sketch.