设计iOS架构:动机

在本系列文章中,让我们探讨创建自己的体系结构的主题。

什么是建筑?

架构是系统设计的最高级别。

系统设计是一种促进为应用程序生成代码的方式。

应用程序是实现(业务)目标所需的介质。

我可以跳过吗?

即使您在制作应用程序之前没有准备系统设计,您仍然必须在编写任何代码之前进行思考,这被称为意外系统设计,这会导致意外架构(AA)。

很容易检测到意外的体系结构:
问:为什么我们的代码如此丑陋?
答:历史原因…

我会得到什么?

建立正式体系结构而不是跳入编码工作的目的是建立准则,约束和模式,以根据这些准则,代码进行扩展。

可以将建立体系结构看作是一条铁路,使代码像火车一样沿其移动。

我为什么要克制自己?

准则,约束和模式有助于:

  • 遵循最小惊讶原则的代码;
  • 了解现有系统的工作原理;
  • 避免重新发明轮子;
  • 在社区中传播工作思路。

我可以使用互联网上的其中之一吗?

您应该从中学习,但是它们都会遭受许多问题的困扰:

  • 不提供增长策略;
  • 仅适合一种规模的应用程序和团队;
  • 组件抽象和通信的随机级别;
  • 角色分配不明确(我在看您的“工人”);
  • 不能原谅和狂热;)

我有足够的技能来设计它吗?

没有人会拥有足够的资源,但是拥有的资源越多,越容易看到隧道尽头的光。
这将为您提供帮助:

  • 阅读有关系统设计和模式的旧书和白皮书;
  • 避免使用新文章试图向您兜售银弹;
  • 了解什么对生产中的其他人有效;
  • 使用其他平台作为灵感来源;
  • 在家尝试点子,如果它们起作用,则将其付诸实践;
  • 如果您有疑问,请推迟决定(同时做一个愚蠢的事情);
  • 与他人讨论想法和实现。

从哪儿开始?

我们应该始终从分析来自目标的需求(如任何成熟的努力)开始。

功能要求。

在最坏的情况下,您会获得高级功能规范,如下所示:

  • 购物清单申请;
  • 能够在清单上进行协作;
  • 无需互联网连接即可使用。

在此阶段,企业可能认为需求已经足够,您有责任找到所出现问题的答案,例如:

  • 用户界面的外观如何?
  • 该应用程序必须支持哪些设备?
  • 我还必须在服务器端进行处理吗?

当您想不出其他问题时,就该进入下一个阶段了。

组织要求。

如果这不是一个新项目,那么您的体系结构选择可能会有很多限制,至少尝试回答以下问题:

  • 我的团队是谁?
  • 他们对我们的架构有什么期望?
  • 我们是否已建立工具和语言?
  • 我们可以重用现有架构吗?

我终于可以开始制作建筑了吗?

是的你可以!通过将功能要求和组织要求放在一起,您可以开始概述您的想法,然后最终构成一个正式的体系结构!但这是一个完全不同的故事……

我现在可以回家吗?

在将想法付诸实践之前,建议您根据我为方便起见而编写的综合清单对它们进行压力测试。

如何使用清单?

通过回答诸如审判之类的问题(设想一个iOS社区陪审团会有所帮助),让您的候选体系结构假装成为其倡导者。

感谢您的阅读!

在Twitter上给我发消息以获得反馈。

然后去哪儿?

现有iOS体系结构概述。
回顾MVC模式。