最近在做 iOS 开发,成员之间对 iOS 的项目结构意见不太统一,想问问 V2 上的各位一般都是怎么做的?项目是 MVVM ,按照组里老成员的习惯(包括一些刚转 iOS 的 Java 和 Android 程序员),原计划的项目结构是按照层次划分,比如:
src
|- Storyboard
|- Controllers
|- ViewModels
|- Models
|- Util
|- Categories
但是有新成员提出 iOS 应该用功能模块来划分。据说这是受李明杰之类的 iOS 教程视频影响起来的?由于我们的 iOS 经验不足,现在不知道主流的 iOS 项目都是怎么设计的?这种想法大概是这样:
classes
|- home
|- comments
|- reposts
|- favorites
另外 Xcode 里使用 Group 好还是直接创建 folder 和文件系统一一对应?原本的想法是如果类似 java 的包形式, Xcode 和文件结构完全对应也挺正常。不过如果用功能来区分的话,考虑到之后的需求变更可能挪动文件还要 git/svn ,是不是单纯用 group ,文件目录不一一对应简单一点更好?
1
gssdromen 2015-09-15 09:50:14 +08:00
我们这里一般按功能模块分,每个功能模块里再按第一种分文件夹
|
2
amon 2015-09-15 09:55:18 +08:00 1
这个是经验的问题,项目越做越多,踩了坑就懂了。
关于目录划分,两者各有利弊,推荐的方法是功能较冗余耦合度高的项目采用按层次分,功能模块较清晰耦合度低的项目采用按模块分。 关于 folder 和 group , group 是 Xcode 的虚拟目录, folder 是物理目录。要先建议物理目录,再同步建议虚拟目录。不然去看物理路径看一团糟, git 上根本不能直视怎么办。 |
3
alienjunx 2015-09-15 09:55:53 +08:00
两者结合的,我是先 mvc 然后再分功能,大到小的概念。
|
4
alienjunx 2015-09-15 09:58:31 +08:00
文件夹和 group 必须要一一对应,用过就知道了,虚拟目录真的没法看,一个简洁的文件结构太重要了。
|
5
Obelly 2015-09-15 10:03:00 +08:00 1
|
6
WildCat 2015-09-15 10:03:38 +08:00 via iPhone
可参考 WordPress-iOS
|
7
Elethom 2015-09-15 10:05:08 +08:00 1
Should be moved to /go/idev .
網路上有大把的一手資源還去看國內視頻教程的人自己水平大概也不怎麼行,何況作者本身在 GitHub 上就有項目,代碼質量是什麼樣子自己看不出來麼。 |
8
ibremn 2015-09-15 10:18:22 +08:00 3
第一种更偏向于小项目 /个人项目,结构条例清晰。但是一旦项目膨胀起来,这种结构在查找和定位文件时就非常痛苦了。
以我待过的几个大型项目(二十多人)来看,目录结构结合了上面这两种比较好,比如: /Vender 第三方库 /Foundation 基础类库,业务无关 /Base 业务通用类库,比如各种自定义控件、富文本、网络、 Model 、 Persistence 、 Helper 、等等 /Home /Model /View /Controller /... /Chat /Model /View /Controller /... /Explore /Profile /... 如果你们 PK 不过,可以把微信的目录结构搬出来: https://github.com/zcsoft/MMStructure/blob/master/DirStructureSortu.txt 目录结构最好用 Folder ,然后拖到 Xcode 里形成 Group ,这样不论在 Xcode 里还是在文件目录里处理文件都会比较方便(尤其是添加删除文件出错的时候)。 |
9
rayzworld 2015-09-15 10:19:33 +08:00 1
|
10
ibremn 2015-09-15 10:20:21 +08:00
还有。。李明杰之类的视频你们也看?代码写的那副德行竟然还找人去加星,搞的 Github 乌烟瘴气的。。简直了。。
|
11
mofet OP |
12
mofet OP @ibremn 我们这个项目不算很大,因为 Model 这部分非常通用的原因,起先是打算第一种的。看来在 Controller 按功能分割一下也是有必要的。
|
14
NovemberEleven 2015-09-15 10:53:15 +08:00
个人更倾向按功能模块分组,
|
15
fdq541788 2015-09-15 11:09:28 +08:00
还是喜欢先二后一~ 模块->mvc
|
16
chisj 2015-09-15 11:32:15 +08:00
多人开发还是按功能划分好一点,另外李明杰是谁?我怎么从来没听过,讲得比 WWDC 好吗?
|
17
loveuqian 2015-09-15 11:47:45 +08:00
额。。怎么都在喷 MJ
|
19
HancockXu 2015-09-15 17:20:52 +08:00
按模块划分,然后用 cocoapods 建私有 pod 。
|