代码重构的方法

  1. Add Parameter
  2. Change Bidirectional Association to Undirectional
  3. Change Reference to Value
  4. Change Undirectional Association to Bidirectional
  5. Change Value to Reference
  6. Collapse Hierarchy
  7. Consolidate Conditional Expression
  8. Consolidate Duplicate Conditional Fragments
  9. Convert Procedural Design to Objects
  10. Decompose Conditional
  11. Duplicate Observed Data
  12. Encapsulate Collection
  13. Encapsulate Downcast
  14. Encapsulate Field
  15. Extract Class
  16. Extract Hierarchy
  17. Extract Interface
  18. Extract Method
  19. Extract Subclass
  20. Extract Superclass
  21. Form Template Method
  22. Hide Delegate
  23. Hide Method
  24. Inline Class
  25. Inline Method
  26. Inline Temp
  27. Introduce Assertion
  28. Introduce Explaining Variable
  29. Introduce Foreign Method
  30. Introduce Local Extension
  31. Introduce Null Object
  32. Introduce Parameter Object
  33. Move Field
  34. Move Method
  35. Parameterize Method
  36. Preserve Whole Object
  37. Pull Up Constructor Body
  38. Pull Up Field
  39. Pull Up Method
  40. Push Down Field
  41. Push Down Method
  42. Remove Assignments to Parameters
  43. Remove Control Flag
  44. Remove Middle Man
  45. Remove Setting Method
  46. Rename Method
  47. Replace Array with Object
  48. Replace Conditional with Polymorphism
  49. Replace Constructor with Factory Method
  50. Replace Data Value with Object
  51. Replace Delegation with Inheritance
  52. Replace Error Code with Exception
  53. Replace Exception with Test
  54. Replace Inheritance with Delegation
  55. Replace Magic Number with Symbolic Constant
  56. Replace Method with Method Object
  57. Replace Nested Conditional with Guard Clauses
  58. Replace Parameter with Explicit Methods
  59. Replace Parameter with Methods
  60. Replace Record with Data Class
  61. Replace Subclass with Fields
  62. Replace Temp with Query
  63. Replace Type Code with Class
  64. Replace Type Code with State/Strategy
  65. Replace Type Code with Subclasses
  66. Self Encapsulate Field
  67. Separate Domain from Presentation
  68. Separate Query from Modifier
  69. Split Temporary Variable
  70. Substitute Algorithm
  71. Tease Apart Inheritance

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏草根专栏

使用xUnit为.net core程序进行单元测试(2)

下面有一点点内容是重叠的.... String Assert 测试string是否相等: [Fact] public void ...

4457
来自专栏程序员的SOD蜜

DataSet的灵活,实体类的方便,DTO的效率:SOD框架的数据容器,打造最适合DDD的ORM框架

引言:DDD的困惑 最近,我看到园子里面有位朋友的一篇博客 《领域驱动设计系列(一):为何要领域驱动设计? 》文章中有下面一段话,对DDD使用产生的疑问: •没...

3029
来自专栏Spark学习技巧

hadoop系列之MR经典案例分享二

4、MapReduce的join(hive已经实现) http://database.51cto.com/art/201410/454277.htm ? 这三种...

32010
来自专栏Ryan Miao

app令牌的一个token实现

app登陆验证不能使用session来判断了。然后查资料都说用令牌,没找到合适的方法,我的眼界太小。另外,越来越感觉基础的重要,比如,session是什么,我竟...

28512
来自专栏岑玉海

MD5鉴定文件是否相同

由于诸多安全因素,需要对网上下载的一些文件进行完整性校验。比如,由于工作需要我下载了一个EMOS_1.5_i386.iso镜像文件(extmail邮件系统),需...

3925
来自专栏草根专栏

使用xUnit为.net core程序进行单元测试(中)

第一部分: https://cloud.tencent.com/developer/article/1019835

2118
来自专栏Java3y

图书管理系统【部署开发环境、解决分类、图书、前台页面模块】

前言 巩固Servlet+JSP开发模式,做一个比较完整的小项目. 成果图 该项目包含了两个部分,前台和后台。 前台用于显示 ? 后台用于管理 ? 该项目可分为...

4174
来自专栏菩提树下的杨过

struts2: 玩转 rest-plugin

近期使用struts2的rest-plugin,参考官方示例struts2-rest-showcase,做了一个restful service小项目,但官网提供...

2425
来自专栏后端之路

SpringBoot之神奇的properties和覆盖顺序

背景 前面我们描述了spring profile和maven profile的异同maven profile VS spring profile 通常意义上我们...

9668
来自专栏用户2442861的专栏

HttpEntity的类型及其使用

  代表底层流的基本实体。通常是在http报文中获取的实体。他只有一个空参的构造方法。刚创建时没有内容,长度为负值。需要通过两个方法,把值赋进去。

931

扫码关注云+社区