美文网首页
重构阅读代码我做了哪些事

重构阅读代码我做了哪些事

作者: 某非著名程序员 | 来源:发表于2021-02-07 07:29 被阅读0次

    1.逻辑改动少

    1. 滤清职责,各模块上下层关系
    2. 修改不规范的命名,有歧义的命名,包括变量和方法的命名。
    3. 移动不合理的类文件的位置
    4. 使用工厂模式解决冗长的初始化问题
    5. 将长的方法拆分成小方法,增强可读性
    6. 整理不规范的格式代码
    7. 为每个类的头部添加简单的功能性描述
    8. 最多32个局部变量,提取到类中,拆了四个方法。
    9. 尽量减少变量,在复杂的情况下,少一个变量,复杂度减轻很多。无用的变量不要保留。
    10. 能传递对象的,不要传递单个变量,能减少函数的长度。
    11. 整理阅读相关model。共同属性采用接口的管理
    12. 在ARC时只有少数变量需要在dealloc中释放,删除不需要的dealloc
    13. 局部变量尽量离使用的地方最近
    14. 代码复用,尽量减少相同的代码。如段落属性设置:CTParagraphStyleRef
    15. 单例属性不要透传,对于复杂功能是灾难性的。如nightMode,fontZoom。单例调用单例使用self或instance;使用字典传值时还定义了宏。
    16. 函数能尽量不依赖全局变量,保证能独立运行。
    17. options 我认为对象更合理,因为这是模块内的逻辑,另外会定义很多全局变量,做类型转换
    18. 默认字体大小,直接定义常量属性,不需要经过字典传递。CMDefaultFontSize
    19. 使用策略替换复杂的switch语句
    20. 去掉重复的代码:如顶图、侧图的处理方法写了三遍。

    2.对于大的类,如1000行以上的类拆分

    符合单一职责原则
    采用分类的方式,或者针对某个复杂的功能单独细分封装再调用。

    3.性能优化

    1. 对于已排序的,采用二分查找.如载入进度阅读
    2. html解析生成树之后,再生成一维数组,有点多此一举。遍历一颗树完全没有问题
    3. 在解析时属性需要赋值给子节点吗?子节点知道父节点,应该是可以查找到对应属性的
    4. 遍历富文本时,range如果只使用一个,能否做到功能不受影响?
    5. 网络请求在主线程解析xml

    相关文章

      网友评论

          本文标题:重构阅读代码我做了哪些事

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