井井有条的代码库,才是工作中最大的幸福

全文共字,预计学习时长11分钟

图源:unsplash

假设你刚刚加入新的公司新的团队,要开始接触编码库相关的工作。你会面临的第一个问题就是:在哪添加团队项目的源文件呢?

问得好。新团队有三个源目录可供添加文件,你得分清哪个是你想用的,哪个是组员用的,哪里的文件是需要重构的。

SlackiOS团队多年来在编码库方面都做的较好。因为好几次想要组建一些源文件,但又缺少编码库的架构模式,再者是近些年开发人员越来越多,我们来到了这个团队。

从顶层开始

我们大约有个文件(还在不断增多),27个左右的顶层目录,Objective-C和Swift的混合文件,大约有40个iOS开发人员在一个monorepo中工作。

SlackiOSXcodeFileHierarchy

这些是所有文件层次结构状态的真实照片。新来的员工都在不断抱怨入了编码库,而我们已经习惯操控这些混乱的目录,一开始的痛苦已经不记得了。

我们有无数的源代码目录(特别是iOS,SlackCocoaSDK和Slack目录),而且确定目录要耗费好长时间,然后再决定如何添加文件。此外,我们决定给编码库增添新的工具,但是目前Xcode项目的状态不能很好地支持新增添工具的运行。

所以,我和一组ios开发人员决定开始制定以下几点规则:

1.让任何新老开发人员都能快速方便地添加新文件。

2.在目录中遵循我们的设计模式

3.借助工具能够自己维持新的且层次结构简洁的文件夹

这将分为两个步骤:先将顶层目录移动到连贯的序列中(主要目标目录、扩展目录、框架等),然后是大任务——源文件夹的组建。

顶层目录的移动不存在争议,也不难进行。可能需要几个开发员一同花费几周的时间。首次移动中,我们学到了一些后面阶段能用到的技——错过高峰期处理大的移动,始终合并master,及时浏览评论。

合并冲突不是过程中唯一棘手的事情,实际上我们可以用xcodegen更好地消除冲突,大部分冲突都存在于项目文件中。我们也想保存git历史记录,能一直一目了然地看到git和finder中的文件。但我们倾向更简单的方式,让所有人员参与进来,拖放文件到主页。

SlackiOSXcodeHierarchy(左)and(右)

从年9月的这张图可以看出,我们已经能够成功组建顶层目录,让每一个目录都适用且都是顶层目。

组建源文件

现在是时候处理iOS、SlackCocoaSDK和Slack中的源文件,把它们全部移动到App或Source中。

老实说,笔者很怕这一部分。我们需要有一个清晰的模式,能让团队所有的开发员都参与进来,规则和工具都要确保移动方便,工程师能清楚地看到自己是否出现失误。

图源:unsplash

笔者对层次结构的模式展开了很多调查,竟然发现关于文件夹组建的文章少之又少。Uber在这篇文章中写了他们是如何移动到monorepo中的(


转载请注明:http://www.aierlanlan.com/grrz/3690.html