その構造の長い Python 関数があります。
def the_function(lots, of, arguments):
return_value = None
if some_important_condition:
# a lot of stuff here
return_value = "some value"
else:
# even more stuff here
return_value = "some other value"
return return_value
if
問題の 1 つは、とブロックの両方にelse
1 画面分以上のコードが含まれていることです。インデントを見失ったり、現在の状態を確認するために上にスクロールしなければならなくなったりするのは簡単です。
これを改善する 1 つのアイデアは、いくつかの関数に分割することです。
def case_true(lots, of, arguments):
# a lot of stuff here
return "some value"
def case_false(lots, of, arguments):
# even more stuff here
return "some other value"
def the_function(lots, of, arguments):
return_value = None
if some_important_condition:
return_value = case_true(lots, of, arguments)
else:
return_value = case_false(lots, of, arguments)
return return_value
しかし、議論のジャグリングを考えると、これで問題が解決するかどうかはわかりません。
別のアイデアは、複数の出口点を使用することです。
def the_function(lots, of, arguments):
if some_important_condition:
# a lot of stuff here
return "some value"
# even more stuff here
return "some other value"
しかし、いくつかのコーディング スタイルは、複数の出口点に対して、特に画面が離れている場合にアドバイスしています。
問題は、元の構成をより読みやすく、保守しやすくするための、Python的な好ましい方法は何でしょうか?