面向对象重构的核心是贴近业务逻辑、职责清晰、扩展自然,关键在识别重复、解耦依赖、明确边界;信号包括参数重复传递、数据手动流转、条件分支膨胀;应按收拢→拆分→抽象三步推进,避免巨型类、贫血模型和过度设计。
面向对象重构不是把函数塞进类里就完事,核心是让代码更贴近业务逻辑、职责更清晰、扩展更自然。关键在识别重复、解耦依赖、明确边界。
当你发现这些情况,就是该考虑重构的信号:
user_id, config, db_conn)→ 这些参数很可能属于一个隐含的实体,适合封装成类OrderData类统一管理校验、序列化、状态流
转if type == "email": ... elif type == "sms": ...),且每种类型处理逻辑差异大 → 考虑策略模式或继承体系,用多态替代if-else别一上来就设计完美类图,按节奏推进更稳妥:
UserPermission类里,方法暂为@staticmethod
process_order()函数,实际做了库存扣减、发通知、记日志三件事 → 拆成InventoryService、NotificationSender、OrderLogger三个类,各自专注一件事SmsSender、EmailSender、PushSender时,定义NotificationSender协议(用typing.Protocol或抽象基类),让调用方只依赖抽象,不绑定具体实现重构不是加了class就高级了,警惕这些反模式:
__init__和一堆get_/set_方法,业务逻辑全在外层函数里跑 → 把行为“推回”对象内部,比如user.activate()比activate_user(user)更能体现主体动作改完别急着合代码,快速自问几个问题:
order.py,能否不翻其他文件就大致理解订单的核心状态和关键操作?