Things you should do before writing an iOS app

创建 iOS 项目之前不要忘记做好以下事情

设置编码规范

一些编码规范推荐

ObjC

Apple 的 Cocoa 编码规范
GitHub 基于 Apple Cocoa 的编码规范
Google 的 ObjC 编码规范(需翻墙)
ObjC 之禅

Swift

Raywenderlich 官方编码规范
GithHub 的编码规范

确定架构

使用传统的 MVC 还是 MVVM 亦或是 VIPER

为项目命名,使用公司及项目名作为前缀,最好是 3 个字母,避免类名冲突

为项目添加 .gitignore

# Xcode
## Build generated
build/
DerivedData/
## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata/
## Other
*.xcuserstate
# CocoaPods
Pods
Podfile.lock

查看常用的 gitignore 设置

另外提交到代码库时的提交日志也规定好提交规范,例如写清楚解决了什么问题,修复了 Bug 库中 ID xxx 的问题及修复方法等等,给出一个建议格式:

FIXED #400 修复 XXX 问题
ADDED 添加 XXX 功能
IMPROVED 调整 XXX 效果/功能

添加必要的项目依赖

使用 CocoaPods 引入必要的项目依赖,如 AFNetworking,SDWebImage 等等。

复杂的框架要解耦 Controller 之间的关联考虑是否要引入 Router 方式进行跳转,引入 Router 的库。

数据统计和崩溃收集是否需要第三方库的支持,引入友盟、Fabric 等。

添加常用的宏定义文件

多人合作时避免大家添加重复冲突的宏文件,先将常用宏文件引入,例如定义 NSLog宏,单例宏,尺寸宏等

确定接口规范,封装接口调用

引入 AFNetworking 后,创建自己的 AFXXXAPIClient,将用于接口加密的参数字段以及 token 等字段进行封装,另外可以统一处理网络请求的错误,请求网络的时候判断网络状态等。

设定应用目录

一般情况下,为了他人查找方便,所以我习惯于按照功能设置目录,每个功能下面再按照 MVC / MVVM 的方式创建目录,如下

|- Home
~~~|-- Models
~~~|-- Views
~~~|-- Controllers (或者是 ViewModels)
~~~|-- Stores
~~~|-- Helpers
|- Setting
~~~|-- ... (同上)
|- ...

代码结构设定

|- Life Cycle
|- Init
|- Public Method
|- (Event Response)
|- Actions
|- Gesture
|- Private Method
|- Delegate
|- Getters and Setters

为应用设置合适的 Scheme

分出线上正式区和线下测试区,以及不同语言为其创建不同的 Scheme,查看设置方式(需翻墙)

设置开发和发布证书

设置应用持续集成和交付过程

可以使用 Jenkins + Fir

参考文章

7 Things you must absolutely do before writing an iOS app(需翻墙)

请我喝汽水儿