重构坏味道:基本类型偏执(痴迷)
基本类型偏执(痴迷)
症状
有时候你会看到某个类里有很多基本类型字段,但是你隐约的能区分出某些字段好像应该是在一起的,像是结合手机号,区号的电话号码,描述某个日期范围的开始日期,结束日期。他们并没有一个真实的载体(手机号Class,范围Class),而是通过零散的基本类型(String,Int)分散在那个很大的类中模拟那个上面提到的手机号,日期范围.
基本类型
病因
有一种情况是是在系统刚开始的时候 程序员可能会说“只是一个存储数据的字段,创建一个基本类型的字段比创建一个完整的新对象要容易得多” , 然后需要另一个字段,并以同样的方式添加,慢慢的类变的越来越大,还有一另外一种情况大多数程序员就没想过用对象的形式来表达,而是以大量的基本类型,用过程式的思维来描述实现业务代码.
导致的健康问题
如果基本类型变得越来越多,可能会出现对数据的操作在分散在多个地方,相应的没有组织的代码可维护性也会变差,当然也会引如很多诸如过大的类,过长的参数,重复代码等更多的坏味道.
治疗
重构中
如果想要替换的数据值是类型码,而它不影响行为
尝试运用 Replace Type Code with Class 将它换掉.如果你有与类型码相关的条件表达式
尝试运用 Replace Type Code with SubClass 或者 Replace Type Code with state/Strategy加以处理
参考Switch惊悚现身章节视频内容如果你有一组总是被放在一起的字段
尝试运用 Extract Class 把这些本该在一起的字段安置一个新家如果在参数列中看到基本数据类型
尝试运用 Introduce Parameter Object 把它们变成参数对象如果你发现自己正从数组中挑选数据
尝试运用 Replace Array with Object 把这些晦涩难懂的数据结构变成可读性很高的对象如果你发现很多单独存在数据值
尝试运用 Replace Data Value with Object 进入炙手可热的对象世界吧
IntelliJ IDEA 练习视频
康复
我们把那些原始类型(积木块)变成了一个真实存在的概念(对象),使代码变得更加灵活了。 对特定数据的操作是在同一个地方,而不是分散的。更容易找到重复的代码。
重构完成