close
当前位置: 物联网在线 > 技术文库 > ios >

iOS 项目分析及优化

从代码看一个程序员的笔力

从代码的整洁度上就可以看出一个程序员的实力,规范其实就是让你养成一种良好习惯的标杆,在此面前我们应该顺从。本篇我们以OC为例,统计了一些在编写程序中需要注意的事项,共有20条,当然还有更多的规范,此处只是做个示例。

单页代码最好控制在800行以内,每个方法最好不要超过100行,过多建议对代码进行重构

相同的逻辑方法定义避免在多个地方出现,尽量将公用的类、方法抽取出来

删除未被使用的代码,不要大片注释未被使用的代码,确定代码不会使用,请及时删除

对其他项目中copy过来的代码,根据具体需要更新代码风格,及时删除未被使用的代码

项目中所有Group或者文件名称(图片名字等),不要使用汉字命名,尽量使用英文命名,国内特有名词可以使用拼音。

项目中所有Group都需要在项目目录中存在一个真实的目录,Group中的文件与真实目录中文件一一对应。

请在项目中写必要代码的注释

请多使用 #pragma mark – Mark Name 对方法进行分组 。如:

    #pragma mark - **********View lifeCycle******

所有类名称以项目工程开头命名,如:“JS”(简书)。针对不同视图控制器,在末尾添加后缀,如: UIButton 后缀添加“Button”或大家皆知的简写,NSArray的变量命名为xxxArray等。

类、方法、属性等命名,做到见名知意,采用驼峰式命名规则。

根据资源类型或者所属业务逻辑对项目资源进行分组,使得整个项目结构清晰明了;整个项目保持一种代码书写风格。

避免在程序中直接出现常数,使用超过一次的应以宏定义的形式来替代。常数的宏定义应与它实际使用时的类型相一致。如以3.0来定义浮点类型,用3表示整型。 常量的命名应当能够表达出它的用途,并且用大写字母表示。例如: #define PI 3.1415926

当使用条件语句编码时,不要嵌套if语句,多个返回语句也是OK。 - (void)testMethod {   if (![testSomeboolValue]) {// 不合适就返回,下面做处理   return;   } //Do something important }

当方法通过引用来返回一个错误参数,判断返回值而不是错误变量。在成功的情况下,有些Apple的APIs记录垃圾值(garbage values)到错误参数(如果non-NULL),那么判断错误值会导致false负值和crash。 NSError *error; if (![self trySomethingWithError:&error]) {   // Handle Error }

当参数过长时,每个参数占用一行,以冒号对齐。如: - (void)aboutFisrtNumber:(NSString *)oneStr           withNextNumber:(NSString *)twoStr           withLastNumber:(NSString *)threeStr{ // do something }

一行很长的代码应该分成两行代码,下一行用两个空格隔开 self.productsRequest = [[JSProductsRequestalloc]   initWithProductIdentifiers:productIdentifiers];

删除多余的空行,所有方法与方法之间空1行,所有代码块之间空1行。变量声明后需要空1行,如果需要分类区别,各类别之间空1行。条件、循环,选择语句,整个语句结束,需要空1行。最后一个括弧之前不空行。注释与代码之间不空行。 #pragma 与方法之间空1行

每行代码最多不得超过100个字。

如果类声明中包含多个protocol,每个protocol占用一行,缩进2个字符如:   @interface BootViewController : UITableViewController   UITableViewDelegate,   UITableViewDataSource,   UITextFieldDelegate,   UITextViewDelegate   >{   // code   }

图片命名:采用单词全拼,或者大家公认无岐义的缩写(比如:nav,bg,btn等);采用“模块+功能”命名法,模块分为公共模块、私有模块。公共模块主要包括统一的背景,导航条,标签,公共的按钮背景,公共的默认图等等;私有模块主要根据app的业务;功能模块划分,比如用户中心,消息中心等。建议背景图采用以bg作前缀,按钮背景采用btn作前缀。如:account_gray_qq@2x.png,addpic_icon_menu_disable@2x.png等。

着手一个新项目条理

在着手一个项目前先读文档(如果有文档的话)。尽管读了文档你不一定知道每一个代码的细节,但是如果你了解那个问题的话,你一定知道怎么写可以写出一个满足文档的内容。这个时候大脑里面就可以有个框架,先猜一猜,然后看代码,事半功倍。找不到好的文档,就看他的测试用例,也是有一样的功效的。因为测试都是从文档出发编写的,而不是从代码出发编写的。找不到文档和测试用例?那就直接Gank吧。


(责任编辑:ioter)

用户喜欢...

加载GIF图片优化方案

前言 许多项目需要加载GIF图片,但是在直接使用UIImageView加载存在许多问题,于是查找资料做了一个加载GIF的Demo,思路来源 https://github.com/YouXianMing/Animations 在链接里边,已经给出了解决办法...


Flexbox优化

iOS 开发中给系统给我们提供了两种布局,frame 布局 和 AutoLayout 布局,虽然frame布局性能很高 但面对现在越来越丰富的iPhone尺寸,为了适配各种机型需要写更多的无营养代码,造成代码量增多...


iOS 圆角优化

在iOS开发中经常会遇到需要切圆角的需求,最常见的是用户头像。在需要切圆角的图片数量多的情况下,对性能影响非常大。 我们常用的方法是: imageView.layer.cornerRadius = aImageView.frame.size.wid...


iOS 组件化 —— 路由设计思路分析

前言 随着用户的需求越来越多,对App的用户体验也变的要求越来越高。为了更好的应对各种需求,开发人员从软件工程的角度,将App架构由原来简单的MVC变成MVVM,VIPER等复杂架构。更换适合...


搜集的最优秀的IOS开源项目

github的iOS客户端,目前开源代码是V1版本,V2版本在appstore上可以下载 ChatSecure-iOS 使用XMPP协议的IM开源软件,很强大,在appstore上可以下载 SegmentFault SegmentFault的官方iOS客户端 OSChina-iOS 开源中国...


iOS开源项目周报0216

由 OpenDigg 出品的iOS开源项目周报第八期来啦。我们的iOS开源周报集合了OpenDigg一周来新收录的优质的 iOS开源项目 ,方便iOS开发人员便捷的找到自己需要的项目工具等。 AnimatedCollectionViewLayo...


iOS超全开源框架、项目和学习资料汇总--数据库、缓存处理、图像浏览、摄像照

iOS超全开源框架、项目和学习资料汇总(1)UI篇 iOS超全开源框架、项目和学习资料汇总(2)动画篇 iOS超全开源框架、项目和学习资料汇总(3)网络和Model篇 数据库 FMDB – sqlite的工具, 多线...


OpenDigg iOS开源项目周报0209

由 OpenDigg 出品的iOS开源项目周报第七期来啦。我们的iOS开源周报集合了OpenDigg一周来新收录的优质的 iOS开源项目 ,方便iOS开发人员便捷的找到自己需要的项目工具等。 Hedwig 向SMTP服务器轻松...


iOS开源 - 两种金融项目里的走势图绘制demo

Tips:项目里要用,花了点时间写了一下,比较简单粗暴...一拍脑门就出来了...不过显示效果还是蛮好的~~~有些功能未实现,暂时没这个需求...思路可供参考....思路可供参考.... 1.先放图,效果还是满...


iOS开源:WHC_ScanUnreferenceImageTool - 扫描 iOS 和 Android 项目里没有使用的图片开源工具

WHC_ScanUnreferenceImageTool Version: 1.0.4 简介 高效 : Mac扫描项目图片工具(扫描项目里引用但没有使用的图片) 好处 : 删除没有引用的图片以减小打包体积 强大 : 支持iOS 和 Android项目 咨询 : 712641411...