创建一个项目的良好经验
很多时候, 创建一个项目只是因为能这么做, 所以做了.
但是, 能这么做不代表这么做比较好.
按照以往通用的做法, 也许会给之后的项目管理带来一些麻烦, 所以, 在总结了一些经验之后, 并且看到一篇深感认同的文章, 记录下(其实很多是翻译, 觉得里面碰到的坑大多数都经历过, 值得一记)
创建项目
使用 Single View
模板创建一个新项目, 勾选Include Unit Tests
和 Include UI Tests
, 但是不勾选 CoreData
, ( 因为其创建的模板代码不太好? 不知道, 没用过, 一半都是用 splite3, 所以这个也没勾选过 )
不要勾选 Create Git repository on my Mac
!! 因为我们在一个项目创建后, 还需要做一些工作来配置你的项目, 单单在第一个 commit 中就是一个完完全全 initial 的项目并没有任何意义, 而且他并不会创建 .gitignore
文件, 这样在初次提交时, 就会把一些不必要的东西让git
去 trace 了, 到时候还要把这些被追踪的文件从 repo 中去掉… 所以在自己配置好项目后, 在自己创建一个 git repo
项目的管理
让项目结构分组结构化, 这个在往大了的项目中是非常有用的, 不然, 很快就会变得杂乱无章.
一般是说, 不在项目的 root
组下方任何东西, 所有的源码文件都分类管理
一般的划分是, Resource
一个group
, Storyboard
一个group
, 至于项目中的其他, 项目业务功能不多的时候可以按照 MVC
或者 其他结构
来分组, 业务功能多的时候, 因为经常游走在同一个业务代码中的时候, 分组跨度太大也不好, 按照业务分组可能会比较好
添加README
即使你是一个人的项目, 但这点也会非常又帮助, 你看看github
上大神的项目
即使一个简单的说明, 也能减少别人了解你这个项目的主要作用.
如果带上一些小 Demo 就好了, 可以试项目中的新成员快速跟上节奏
构建和运行
在提交到 git 之前, 必须保证项目build
和 run
是没有warning
&error
, 有些时候我们移动一个文件, 但是xcode
并不能找到我们移动的文件, 所以, 不管你做了什么, 当你commit
之前, 一定是保证build
成功且没有错误警告
添加 .gitignore
我们必须在项目的根目录, 和.git
文件夹同级目录, 添加 .gitignore
文件, 如果还不了解 git, 可以去其官方网站看看, 目前, 做开发的应该不会不知道这个, 如果不够熟悉, 强烈建议你去官网, 已经又中文版的阅读了..gitignore
定义了哪些文件, 哪些类型的文件/文件夹 需要被 git 忽略, 我们使用github
上提供的模板一般就够用了
注意下, 使用 [CocoaPod](https://cocoapods.org)
的话, 有些文件也需要忽略, 好在github
提供的模板也包括这个了~
值得注意的是, 这个是不是忽略整个 pod 文件夹由自己判断(像之前, 公司有要求不能忽略, 是想在 clone 整个项目时, 不需要 pod install
就能把项目跑起来, 原因你知道的, 不是跑这个项目的每台电脑的网络环境都这么理想), 如果你是分享出去的话, 这个最好就忽略掉, clone 下来的人呢自己进行 pod install
, 这要注意, 不要把Podfile
和 Podfile.lock
, Podfile
指明了需要依赖的东西, Podfile.lock
锁定了当前的配置, 包括项目使用的依赖库的版本.
将项目纳入版本控制
这个就没什么好说了把吧, 如果只是做一次简单的 Demo, 或者其他一次性的代码, 当然就不用管这些东西了. 如果还不清楚版本控制的重要性和便利性, 可以随便在网上搜, 已经是汗牛充栋了.
将项目放到远程仓库
当你的项目使用了git
来做为版本控制的时候, 你还需要一个在远程保存你的仓库的地方, 很高兴, github
, gutlab
都提供了免费的服务. 为什么? 如果作为一个开发人员, 不知道备份的重要性的话, 那我也无话可说了. btw: gitlab
提供的服务是全部免费的. 私有仓库也是全部免费的. 而且整个 gitlab
项目是开源的, 你可以在自己的机器上搭建这个远程服务, 很多公司也是这么做的. 作为公司保存代码资产的地方.
额外步奏
如果你的公司有持续集成的步奏的话, 可能你还需要创建一个Gemfile
, 或者一些其他操作, 目前我还没又弄过这些, 所以看各公司的情况啦
自动化
这里有几个工具可以自动化创建一个 xcode 工程, 其中一个比较流行的是[Liftoff](https://github.com/liftoffcli/liftoff)
如果你在一个中大型团队工作的话, 这种自动化应该是满不错的, 可以制定项目的规矩, 并让成员在一些规范下操作. 这样可以避免很多错误, 并且项目不会很乱. 但是再一个小团队的话, 这么做的成本就要估量一下了. 不过能自动创建一整个模板项目出来的话, 也是能省去重复创建的麻烦, 也能避免一些认为因素造成的错误.