我正在通过 SICP 工作,并且一直在阅读 Code Complete。在 Code Complete 中,我学会了尽可能地抽象和结构化事物。在 SICP 中,我学会了为每个可能被抽象为一个的任务创建“辅助”函数。无论如何,我的问题:我有一个班级“A”,应该能够完成任务“b”、任务“c”和任务“d”。所以我创建了 3 个方法,“b”、“c”和“d”。这些方法中的每一个都必须执行的任务相当复杂,但符合我的类和其他代码提供的抽象级别(例如,类抽象数据库访问,而不是A.findEmployee('Steve')
返回列表或其他低级数据类型,它返回一个 Employee 实例)。findEmployee 方法可以(而且应该,在我看来)也分为不同的部分。例如,它可以调用两个函数,fetchEmployeeData('Steve')
, 和returnEmployeeInstance(employeedata)
. 但只需将所有这些函数放在一个类中,如下所示:
class EmployeeDB(object):
def findEmployee(self,name):
employeedata=self._fetchEmployeeData(name)
employeeinstance=self._returnEmployeeInstance(employeedata)
return employeeinstance
def _fetchEmployeeData(self,name):
pass
def _returnEmployeeInstance(self,employeedata):
pass
使其结构更少,并不能真正帮助提高凝聚力。在这种情况下,构建我的代码的合适方法是什么?
谢谢你的时间。
编辑:我刚刚意识到我可以这样做:
class EmployeeDB(object):
def findEmployee(self,name):
def fetchEmployeeData(name):
pass
def returnEmployeeInstance(employeedata):
pass
employeedata=fetchEmployeeData(name)
employeeinstance=returnEmployeeInstance(employeedata)
return employeeinstance
它很好地隐藏了子功能,看起来相当不错,但我很少在任何代码中看到这一点,所以我不确定这是否是正确的方法。你怎么看?