关于iOS项目目录规范化思考

708960-c05f93714fb2e054.jpg
黑五福利镇楼

引子

不知不觉代码写了四年多了

接触过大大小小的项目30+

见过形形色色的结构目录

无论是接手代码还是自己的项目改着改着

总觉得没有让本强迫症患者大呼舒爽的Feel

所以结合自己手头的项目重新梳理了一遍

本着文件路径深不过四层的一个中心

通用工具类和项目源码类区分的两个基本点

整体结构以“xxProject”演示 如下面的思维导图所示

708960-9520ce30426bc0e6.png
New xxProject.png

New 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

猜你喜欢

转载自blog.csdn.net/weixin_33738578/article/details/87215004