1.逻辑改动少
- 滤清职责,各模块上下层关系
- 修改不规范的命名,有歧义的命名,包括变量和方法的命名。
- 移动不合理的类文件的位置
- 使用工厂模式解决冗长的初始化问题
- 将长的方法拆分成小方法,增强可读性
- 整理不规范的格式代码
- 为每个类的头部添加简单的功能性描述
- 最多32个局部变量,提取到类中,拆了四个方法。
- 尽量减少变量,在复杂的情况下,少一个变量,复杂度减轻很多。无用的变量不要保留。
- 能传递对象的,不要传递单个变量,能减少函数的长度。
- 整理阅读相关model。共同属性采用接口的管理
- 在ARC时只有少数变量需要在dealloc中释放,删除不需要的dealloc
- 局部变量尽量离使用的地方最近
- 代码复用,尽量减少相同的代码。如段落属性设置:CTParagraphStyleRef
- 单例属性不要透传,对于复杂功能是灾难性的。如nightMode,fontZoom。单例调用单例使用self或instance;使用字典传值时还定义了宏。
- 函数能尽量不依赖全局变量,保证能独立运行。
- options 我认为对象更合理,因为这是模块内的逻辑,另外会定义很多全局变量,做类型转换
- 默认字体大小,直接定义常量属性,不需要经过字典传递。CMDefaultFontSize
- 使用策略替换复杂的switch语句
- 去掉重复的代码:如顶图、侧图的处理方法写了三遍。
2.对于大的类,如1000行以上的类拆分
符合单一职责原则
采用分类的方式,或者针对某个复杂的功能单独细分封装再调用。
3.性能优化
- 对于已排序的,采用二分查找.如载入进度阅读
- html解析生成树之后,再生成一维数组,有点多此一举。遍历一颗树完全没有问题
- 在解析时属性需要赋值给子节点吗?子节点知道父节点,应该是可以查找到对应属性的
- 遍历富文本时,range如果只使用一个,能否做到功能不受影响?
- 网络请求在主线程解析xml
网友评论