重构 改善既有代码的设计之第三章 代码的坏味道
3.19、内幕交易(Insider Trading)
提倡模块隔离,否则会造成不必要的耦合关系
对应重构手法:搬移函数、搬移字段、隐藏委托关系、以委托取代子类、以委托取代超类
3.20、过大的类(Large Class)
顾名思义,单个类做太多的事情,承担了太多的职责,违背了单一职责的原则
对应重构手法:提炼类、提炼超类、以子类取代类型码
3.21、异曲同工的类(Alternative Classes with Different Interfaces)
使用类对象,接口一致、协议一致的前提下,可以实现替换
对应重构手法:改变函数声明、搬移函数、提炼超类
3.22、纯数据类(Data Class)
不会说话的数据容器,python语言中也提供了这样一种特性,其实也是一种语法糖,简化了__init__,可以实时修改实例的属性值
from dataclasses import dataclass
@dataclass
class IdentifyInfo:
# 征收项目名称
levy_item_name: str
# 纳税期限
period: str
# 征收品目名称
item_details_name: [] = None
# 是否申报
if_declared: bool = False
# 应纳税额
amount: str = None
# 是否缴税
if_charge: bool = False
# 所属期始
ssqs: str = None
# 所属期止
ssqz: str = None
def __repr__(self):
return " ".join((self.levy_item_name, self.period))
3.23、被拒绝的遗赠(Refused Bequest)
复用超类的行为(实现),却又不愿意支持超类的接口,如此,摒弃继承体系,使用委托划清界限
对应重构手法:以委托取代子类、以委托取代超类
3.24、注释(Comments)
利用注释,查看存在注释的地方,提炼函数、改变函数声明,从而去除不必要的注释说明,
这里补充一句,即使函数、变量达到了自说明的效果,对于阅读者而言,还是更喜欢阅读接近自然语言的东西
对应重构手法:提炼函数、改变函数声明
书写注释的注意事项:
1、拒绝代码的直译、提倡指引性注释
2、拒绝屏蔽代码
3、空行注释