当我们进入到新的公司的第一天,看到以前老员工编写的代码,找个东西累死人咧,那个抓耳挠腮的啊,一般情况下都有想揍人的赶脚。 哈哈,不忙,先想一下自己的代码!想一下自己写的代码怎么才能新来的人一眼就能看懂,想找什么,在几秒之内就能找到?这个就要在前期创建项目的时候留神 了, 要保证项目的易读性、易维护性以及易扩展性等。

在我看来,作为一个项目开发的领头人,你可以从两个方面着手:

  • 项目的架构

  • 代码的规范

今 天就先介绍我在做新项目的时候项目架构(代码规范我会在下一篇文章以总结的形式罗列出来),搞理论这个我不擅长,只好整个例子说一说。考虑到很多人在刚学 OC的时候都用“新浪微博”来练手,所以这里就拿新浪微博的iPhone客户端来说事,也正好对比一下,这样更能看出问题所在。(其实,目前市场上基本所 有的应用都适用,本文说的就是一个思想,不论平台,不论语言,只要能理解,就可以应用到实际的应用开发中。)

为了为项目代码创建一个易读性、易维护性、易扩展性都相当不错的代码模板,现在要求项目代码的搭建者按照如下的步骤进行:

1、所有新建项目最好是「Single View Application」:

2、填好各个项目,这里注意,项目名称最好使用英文:

3、项目创建好之后,第一件事就是修改最低部署系统的Target版本:

4、接下来就是源文件管理,我们看左侧的导航区域:

  • 非代码源文件全部移动到「Supporting Files」中;

  • 选 中Appdelegate和ViewController的.h和.m,右键「Show In Finder」,然后把Appdelegate和ViewController的.h和.m移到废纸篓,回到Xcode,删除红色的刚才我们删除的文件 (也可以直接在Xcode中右键->delete->movetotrash, 但是有时候会删除地不干净)。

5、 导入我们已经准备好的项目结构文件(就是项目结构的文件夹和文件的集合在这下载查看)到与项目名称相同的目录之下,如图:

结果是这样的:

6、 其中文件夹`QLClasses`中是该项目中的所有源代码,`QLResources`中存放的是所有的非代码资源文件,下面就这两个文件夹的结构就新浪微博目前的结构进行详细的说明。整体的框架图如下(这才是重点):

  • 需 要注意的是图片的处理,在`QLResources`中有个`QLImages`文件夹,这个文件夹是供特殊的图片文件而设立的,你不能把所有的图片都塞 到这里,这个不科学。最好还是放在Assets.xcassets中,那么到底是哪些图片呢?在有些项目中,大量使用了全屏的背景图片,这样的图片我们一 定不能使用[UIImage imageNamed:@"imageName"]的方式加载,因为这个方法会把图片直接缓存到内存中,试想一下,如果很多张图片都塞进内存是什么情况? 那就只能使用[UIImage imageWithContentsOfFile:@"imagePath"]的方式,但是我们知道Assets.xcassets中的图片在生成ipa 后会被打包成一个压缩文件,以减少内存的占用,这个`imagePath`从哪里来呢,所以问题就解决了。把这些图片放到这个文件夹下面,加载的时候直接 用NSBundle解决path的问题,ok!

  • 项目中肯定会遇到多个界面使用同一个数据模型的问题,最好还是在`QLMain`文件夹中创建两个文件夹`QLCommonModel`和`QLCommonView`两个文件夹,以便统一管理。

  • 在Xcode左侧导航中看到的结构中的每一个文件夹(除却Supporting Files),必须映射到Finder中的文件夹中,这样在不打开项目的情况下,我们就可以迅速的定位出以前写过的工具类的位置,也方便在Finder中查看当前项目的结构。

iOS新建项目文件管理规范的更多相关文章

  1. iOS端项目注释规范附统一代码块

    代码的注释经常被人忽略,以至于在后期维护的时候较为困难.我们准备在XX项目开始之前制定一套规范的注释体系,致力于达到就算维护人员改变也能快速上手的效果. 1.属性注释 属性注释 使用 /** 注释*/ ...

  2. iOS新建项目基本配置

    项目整体同xib+代码的方式 1.调整项目文件结构 2.将资源图片导入工程 General->LaunchScreen 修改 3.App名称修改 info->Bundle name 4.删 ...

  3. iOS原生项目中集成React Native

    1.本文的前提条件是,电脑上已经安装了CocoaPods,React Native相关环境. 2.使用Xcode新建一个工程.EmbedRNMeituan [图1] 3.使用CocoaPods安装Re ...

  4. Cocos2d-x v3.0正式版尝鲜体验【1】 环境搭建和新建项目

    Cocos2d-x v3.0在前天最终公布正式版了,等了大半年最终出来了.一直没去碰之前的3.0各种beta,rc版本号,就想等正式版出来再尝试. 昨天也參加了触控科技在成都举办的沙龙活动.看到作者王 ...

  5. Quick-Cocos2d-x 新建项目

    开发工具准备就绪以后,下面我们就可以开始创建我们的项目了. 首先启动 Quick 下的 player3,在这儿的示例标签下你可以看到很多Quick自带的示例,对于初学者来说,看看这些示例的使用方法会对 ...

  6. iOS原生项目集成React Native模块

    今天周末,弄弄Native和React Native之间的交互.首先,先在iOS原生项目中集成React Native模块: 注意事项: 1.因为react native的版本问题,部分细节可能有所不 ...

  7. Idea项目注释规范设置

    Idea项目注释规范设置文档 1.类注释: /**    *@ClassName: ${NAME}    *@Description: TODO    *@Author: guohui    *@Da ...

  8. 团队开发前端VUE项目代码规范

    团队开发前端VUE项目代码规范 2018年09月22日 20:18:11 我的小英短 阅读数 1658   一.规范目的: 统一编码风格,命名规范,注释要求,在团队协作中输出可读性强,易维护,风格一致 ...

  9. 转:Laravel 项目开发规范

    文件介绍很好 值得细细看看 https://www.jianshu.com/p/e464a35e5ed2 https://learnku.com/docs/laravel-specification/ ...

随机推荐

  1. 【web JSP basePath】basePath的含义

    问题1:WEB-INF的问题 今天新创建项目,在JSP中引入外部的JS文件和CSS文件,但是路径一直显示错误: 其中JSP页面引入这几个文件是这么写的: <link rel="styl ...

  2. 关于LR中的EXTRARES

    LoadRunner脚本之EXTRARES参数 EXTRARES:分隔符,表示标记下一个属性是资源属性的列表(list of resource attributes). [EXTRARES后的资源是由 ...

  3. Burpsuite教程与技巧之HTTP brute暴力破解

    Burpsuite教程与技巧之HTTP brute暴力破解 Gall @ WEB安全 2013-02-28 共 19052 人围观,发现 32 个不明物体收藏该文 感谢Gall投递 常规的对usern ...

  4. Playmaker Input篇教程之引入的核心概念

    Playmaker Input篇教程之引入的核心概念 Playmaker Input引入的核心概念 Playmaker引入了4个核心概念:状态机.动作.变量和事件.了解它们是学习操作Playmaker ...

  5. [LintCode] Permuation Index

    Given a permutation which contains no repeated number, find its index in all the permutations of the ...

  6. 胜利大逃亡[HDU1253]

    胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  7. (centos)linux下访问双系统windows7文件系统

    fdisk -l 无法挂载 NTFS格式的分区:mount: unknown filesystem type ‘ntfs’.   问题:       # mount –t ntfs /dev/sdb1 ...

  8. 添加Bootstrap 到MVC项目中(vs2010)

    环境:Visual Studio 2010   ASP.NET MVC3 手动添加: 下载地址:http://twitter.github.com/bootstrap/ 一个js,两个css,两张图 ...

  9. 常用移动web开发框架研究分析

    纯粹的总结一下移动web开发框架,移动web开发框架有jQuery Mobile .Sencha Touch等等,他们都来源于web开发,是成熟的框架,jQuery Mobile出自于jQuery家族 ...

  10. csv格式

    Name,Password nmae:xiaofan,password:1234567890 每个逗号就是一列