from government.powerSupply import power
案例1 :服务对象应该在类的构造函数中初始化,并且始终可以使用同样的能量
class Home(object):
def __init__(self, rooms=4, people=2, services=None):
self._services = services or power.Service()
self.connectionType = 2 # MeghaWatts
self.roomLights = {1:False, 2:False: 3: False, 4: False}
def turnLightsOn(self, room=None, all=False):
voltage = self._services.voltage()
if all:
for light, _ in self.roomLights.iteritems():
self.roomLights[light] = True
return True
else:
if room:
self.roomLights[room]
return True
或
案例2 应该这样做,外面调用的函数应该有传递服务的选项,因此可以为打开灯的房间提供不同的电量。
class Home(object):
def __init__(self, rooms=4, people=2, services=None):
self._services = services or power.Service()
self.connectionType = 2 # MeghaWatts
self.roomLights = {1:False, 2:False: 3: False, 4: False}
def turnLightsOn(self, room=None, all=False, services=None):
# in this case service can be passed from outside when call to
# turnLights on is made, and service can have different voltage input
self._services = services or self._services
voltage = self._services.voltage()
if all:
for light, _ in self.roomLights.iteritems():
self.roomLights[light] = True
return True
else:
if room:
self.roomLights[room]
return True
今天,我正在努力在办公室更新Unittest,并发现案例2 很方便。因为在我的情况下,服务可以包含不同数量的电源电压以及多个服务,即浴室可能有电力服务或供水服务!!
答案 0 :(得分:0)
考虑以下参数:
services
主对象初始化后Home
永远不会改变,那么您应该选择案例1 。services
是不可变的,或者即使您确定它可能会被更改,也绝对不会选择案例2 。 这里的要点是选择是基于如何处理业务规则中的不同变量。如果on变量永远不会改变,那么就没有理由允许。但是,如果有趣的是这个元素可能会被更改,那么Home
用户应该给出这种可能性。您在代码中提供的默认值是一种很好的方法,因为大多数情况可能根本不需要更改此变量。