重构小记-理论篇

来源:互联网 发布:淘宝一件代发流程 编辑:程序博客网 时间:2024/04/29 04:00

  1. 重复代码
    1. 同一个类内,重复在函数:提炼函数
    2. 兄弟子类内,重复在函数:移至父类
    3. 不相干类内,重复在函数:独立移至新类
    4. 兄弟子类内,重复在属性:移至父类
  2. 解决过长函数:
    1. 提炼函数
      1. 命名规则:做什么,而不是怎么做
      2. 只读临时变量直接传入提炼函数
      3. 分解条件表达式,用独立方法
      4. 多处调用临时变量,需传入提炼函数后返回
      5. 通过系统API替换某个算法
    2. 临时变量
      1. 分解临时变量,保证只承担一个责任,如果承担了多个责任则应该被替换(分解)为多个临时变量
      2. 以新的查询函数代替不变的临时变量
      3. 已一个对象代替组合出现的一批临时变量
      4. 如果一个对象的若干数据作为临时变量,考虑将整个对象传入提炼函数
      5. 以函数对象取代函数,这样函数内所有的临时变量都可以作为对象属性,从而进一步在对象内提炼函数
  3. 嵌套条件表达式(多个if else)
    1. 嵌套条件表达式两种形态:
      1. 各分支都属正常行为
      2. 只有一个分支属正常行为
    2. 如果只有一个分支属正常行为则可用return立即返回,而不用else
  4. 关于set\get
    1. 在该属性定义的类内:可以优先使用直接访问,如果子类需要充写取值逻辑或调用时有额外逻辑考虑再用set\get
    2. 在该属性定义的类外:必须使用get\set方法,以免造成数据和行为的混乱(修改的地方过多,无从查找)
  5. 提炼类
    1. 搬移函数:如果一个函数与另一个类交流更多,考虑搬移至这个类,源类留下委托函数或完全删除
    2. 搬移属性:如果一个属性与另一个类交流更多,考虑搬移至这个类
  6. 提炼对象
    1. 如果一个对象有很多重复实例且相等的实例,考虑将其移除,作为全局实例被其他人引用(将值对象改为引用对象)
  7. 替换函数
    1. 如果多个函数做了相同的事,仅仅包含了不同的值,提炼成单一函数,已参数传递不同的值
    2. 如果一个函数的参数值决定了函数的不同行为,考虑为其不同的参数值建立独立函数
    3. 如果一个函数的函数名与函数体基本一致且简短,考虑移除函数,直接使用其函数体

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 cpu超过主板功率怎么办 手机游戏下不了怎么办 硬件系统不兼容怎么办 系统主板不兼容怎么办 安装软件不兼容怎么办 win10驱动不尖锐怎么办 苹果内存太小怎么办 内存太小怎么办手机 苹果手机屏幕不能滑动怎么办 vivo手机软件不兼容怎么办 微信无法录音怎么办 手机卡住了怎么办vivo 好钱包闪退怎么办 闲鱼认证失败怎么办 闲鱼买了假门票怎么办 买黄金买到假的怎么办 闲鱼被买家骗了怎么办 闲鱼上小视频没法保存怎么办 qq空间无法查看怎么办 华为手机电池不耐用怎么办 内内被动过怎么办 hp电脑开机黑屏怎么办 网上开店快递费怎么办 保温杯外壳掉漆怎么办 拖鞋前面磨脚怎么办 塑料拖鞋磨脚怎么办 路由器进不去设置界面怎么办 手机号丢了微信登不上怎么办 电脑总是闪黑屏怎么办 支付宝破产钱怎么办 淘宝号码注册过怎么办 农行k宝怎么办信用卡 电脑页面无法显示怎么办 对方银行停止收款怎么办 淘宝东西买太多怎么办 淘宝号黑号了怎么办… 中通包裹异常怎么办 包裹退回去了怎么办 qq支付密码错误怎么办 ie8出现闪退怎么办 平板输不了密码怎么办