7

非常に簡単な質問:

具体的には Python では (Python は実際にはPEP 8で指定された「強く推奨される」スタイル ガイドラインを持っているため、実際にはこれはどの言語にも当てはまります)、if常に返される句を持つ関数は、句に代替コードを持っている必要がelseありますか? 言い換えるfunc_style_one()func_style_two()、次のコードの と は (明らかに) まったく同じです。

def func_style_one():
    if some_conditional_function():
        do_something()
        return something()
    else:
        do_something_else()
        return something_else()

def func_style_two():
    if some_conditional_function():
        do_something()
        return something()
    do_something_else()
    return something_else()

明らかに、最適で最も読みやすいスタイルは状況によって異なり、どちらが優れているかについては意見が大きく異なりますが、コア Python コミュニティによって特に好まれるのはどれかを尋ねています。(例えば、標準ライブラリでより頻繁に使用されるのはどれですか?他のすべての条件は同じですか?)

4

1 に答える 1

3

経験則として、言語に関係なく、コードに不必要な複雑さを追加することは常に避けるべきです。コードを意味的に意味のあるサブセクションに分割することも、多くの場合良い考えです。

これらのヒューリスティックを考えると、決定的な答えはありません。それは本当にあなたが達成しようとしていることに要約されます。

これを例を挙げて説明します。

続行する前にさまざまなエラー状態をチェックする関数がある場合、それを記述せずに書くことは理にかなっている可能性がありますelse

def do_stuff():
    if error1():
        return cleanup_and_fail()
    return ok()

多くの場合、一連の同様の方法でいくつかのエラーをチェックすることになるため、これはより良い方法です。

def do_stuff():
    if error1():
        return cleanup_and_fail()
    if error2():
        return do_different_cleanup_and_fail()
    return ok()

ただし、関数が代わりに 2 つの等しい分岐に分岐する場合は、意味的により意味のあるものになる可能性があります。

def do_stuff():
    if option1():
        return do_option1()
    else:
        return do_option2()

これは、次のように他のいくつかのオプションを追加することがよくあるためですelif

def do_stuff():
    if option1():
        return do_option1()
    elif:
        return do_option2()
    else:
        return do_option3()

要約すると、コードのセマンティクスについて考え、それに応じて構文を選択してください。

于 2012-06-20T15:02:46.053 に答える