やる気がストロングZERO

やる気のストロングスタイル

関数の引数でdictionaryを渡されてるやつがめちゃ嫌い

関数の引数でdictionary渡されてるやつがめちゃ嫌い。

どんなやつ?

# こんなインターフェースのやつ。
some_func(process_param)

# process_paramで色々わたす。
process_param = {
    "mode": "some_mode", #この値でsome_funcの挙動が変わったりする。。
    "id": 1,
    "value": "value_text",
   ...
}

modeに渡す値でsome_funcの挙動がかわる。
渡す値によって、他に必要な項目が変わる。
例えば、

process_param = {
    "mode": "mode1", #mode1のときにはidとvalueが必要
    "id": 1,
    "value": "value_text",
   ...
}

process_param = {
    "mode": "mode2", #mode2のときにはidとnameとageが必要
    "id": 1,
    "name": "太郎",
    "age": 10,
   ...
}

みたいな。

なぜ嫌いか?

process_paramに何を渡せばどういう挙動をするのかが外からは全くわからない。
だから内部を読むしか無いけど、こういうインターフェースになっている関数は中身もだいたいひどい。
この関数を実行させること自体が難しくて、俺は何と戦っているんだという気持ちになる。

どうなっていてほしい?

・挙動が異なるならmodeごとに関数を分けてほしい
・必要な要素は引数で定義してほしい

mode1_func(id, value,,,)
mode2_func(id, name, age,,,)