美文网首页
关于iOS项目目录规范化思考

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

作者: 民谣里不是故事就是诗丶 | 来源:发表于2018-11-23 20:56 被阅读346次
    黑五福利镇楼

    引子

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

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

    见过形形色色的结构目录

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

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

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

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

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

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

    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

    相关文章

      网友评论

          本文标题:关于iOS项目目录规范化思考

          本文链接:https://www.haomeiwen.com/subject/bntsqqtx.html