やる気がストロングZERO

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

配列(array)や辞書(dictionary)を関数間で受け渡しまくるとしんどい

配列(array)や辞書(dictionary)を関数間で受け渡しまくるとしんどいコードが出来上がる気がするので理由を書いてみる。

何が入っているのかわからない

例:
関数内を読んでいて、user_dataやadded_dataみたいな名前のarrayやdictionaryの変数あった。
それに対してなんか処理しているけど中身がよくわからないので、データ作成元を確認しようとすると引数で受け取っていた。

呼び出し元を見に行くと、呼び出し元の関数も引数として受け取っているだけだった。

どんどん辿っていくと、そもそも外部システムから受け取ったデータからそのデータを動的生成していた。

みたいなやつ。

結局どういうデータが入っているのかがコードからはよくわからない。
いちいち処理コードを読んでどういう値が入っているのかを予測しないといけない。
実際に実行して内容をdumpしてみて確認しても、特別なパターンの場合に追加されるデータが存在するかもしれない。

何を渡したらいいのかわからない

some_func(user_id, user_data = []){
    # ずらずらと長い処理
}

user_dataに何を渡したらいいのかよくわからない。

こういう関数に、とりあえず適当に値を入れて実行すると、処理の奥の方で実行エラーなどが起きたりする。

期待している値が入っていなかったなら、入り口で弾いてほしい。

まとめ

期待している構造があるデータをarrayやdictionaryで渡さないでほしい。classや構造体を定義してほしい。
※スコープの狭いローカル変数としてなら問題ないです。