# 项目结构
---
我也要写一本iOS的书。
#开门一步
一个项目开始大约是什么样的哪。
不谈写项目需求分析,项目设计之类的。
一般写iOS app 规划好,pod init, 然后建几个文件夹,搞个项目结构出来。
#怎么看招来的人是不是新手?
第一眼先看看项目结构。一般仓促学的或者仓促写的项目结构就不一定什么样了。为什么项目结构重要,项目结构关系到后续可读性,可修改性。
#怎么看招来的人是不是科班的?
手写代码,操作系统之类的基础知识是一点。代码review也是一个很重要的一点,上学没背下来也听过,软件工程一般都默写过。
可读性
可修改性
可扩展性
安全性
#言归正传
##工程目录结构
这个就是抛砖引玉一下,这篇主要就是告诉你写项目要有一个项目结构的观念
Config 放配置文件,有的项目里面叫(Macro),常见的设置宏,设置网址,设置开关,比如两个组客户端与后端有进度差异或者上线顺序问题。
Sences 有的人叫Main,ViewControllers,Businsess什么的里面就是根据业务分开,Home,Chat,Login,PersonCenter。每个业务模块下有MVC。Model,View,Controller。或者MVVM
Model 有global的Model和子模块里的Model可见性不同。主要是请求回来的json数据自动转成Model,yymodel,或者本地持久化。
Manager 全局单例的某个操作,DBManager,HotfixManager,AlertManager,RouterManager
Tools 工具文件类,存放工具类,比如数据正则匹配
Resource 放资源什么的
Vender:存放第三方类库
闲扯点写python web的感受,写tornado的时候,会照着django的项目写。
MVC,MVVM,MVP。。。等等争论不休,其实干的比较没用的一件事就是争论用那个好。那个顺手用那个。对于新手比较靠谱的办法是找个比较著名的项目照猫画虎,然后试试改改,觉得那块用不上或者缺自己改改。
##MVC
Model(模型)表示应用程序核心(比如数据库记录列表)。
View(视图)显示数据(数据库记录)。
Controller(控制器)处理输入(写入数据库记录)。
iOS初学一般会遇到一个问题,写成ViewController和Model,写小了或不需要扩展没关系。ViewController写的很臃肿导致异常难以维护。