一个项目总结

进度

项目做了一个多月了,现在进度大概五成左右
估计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