所以我认为我是聪明的,DRY从一堆相似的函数中删除一堆通用代码,并将它们转换成在一个地方定义的助手函数。(请参见GitHub diff)这样就可以从一个地方修改它们。(见another GitHub diff)
原来是这样
func_A(stuff):
if stuff == guard_condition:
return early
things = boilerplate + stuff
do A-specific stuff(things)
return late
func_b(stuff):
if stuff == guard_condition:
return early
things = boilerplate + stuff
do B-specific stuff(things)
return late
我把它改成
^{pr2}$但后来我试了一下,意识到自从我搬走了早期的回报(“警卫”?)在helper函数中,它们当然不再工作了。现在,我可以很容易地在原始函数中添加一些代码来处理这些情况,但是如果不将复杂度重新移回到单个函数中并进行重复,似乎没有办法做到这一点。在
处理这种情况最优雅的方法是什么?在
您可以将
a-specific stuff
和b-specific stuff
提取到传递给helper函数的核心函数。然后助手将决定是否调用核心函数:在理解助手返回VAL之前,请先回答
我会给
^{pr2}$_helper
一个返回值:这有帮助吗?在
相关问题 更多 >
编程相关推荐