iOS App Architecture最佳做法-我们从教学团队中学到的知识

在Essential Developer,我们帮助个人和团队发挥最大潜能, iOS App Architecture最佳实践始终是我们工作中的常见话题。 作为我们所做工作的一部分,当团队未能交付业务期望时,我们通常会进行救援。 随着时间的流逝,我们发现了功能失调的团队之间的常见模式,其中我们发现的最常见问题之一是对软件体系结构及其目标的误解。

作为专业教练,我们会注意团队所说的话,并且我们将他们的投入和经验看做是对任何良好实践的理论性运用。 根据我们的经验,与对良好实践X或Y的作者相比,团队对领域的见解要多得多。尽管如此,我们仍然相信良好实践是通过借鉴他人的经验来帮助我们避免常见错误和陷阱的有效工具。

平衡团队经验和iOS App架构最佳实践

试图在团队经验与最佳实践的使用之间取得平衡是很困难的,但是通过认真听取团队要说的话,我们通常会发现误解和知识差距可以纠正。 我们的方法永远不会破坏或取代团队,而要确定问题并与团队合作共同解决业务挑战。 在我们看来,成功的协作意味着团队现在可以自己最佳地运作。

当前,我们面临的一个大问题是,许多开发人员对iOS App Architecture Best Practices有不同的看法。 例如,什么是MVVM或VIPER? 答案通常取决于您问谁。

我们花费了许多时间来弄清楚如何有效地向学生教授软件体系结构,从而使他们可以清楚地理解并有效利用iOS App Architecture Best Practices 。 我们发现对我们的课程非常有益的一件事是创建清晰的隔离,其中架构模式软件架构完全不同,即使两者的名称都带有“ architecture(e) ”。

在这种思维方式下,MVVM和MVC一样,只是UI 架构模式,而不是软件架构 。 作为教练,我们将MV *模式视为构建UI层的工具,并且我们教导应用程序可以由许多其他层组成,而不仅仅是UI。

专注于解决问题

在教学时,我们不再将MVVM视为软件架构 。 我们发现它对我们的学生没有帮助,因为很多时候开发人员过于沉迷于名称和首字母缩写的语义,而忘记了他们试图解决的问题。 这并不意味着我们从工具库中丢弃了MVVM,MVP和MVC。 这仅表示我们将它们视为软件体系结构以外的其他事物。

例如,我们首先询问学生是否认为在UI中进行网络和数据库调用是正确的。 我们通常会得到“否”的答案。然后,我们问是否可以在ViewModel中做到这一点,答案通常是“是”。某种程度上,许多学生没有看到ViewModel,因为它是UI的组成部分层。

他们正确地确定了不要在UI中进行网络调用是一种好习惯,但是即使View是名称,他们也不会将ViewModel视为与UI相关的东西。 许多学生对MVVM首字母缩略词的语义如此迷恋,以至于他们最终试图将任何东西都放入View,ViewModel或Model中。 好像应用程序中的所有内容都可以分为这三种类型。

建立对软件体系结构的共识

除非我们与学生对软件架构的含义有共同的理解,否则进行对话可能会适得其反。 对我们来说,一个应用程序可以划分为多个层,我们希望可以自由地根据需要扩展和收缩体系结构中抽象层的数量。 对于许多学生而言,事情通常必须适应预定义且有限的思维方式,例如VIPER的教条式应用程序,其中每个功能都必须具有视图,交互器,演示者,实体和路由器。 同样,他们不知道将数据库和网络放置在VIPER体系结构中的哪个位置。

有趣的是,这种模式的创建者通常不会单枪匹马地接近软件,人们从来没有打算将这种模式视为刚性结构。

不要小看学生

尽管在讲授主题时可能会过分简化和限制范围,但是通过解释作为抽象层及其边界的软件架构的深入概念,而无需使用首字母缩略词,我们发现学生的学习成果要好得多。 一旦他们可以将关注点分为组或层以及这些层如何通信,他们就可以轻松地自己找到答案。 例如,在GUI或Presentation层中,更适合MVC或MVVM。 他们还可以找到将网络和数据库代码移至何处以更好地解决其域问题的方法,而不必以有限的思维方式来适应它。

当给与正确的思考框架时,我们常常会对学生的创造力感到惊讶。 通过最好的协作,我们看到学生回来的比我们能够提供的业务更好的解决方案,因为他们比我们更了解领域。 这就是对个人和公司的强大教育能力,这就是我们在教学时正在寻求的转变。

结论

每当看到团队浪费其巨大潜力时,我们都会感到伤心欲绝,原因是由于对软件体系结构和iOS App体系结构最佳实践缺乏了解而产生的误解和困惑。 缺乏软件体系结构教育的弊端有很多种,其中最常见的一种是不可避免的与老板的“我们必须重写应用程序”的谈话。

那些确定需要良好软件架构技能的开发人员正在投资于他们的职业转变,并在与非开发人员的竞争中建立自己的市场竞争力。

我们最近进行了一项市场研究,以帮助开发人员找到指导他们的职业并发展竞争优势的好方法。 如果您有兴趣,我们已将其编译为免费的iOS职业课程。