前段时间代码紧急,需求复杂,写了个比较乱的代码。当其时的风格是按照面向过程来写的,最近看了《重构,改善既有代码的设计》后,有些想法,于是重构了一下,还不错。
需求是这样的,文件上传并转换保存 :
1. 图片文件(gif,png,jpg)之类,如果是属于个人申请的,先添加水印,然后合并认证页面,再添加水印
2.如果是office类文件,转pdf,再合并认证页面,最后加水印
3.如果是pdf文件,合并认证页面,最后加水印
第一个版本是比较乱,是随性写出来的,就是接收到文件后,判断是不是需要水印,是就调用方法添加,否则转pdf,然后合并和添加水印,当中代码最混乱的主要有三点 :
1. 对文件一些属性的判断都放在了转换方法当中
2. 相当多的临时文件生成,所以导致需要很多的临时文件路径出现在转换方法中
3. 三类文件都有不同的文件转换过程,但是都放在了一起,显得更加乱
所以第二个版本就将文件转换的过程单独出来一个方法,但是还是很乱
最近一个版本稍微清晰了,就是将文件和文件的相关属性提取出来放在一个类里面,同时临时文件的生成方法也放在里面,这样一来,就清晰了很多
第三个版本虽然看起来明显好了不少,但是有问题就是这里的流程嵌套了,没有单独出来,如果另外一个需求是另外一些文件需要不合并,或者不加水印,或者合并不加水印,这样就坑大发了,也会导致一团乱,所以下一步仍需重构,思路是用state模式。
网友评论