zoukankan      html  css  js  c++  java
  • iOS项目工程及目录结构

    做过一些iOS的项目,不同项目的沉淀没有积累到一起,目录的管理都在后期随着人员的增加越来越混乱,因此在这里做一些梳理,希望达到两个目的。

    • 一套相对通用的目录结构,作为后续项目的模版。

    • 积累相应的基础库,在后续的项目里不断打磨,最后开源。

    几个基本的原则:

    • 一个合理的目录结构应该是清晰的,让人一眼就能了解目录职责,并且是容易扩展的。

    • 不管是第三方库还是自己的库,尽量用CocoPods来管理。

    • 区分不同层次的通用组件。

      • General Level, 最通用的组件,可以在不同项目里复用。

      • Project Level, 可以在该项目里复用。

      • Section Level, 可以在某个功能模块里复用。

    • 对于General Level的组件,以Library的形式分出来,不要放在主工程。

    • 对于基础库,保证质量,通用性,可扩展性,易用性,可以不断迭代

    目录结构

    下面是我建议的项目目录结构:(公司名为NB, 项目名为KP, General Level 组件都会以NB打头,Project Level组件以KP打头 )

    KP_iOS
    |
    |--KP
    |   |--Common
    |   |    |-- KPUIKit
    |   |    |-- KPCommon
    |   |    |-- KPUtility
    |   |    
    |   |--Consts
    |   |--Models
    |   |--Sections
    |   |--Vendors
    |   |--Resources
    |   
    |--Pods
    |    |--NBFoundation
    |         |     
    |         | -- NBUIKit
    |         | -- NBCommon
    |         | -- NBUtility
    |                        
    |    |--ThirdParty1
    |    |--ThirdParty2

    主目录下分为KP 和 Pods两个一级目录。

    • KP是主工程目录

      • UIConsts.h

      • VendorConsts.h

      • KPCommon : Project Level逻辑组件。

      • KPUIKit:Project Level UI组件。

      • KPUtility:Project Level的帮助函数。

      • Common: 主要存放在KP这个项目里可以通用但不对其它项目通用的Project Level的组件。

      • Consts 存放项目范围内公用的常量。 例如:

      • Model:各个功能模块数据逻辑相关的文件。

      • Sections:各个具体的功能模块UI及交互相关文件。 如果某个Section有一些Section Level的通用组件,可以在具体的Section下有一个Common目录。

      • Vendors: 存放没有被CocoaPods管理的第三方组件

      • Resources

    • Pods是CocoaPods的根目录, 所有CocosPods管理的库都在该目录下。

      • NBFoundation: 可以在所有项目里通用的General Level 的组件(跟KP/Common里的内容及结构类似,但更通用)。

          * NBCommon  通用的逻辑组件。
          * NBUIKit 通用的UI组件。
          * NBUtility 帮助函数。

    通用组件

    • 设计通用组件跟设计UI一样,要做到优雅而简洁。

      • 直观性 。接口清晰,跟系统API风格一致,用户一看就知道怎么使用。

      • 易用性 。我们的设计需要使最经常被用到的的功能简单易用,不需要过度的配置,在默认配置下API就应该是可用的。

      • 容错性。 考虑到不同的使用场景,对于复杂场景,通过配置或者API接口,用户可以达到目的。

      • 解偶。 设计组件库另外一个要注意的就是解偶, 组件之间尽量做到不要互相依赖,这就需要每一个组件职责清晰。同时也需要组件库的层次是清晰的,基础库,帮助库,UI库 有层次界线,低层的库不要倒置依赖高层的库。

    其它

    • 关于预编译 预编译是双刃剑,它可以加快编译速度,但经常被滥用,很多人图方便把很多头文件都加到预编译,容易导致头文件依赖混乱。 我的建议是只把General Level组件的头文件加到预编译。

  • 相关阅读:
    Luogu5860 「SWTR-03」Counting Trees
    $NOIP1998$ 题解报告
    $NOIP1997$ 题解报告
    $NOIP2008$ 题解报告
    $NOIP2004$ 题解报告
    $NOIP2010$ 题解报告
    $NOIP2009$ 题解报告
    Luogu P1879 玉米田 题解报告
    CH301 任务安排2 题解报告
    $[NOIp2017]$ 逛公园 $dp$/记搜
  • 原文地址:https://www.cnblogs.com/yulang314/p/5071685.html
Copyright © 2011-2022 走看看