MEMO:
- たまに見かけるelse文を省略したコードの書き方
- ↓のパターン2みたいなやつ
# パターン1
def function(cond):
if cond:
return 100
else:
return 0
# パターン2
def function(cond):
if cond:
return 100
return 0
- else句の省略はガード節として関数/メソッドの早期returnの意図を強く示唆する
- つまり、そのif文に入る時は特殊・例外的な条件であることを表現している
- しかし、上述のようなコードはどちらも処理としては想定される通常の条件(状態)
- であるならば、両方とも同じ「重み」があるものとして、むしろelse句を必ず書くべきである
- ...というお話
- 完全に同意である
- 特定の条件によって「必ず」値が変化するなら、それはif-elseで明示的に書かれるべきである
- たまにパターン2の方が「すっきりする」という人もいるが、その感性を理解できない
- 三項演算子で書きたくなるような処理は必ずelse句も書くべきである
- 別の問題としてelse条件が本当に不要の場合、状況次第ではあるが「何もしない」ことをコメントに書いた上で空のelse句を書くか、例外を発生させるかして、明示的に「このブロックに入るのはおかしいぞ」というシグナルを送るようにする
(2023/10/14)