引数の値が列挙できるものなら、ちゃんとenumを使う
注意.iconなんかちょっと違うかも、この情報...
前提:必要最低限以上のパターンを、引数から受け入れるようにしてはいけない。
例えば、以下のようなコードがあるとする
code: sample.py
def check(status):
if status == 'cancel':
...
else if status == 'pending':
...
else if status == 'allowd':
...
else:
raise Exception()
ここではstatusの値は、cancel、pending、allowedの3つしか受け入れられない。
今の状態だと、statusが受けれる値のパターンが広すぎる。
というのと、条件の網羅性があるのかも不明。
列挙型(enum)を利用して、ちゃんと明示してあげる。
コード実行時にようやくエラーがわかる状態にするのではなく、コードを書いてる時からエラーの匂いに気づけるようにする
code: sample.py
from enum import Enum
class Status(Enum):
CANCELED = 1
PENDING = 2
ALLOWED = 3
def check(status: Status):
if status === Status.CANCELED:
...
...