D K*_*D K 7 python refactoring if-statement coding-style
我使用Python作为我的例子,但我的问题一般是指编程语言.
def some_function(eggs):
if eggs == 1:
do_something_1()
elif eggs == 2:
do_something_2()
elif eggs == 3:
do_something_3()
else:
do_error()
return
do_something_4()
do_something_5()
do_something_6()
Run Code Online (Sandbox Code Playgroud)
(这只是一个例子.我的函数不会被调用do_something_x
.)
像这样在其他方面回归会是一个糟糕的编程习惯吗?放一个更好的主意
do_something_4()
do_something_5()
do_something_6()
Run Code Online (Sandbox Code Playgroud)
在每个if/elifs?
Ben*_*mes 12
我在代码中看到的主要问题是错误情况隐藏在函数体的一半以上.它使代码难以阅读.因为你正在做的是验证函数的参数,所以你应该先做.
在无效参数的情况下,我的偏好是提出一个适当的例外,例如ValueError
.在不知道你的功能是什么或者做什么的do_error
情况下,很难绝对肯定地说这适用于你的情况.但一般来说,获取不正确的参数并不是函数可以恢复的.来电者提出了论点; 所以把责任放在调用者身上以从那个错误中恢复.
此外,这里有一个成语,你可以用来避免长的elif
s 列表:
funs = {1: do_something_1,
2: do_something_2,
3: do_something_3}
funs[eggs]()
Run Code Online (Sandbox Code Playgroud)
绝对不要将相同的代码复制到每个if
子句中.
怎么样:
def some_function(eggs):
options = {1: do_something_1, 2: do_something_2, 3: do_something_3}
if eggs in options:
options[eggs]()
do_something_4()
do_something_5()
do_something_6()
else:
do_error()
return
Run Code Online (Sandbox Code Playgroud)
这不需要很长时间if
elif
else
.它也很清楚,do_something_4()
只有当鸡蛋是1,2或3时才会发生.
归档时间: |
|
查看次数: |
6790 次 |
最近记录: |