三重if嵌套的重构

现在有一段代码,已经开始在初步重构,图片如下。

函数说明:

1.self.is_ftp:判断是否是需要ftp处理的数据

2.self.is_dir:判断是否是文件夹

3.self.is_pickle:判断是否是pickle类型的文件

4.read:主函数,需要给你一个file_path,就可以自适应的以不同方式获取数据,read函数的if嵌套分三层,由外向内依次为:ftp、dir、pickle

5.process_dir:处理dir及以下的数据

6.process_pkl:梳理pickle以下的数据

三重if嵌套的重构_第1张图片
图1 待重构的代码

分析:这段代码由三层if嵌套完成。如何将这三层嵌套拆分出来?

思路:

1.如果是共性的,如is_dir,则可以直接在read函数下写出;

2.将ftp、local这样的不同做好标记传入内部函数,内部函数根据传入的标记,定义不同的参数,然后统一调用这些参数名,这样就完成了对不同ftp\local调用不同的参数的目的。

重构后的代码如下:

1.read:主函数

2.process_pkl:read的内部函数,处理ftp、pickle不同的数据


三重if嵌套的重构_第2张图片
图2 重构后的主函数


三重if嵌套的重构_第3张图片
图3 重构后的内部函数

你可能感兴趣的:(三重if嵌套的重构)