My App 之 文件夹划分

在搭建一个 App 时,我们一开始通常会对整体 App 进行文件夹划分,换句话说也是架构的搭建组合,通常我们要不按某块划分,要不按 MVC(MVVM)划分,下面对这个来进行个人的理解对比下,当然首先声明,至于用哪一个是得根据项目的大小,项目的具体需求来大致衡量判断。

不过话又说回来,一般划分其实肯定是模块划分和 MVC(MVVM)划分搭配着来的,只是看以哪一个为主罢啦。

  • 以 MVC 划分为主


    以 MVC 划分为主

    此处是以MVC 为主,模块为父,当然此处类似 HomeViewControllers 文件夹中不止一个类,这个模块类中都可以放在这;另外对于Tools, Additions 的划分,还有诸多,例如可以再添加 Manager, Plugin 管理。如果项目相对比较小,个人认为这个比较适宜。

  • 以 模块 划分为主


    以 模块 划分为主

    此处是以模块划分为主,然后再在这某块中进行MVC 划分,这样相对于上一层来说,业务逻辑显得更好处理一些,也方便团队合作一些,每人可以更好的单独负责自己的模块。

恰好,以上两种方式我以前都尝试过,当然现在我们的App 中不是这样的,因为我们用的是我们自己变种的 MVVM ,类似于 第二种模块划分的形式,然而当我们提出组合化的思想后,我自己又想了一下,对我们 App 的文件夹再次进行优化,方便实施,当然后期的 CocoaPods 私有化托管暂且不考虑。

以模块为主,采用MVVM(变种)的方式
以模块为主,采用MVVM(变种)的方式

以 Common 举例
  • Classes
    • AppDelegate

    • Base

    • Common (公共的的)

      • Define : 宏、 Const
      • Manager: 某些管理类
      • Tools : 一些公共的工具
      • Category : 系统类的分类
      • CustomUI: 一些公共用的,自定义的类

      PS: 网络这块归属可自定(Manager、Tool),或者单独列出,而我们App目前是用猿题库那套的,所以直接属于 第三方库的归属去了。

    • Moudle (模块)

      • Home
      • Category
      • Cart
      • Video
      • Account
  • Frameworks 额外添加的库
  • Library 第三方库(用CocoaPods 外)
  • Resources (info.plist,image)

此处不好划分的是,有公共的类的划分 和 第一级别模块后的再划分。

  • Account
    • User: 用户信息
    • Set: 设置
    • Order: 订单
    • Point : 积分
    • Wallet: 钱包
    • ......

此处的划分,个人认为例如 User 之后不需要再细化成文件,关于 用户的信息设置,例如头像,地址,用户名,无需再建立一个文件夹啦。

总的来说,大致的划分是差不多,一些具体的细节需要再后期开发中逐一优化。就像我们目前的 App 中已经有了一千多个文件,在新创建的文件的时候确实会犹豫放在哪一个位置,哪一个文件中,就是因为之前的文件夹划分还有待商榷,另外注意团队小伙伴的意见一致。 目前我们正在优化中,以上全是个人想法,😆。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容