MashCannu
@MashCannu (Mash Cannu)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

どちらの方が望ましいコーディングなのでしょうか?

質問内容

プログラミング初心者です。以下のような同じ結果を得られるコードがある時、どちらの方が望ましいコーディングなのでしょうか? 意識すべき優先順位などがありましたら教えて下さい。 例えば、読みやすさや処理速度など。

例)奇数と偶数を判別するコード

A) if〜elseで判定
def func1():
    for num in range(1, 10):
        if num % 2 == 0:
            print(num, 'is an even number')
        else:
            print(num, 'is an odd number')
B) ifのみ判定
def func2():
    for num in range(1, 10):
        if num % 2 == 0:
            print(num, 'is an even number')
            continue
        print(num, 'is an odd number')
C) 実行結果
1 is an odd number
2 is an even number
3 is an odd number
4 is an even number
5 is an odd number
6 is an even number
7 is an odd number
8 is an even number
9 is an odd number

実行速度の違い

ifのみ文の方が実行速度が速かった。理由はelseを処理しなかったので?

print(timeit.timeit(func1, number=100))
0.005803709000000001

print(timeit.timeit(func2, number=100))
0.004315936999999999

0

1Answer

100回回して差が0.001秒ほどだともはや差がないと言っても差し支えないような気がします。

例示のコードだと小さすぎて実際にどっちがいいかというのはどっちでもいいのでは?と思っていますが、個人的にはこの場合はelseを使うほうが好みです。理由としては単純に上から下に読めるので

ただifで分岐したあとcontinueやreturnで抜けたほうが良いパターンもあります(大きなfor文の頭で処理対象をフィルタしたり、引数の値チェックをしたりなど)。今回の例だと、奇数だった場合にだけprint以外の複雑な処理をすることがあるならcontinue使うかもしれないです(でもまあその場合は普通に奇数の場合だけの処理で関数に分けたほうがよいかも)。
このあたりは「ガード節」と名前がついているので、興味があれば調べてみると良いと思います。

1Like

Comments

  1. @MashCannu

    Questioner

    回答ありがとうございます。私もelseの方が読みやすいと感じていました。ガード節についても調べてみたいと思います。

Your answer might help someone💌