Python 类里面的方法太多写得太长,大家是怎样处理的啊 🎏

Python 类里面的方法太多写得太长,大家是怎样处理的啊 🎏

13 回复

写少一点短一点


这种情况我一般用两种方式处理。

如果方法逻辑复杂但确实是一个完整功能,我会拆成多个私有方法。比如一个处理订单的方法,可以拆成 _validate_order()_calculate_price()_update_inventory() 几个小方法,主方法只负责调用。

class OrderProcessor:
    def process_order(self, order_data):
        self._validate_order(order_data)
        total = self._calculate_price(order_data)
        self._update_inventory(order_data)
        return total
    
    def _validate_order(self, data):
        # 验证逻辑
        pass
    
    def _calculate_price(self, data):
        # 计算价格
        pass
    
    def _update_inventory(self, data):
        # 更新库存
        pass

如果方法职责不单一,我会考虑提取到单独的类里。比如用户类里既有用户信息管理又有复杂的权限检查,就把权限相关逻辑抽到 PermissionChecker 类。

class User:
    def __init__(self):
        self.permission_checker = PermissionChecker()
    
    def can_access(self, resource):
        return self.permission_checker.check(self, resource)

class PermissionChecker:
    def check(self, user, resource):
        # 复杂的权限检查逻辑
        pass

总结:单一职责,合理拆分。

在利用各种括号直接转行。

按职责再拆成几个小的
参考 code smell 里面的 feature envy 和 super class / god class

拆分成更小的类

写到别的文件里然后 import 过来! 眼不见为净!

a = 很长的类的前半段
b = a.很长的类的后半段

不嫌弃长,能准确充分表达方法用途目的就好,想着一年后直接看到方法名就可以立即知道它是干嘛的,
而不用再去看注释/翻文档 (假若它们都有的话…)

举些例子看看 最好是从命名就大概知道含义的

y 用继承啊,基础的东西写个类,复杂的再写个类继承基础的类,

Composite Pattern 了解一下

代码都不给,怎么分析?

Mixin, 继承了解一下

回到顶部