代码重构:
重构前:
if base_info_dto.result_code == BizConsts.DATA_STATE_SAIC_NONE or base_info_dto.result_code == BizConsts.DATA_STATE_NONE_DX_TIME:
return FeatureTimeDealDo(result_code=base_info_dto.result_code)
# 是否注销
is_cancel_maybe = self.__is_cancel_maybe(base_info_dto.enterprise_code) #此处根据业务情况,添加else;
if is_cancel_maybe.is_defined() and is_cancel_maybe.get():
time_map_features = self.__get_features(cmp_data, company_name, #重复 #=#base_info_dto.dx_time, base_info_dto.open_from, node_num, features, time_map_features)
time_map_features = #重复 self.__network_features_time.set_network_feature_time(company_name, time_map_features)
else:
start_time01 = self.now_time
time_map_features = self.__get_features(cmp_data, company_name, start_time01, #重复 base_info_dto.open_from, node_num, features, time_map_features)
time_map_features = self.__network_features_time.set_network_feature_time(company_name,#重复 time_map_features)
区别:start_time01与base_info_dto.dx_time不同,可写一个方法进行调用;
重构后:
if base_info_dto.result_code == BizConsts.DATA_STATE_SAIC_NONE or\
base_info_dto.result_code == BizConsts.DATA_STATE_OTHER_ABNORMAL: # 无数据返回
return FeatureTimeDealDo(result_code=base_info_dto.result_code)
else: # 获取数据完整状态返回
end_time = self.__get_node_end_time(base_info_dto)
time_map_features = self.__get_features(cmp_data, company_name, end_time, base_info_dto.open_from,
node_num, features, time_map_features)
time_map_features = self.__network_features_time.set_network_feature_time(company_name, time_map_features)
增加的方法:
def __get_node_end_time(self, base_info_dto):
"""
获取最后一个点的截止时间
"""
if base_info_dto.enterprise_code == BizConsts.ENTERPRISE_CODE_CANCEL: # 吊销状态
return base_info_dto.dx_time
else: # 其他状态
return self.now_time
总结:代码重构需要结合业务逻辑知识,将if与else语句进行梳理,合并,简化,尽量将程序用if...else...形式,而不是单个if...形式,另外,如果if...else...中有相同代码。可以考虑另外写一个方法实现不同的那部分,相同的那部分直接写在最外面,让if...else...逻辑只判断该分支下运行的代码
代码重构
最新推荐文章于 2024-07-23 09:21:27 发布