《重构》这本书我们已经读了将近100页了。在第三章主要讲解的就是问题代码潜在的存在点。除了前边的三篇文档的第一篇文档比较明显外,其他的问题代码就需要我们具有明锐的观察力和边界概念。今天我们继续说三个方面,同样的这三个问题点也是需要我们好好去理解的。
数据泥团
书中对数据泥团的定义大概的描述是两个类使用相同的数据、许多函数中有相同的参数。这些总是绑在一起出现的数据应该要有自己的对象。所以书中写道我们应该找出这样的数据,然后将其独立出来形成类。
书中也提供了一个评判的方法,就是删掉众多数据的一项,其他数据并没有因此而失去意义。我们需要做到的目标就是不断的去将这些众多的数据刚到一个类中,然后在代码中去删减并提炼成对象。在书中的最后写道:“所有的类都将在他们的小小社会中充分发挥价值”。其也是不断强调自己做好自己事的基本原则。
基本类型偏执
看到这个名词,估计大家都以为是类似Int和Integer这种问题,其实这块主要说的是在编码过程中,对于应该以对象进行存在的数据反而采用了非面向对象的方式去做逻辑处理。这是这块主要讲述的问题。为了扩展思维,书中也列出了很多示例,比如币种和数值的money类、电话号码、邮编等特殊字符等。对于这块问题,书中将以我们使用将数据替换为对象,
Switch惊悚现身
对于switch语句来说,代码是经常使用的。那么这块居然也是有问题的?在书中我们看到switch的问题在于重复,书中写道switch语句散部与在不同的地点,如果要添加一个case语句,就必须找到所有的switch语句并修改他们。就作者而言日常中确实没少用switch语句,这块咋自个好好想想看,switch语句如果只是处理类自己的事情来说,确实没啥毛病,如果在一个类中switch其他的类,或者通过case来拿到其他类的数据那么这块也没什么问题。但是问题是如果我们在switch语句里做一些复杂的逻辑,而且这些逻辑还与具体的类关系紧密,那么这种情况就需要我们剥离switch了,这块的剥离的方法就是使用多态。这块作者是这么理解的,也就是说case中做涉及到其他类的逻辑处理的代码,其实就是边界不分的问题代码。这种问题代码需要可以采用多态进行处理,如果处理不了,那么作者觉的保留switch的同时保留类,然后让具体领域的类去做属于自己管辖领域的事情其实也是可以的。