一个项目总结

进度

项目做了一个多月了,现在进度大概五成左右。
估计 5 月中旬会上线。
当初一开始做这个项目的时候,觉得没什么,很多东西都学过了,只需要花时间做出来就行了😌,不会的也可以边学边做。
到后面越做越吃力,从来没有做过这么大的项目,需要注意的细节太多太多,这大概就是大项目吧。

纯代码还是 IB

这个问题刚开始的时候有点纠结。IB 的缺点是多人合作的时候很麻烦,使用 Git 的话,只要双方拖动一下控件就很容易产生冲突。不过刚开始这个项目的时候只有我一个人,不用担心这个问题。我的第一个项目是一个需求较低的贷款类 APP,界面很少但是比较繁琐,很多输入框和按钮。当初一看到界面,就毫不犹豫地选择了 IB,做起来真的挺爽的(除了当初碰到的一些关于 UIScrollView 的问题)。

第二个项目并不是一开始做的,只负责后期的一些界面和改动。当初整个项目已经写好了,但是版本有点旧,用的是纯代码的 frame 布局,后来我写的界面用的也是 frame 布局,界面也不是特别复杂,做起来也还好。

这个项目是我的第三个项目,后来我还是选择了纯代码(其实我更倾向 IB),用的是 Masonry。后来用熟练了,大部分界面布局起来也挺舒服。现在项目基本纯代码,Masonry 布局。

设计模式

刚开始没有多想,熟悉的是 MVC,一直用的也是 MVC,所以就决定是 MVC 了。还是那个问题,后期 MVC 中 Controller 越写越大,很多逻辑都放在里面。后来师弟加进来提议用 MVVM + RAC,其实我是挺喜欢尝试新东西的,我当时还没接触过 RAC,然后就说好,开始用吧。

现在也还在熟悉 RAC 和 MVVM,RAC 用起来确实很爽,让代码模块更清晰,可读性更高。以后不出意外的话,就用 MVVM,也继续尝试新的设计模式。

多人合作

因为项目很大,一个人真的很吃力,后来加进来了一个师弟,所以要开始多人合作了。当初是用 Git,代码托管考虑了一些,GitHub 私密项目要收钱😝,所以就选择了开源中国的代码托管。刚开始我们都是用命令行,后来越用越蛋疼,我总是在想🤔,有没有这样的工具呢(当然有👏)。查了一下,Git 的 GUI 客户端还挺多,最后选择了大家都推荐的 SourceTree。这个东西总体来说用起来很爽,比命令行爽多了,除了有两次操作失误把我两个类删了,害我要重写。

接口文档

和后台交互总是麻烦的,要写接口文档,要做各种测试。我总是在想🤔,有没有这样的工具呢(当然有👏)。然后上网查了一下,发现 SosoApi 还不错,在线 API 文档,但是经过后来的使用,有人有些嫌弃,最后还是放弃了这个,直接用 Pages 写😝

第三方框架

这个问题也是有点纠结。人家总是在说不要重复造轮子,但事实上我们连很多轮子都造不出,所以还是乖乖用别人的吧。

目前有用到的一些框架

  • Masonry
    布局框架,大家都在用,用了都说好。

  • AFNetworking
    基本都在用的网络框架。

  • ReactiveCocoa
    这个框架学习成本有点高,但是学会了能提高很多效率,搭配 MVVM 一起食用更佳😋

  • AFNetworking-RACExtensions
    让 RAC 和 AFN 更爽。

  • FMDB
    数据库

  • SVProgressHUD
    进度、状态显示。当初想自己造一个轮子,结果造得没别人好(至少学到东西了),所以只能用别人的了。

  • YYWebImage/YYModel
    现在很多项目都在用 SDWebImage,由于我是 YY 脑残粉,所以我还是选择了 YYWebImage。当初看了 SDWebImage 的源码,嗯写得非常好;看了一下 YYWebImage 的源码,卧槽好强。

这些基本是项目必备的。还有一些例如很多界面不想写键盘事件导入的 IQKeyboardManager(其实效果一般,达不到手写的效果),以及一些强大的控件类库。

小总结

做一个项目真的需要用到很多知识,需要把学到的都用上,还是需要很好的基础才行。有些没碰到过的就要去研究,甚至有些东西听都没听过,经验就是这样积累的。也越来越觉得基础的重要性,还要努力学习。

附一张办公桌
myDesk