引子
不知不觉代码写了四年多了
接触过大大小小的项目30+
见过形形色色的结构目录
无论是接手代码还是自己的项目改着改着
总觉得没有让本强迫症患者大呼舒爽的Feel
所以结合自己手头的项目重新梳理了一遍
本着文件路径深不过四层的一个中心
通用工具类和项目源码类区分的两个基本点
整体结构以“xxProject”演示 如下面的思维导图所示
New xxProject.pngNew xxProject(演示项目)
Common Tools(通用工具库,可以一键移植到别的项目使用)
Base(通用基类)
- BaseLabel(常用标签,可以封装实例方法,一键配置layerBorder,默认字体等)
- BaseButton(常用按钮,可以封装实例方法,包含倒计时功能的按钮,一键配置cornerRadius等)
- BaseNavController(导航控制器,比较常用,所以放到基类里统一处理,Tabbar基本只用一次就算了)
- BaseViewController(所有ViewController的基类,可以放一些公用方法,设置BackgroundColor这些)
- BaseListController(重写初始化方法,自带一个TableView,实现一些代理)
- BaseScrollController(重写初始化方法,自带一个ScrollView,并放入一个ConntentView撑开)
- BaseWebController(自带UIWebView/WKWebView,并且封装进度条ProgressView之类的)
Category(分类)
- Foundation/NSCategory(对于NS方法的补充,例如NSString/NSDate/NSDictionary常见分类)
- UIKit/UICategory(对于UI常见方法的补充,例如UIImageView/UILayoutGuide等)
Untils(辅助)
- Device Info(因为经常判断手机设别型号,存放AppVersion,以及NSBundle里其余的信息)
- Debug System (每个项目都少不了自定义Log打印系统,还有一些辅助调试的方法,防护框架等通用工具)
Project Setting(针对单个项目)
Prefix header (全局引用头文件.pch)
Macros(预编译宏)
- Usual Color(常用的颜色,用宏比较方便)
- Usual Font(常用的字体,用宏一键调用)
Constant(常量)
- Notify(通知名,整个APP所有的通知统一管理)
- Tips/Errors(方便文案修改,放一起统一管理)
- Keys(NSUserDefault的Keys/注册三方库的AppIds)
Manager(管理工具)
- Net Manger(网络请求)
- Host.h(涉及到开发环境/预发布环境/生产环境多个服务器主机)
- Api.h(接口罗列,可能涉及到接口版本号)
- Session.h(具体的POST/GET请求工具,例如AFN的封装)
- Track Manger(数据埋点工具,针对项目不同,所以没有放在通用里)
- Language Manager(多语言环境切换管理工具,国家地区切换同理)
Handler(处理工具)
- Show Handler(这个目录就是为了方便App空数据时展示,还有服务器数据转换成展示所需样式)
- Default Image(展位图)
- Default Attributes(固定风格富文本)
- Calculator Handler(将服务器返回的元数据做二次处理方便展示)
Cache(缓存)
- Local ShareInstance(内存里的单例)
- Singleton
- Local Storage(硬盘里的持续化存储)
- UserDefault/Coredata/FMDB
Project Module(项目组件化)
Pubilc(公用浮层)
- Toast
- HUD
- Alert
- Combine(组合控件,有的UI喜欢两个Label一个UImage组合一起反复用这样)
BaseModule
- BaseModel
- xxResponseModel(数据结构模型,无论MVC还是MVVM必备)
- BaseViewModel
- xxBaseCommond(以MVVM为例,逻辑处理的地方,链接视图View和数据Model)
- BaseViewController
- xxController(View的集合,只处理视图布局,与ViewModel双向绑定)
- BaseView
- xxTableviewCell
- xxCollectionViewCell
- xxTextField
- xxTextView
HomePage
UserPage
ActivityPage
3rd Library(三方库)
CocoaPods
Carthage
Others Code
Resources(各种资源文件)
Asset(资源集)
- AppIcon
- LaunchImage
.gif(图片文件)
.ttf(字体文件)
.html(本地Html你懂的)
.entitlements(推送等环境配置)
.strings(多语言环境源文件)
- Base
- English
- Arabic
- Russian
.plist(同一个项目会存在多个info.plist,对比着好管理)
- targets/info.plist
网友评论