吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2476|回复: 1
收起左侧

[Java 转载] 《重构-改善既有代码设计》第一章整理学习分享与心得

[复制链接]
象相合 发表于 2017-11-25 14:52
        你可以在这篇文章中找到重构的一些基本思路和小技巧。【这篇文章适合JAVA新手和喜欢写一堆代码以后还要维护代码的同学
《重构-改善既有代码设计》下载请转: https://www.52pojie.cn/thread-660382-1-1.html

       如果你不知道重构是什么?可以百度。重构有什么效果?可以看以下的情景:
情景设置:
        辛苦敲了一周的代码,类里面的内容虽然比较杂乱,但是功能基本实现,看着日历表,项目有条不紊的进行着,本想着周六有心情可以愉悦的加班,怎知甲方突然变更需求。
        因此所有人都被项目经理抓到公司,开始了紧张的应对策略的讨论。如果秉着“如果它没有问题,你就不要动它”的原则去改这段代码,大家都会在痛苦中度过周末,而且下一周也会紧张的赶进度。
        因此项目经理安排大家开始重构代码,大家敲着重构代码喝着咖啡听着小曲完成了重构,下周稍微改一改就交付了,甲方非常满意,大家也度过了愉快的一周。

       那么,这篇文章的用法是这样的:
             0. 下载电子书。
             1.  第一章的代码放在github上,打开链接:https://github.com/EleComb/Reconstruction
             2.  点击 提交次数按钮:[int] commits 【现在你可以看到一个关于提交的时间轴】
             3.  点击任意提交,查看提交更改的内容,可以查看重构的过程。
             4.  你还可以在任意时间轴上拷贝到本地查看每次重构的代码和运行流程。【点击时间点上最右边按钮】
       对比电子书,方便学习。

      我不会贴图= =,还请会的小伙伴教我一下,在此非常感激。

       另外附上比较重要的知识点:
      原则类:
  • 为即将修改的代码建立一组可靠的测试环境。
  • 临时变量助长冗长而复杂的函数。
  • 最好不要再另一个对象的属性基础上运用switch语句。如果要switch也要在类自己的数据上使用。

     
      操作类:【IDEA使用Ctrl+Alt+S打开设置并在搜索输入英文以快速设置快捷键】
  • 找出逻辑泥团并运用Extract Method : Alt+Shift+M
  • 函数应该放在使用的数据的所属对象,使用Move Method : Alt+Shift+V
  • 找出多余的变量,使用Replace Temp with Query : Alt+Shift+,
  • 常客积分计算,使用Extract Method : Alt+Shift+M
  • 临时变量助长冗长而复杂的函数,使用Replace Temp with Query和Query Method


      state模式:
  • 使用Replace Type Code with State/Strategy,将与类型相关的行为搬移至State模式内。

            a) 针对代码使用SelfEncapsulate Field
            b) 抽象Price类。
  • 运用Move Method将switch语句移到Price类。
  • 运用Replace Conditional with Polymorphism去掉switch语句。


      心得类:
    1.  一个方法里最好只做一种类型的逻辑操作,如果贪图便捷,就会为以后埋下地雷。
    2.  写程序之前先想清楚方法与属性的关系,抽象出比较容易被甲方更改的内容,设计一些方式以快速修改内容。
    3.  一个好的测试用例可以迅速发现BUG调试方便,运行的时候感觉很爽(意味

    最后,祝各位学习进步!

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

小不点吃鱼 发表于 2017-11-25 15:27
希望楼主能继续更新,共同学习进步
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-15 22:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表