コレクションで戻り値を集めるコレクティングパラメータ|Collecting Parameter
記事更新日:2024-02-04

関数の
戻り値を
ひとまとめ
戻り値を
ひとまとめ

関数を細かく分割すると、結果も細かくなるから
結果を収集するパラメータを渡す方が直接的です
imprementation Patterns
it is more direct to pass a parameter that will collect the results.

収集も管理も一括で
コレクティング・パラメータとは|Collecting Parameter

戻り値をコレクションに格納してもらう手法
- 関数の結果を格納していく収集用パラメータ
- コレクション(配列、リスト、key-value型オブジェクト等)に戻り値を格納する
key-value型がおすすめ
key-value型はkeyでの管理がしやすい
(ディクショナリ、連想配列、マップ、オブジェクト等、言語によって呼び名が異なる)

VBAやPythonならディクショナリ
コレクティング・パラメータの利点

結果が複数でも、格納先は1つになる
- 複数の結果を1つに格納できる
- 変数を増やす必要がない
- 1つを管理すればいいので、簡潔になる
- 型の違いを気にする必要がない

どんな型でも格納できる
コレクティング・パラメータの使い方

箱を1つ用意して、その箱を各関数へ持ち込む
- 関数へコレクションを渡す
- 関数は、計算結果をコレクションに格納する
- 結果が格納されたコレクションを戻り値として受け取る

「ここに入れてください」と指定してしまう
コレクションの扱い方(戻り値の格納方法)

状況に応じて、2つのうちのどちらかになる
- keyは呼び出し元で生成し、関数内で更新をする
- どんな答えが返ってくるかを先に明示しておける
- keyは未作成のまま、関数内で新規追加する
- keyが作成済かどうかを気にしなくていい

keyは自分で作るのか、関数にまかせるのか

ちなみに、収集用ではなく、状態の引き渡しをおこなう場合はパラメータ・オブジェクトと呼ぶ
パラメータ・オブジェクトの導入は、コードを短くし、その意図を明確にする
imprementation Patterns
The introduction of the parameter object shortens the code, explains its intent

収集用にしても、状態の引き渡し用にしても、オブジェクト(コレクション)が扱いやすい
戻り値を
コレクションで
まとめる
コレクションで
まとめる

引数をまとめる場合は、パラメータ・オブジェクト
2024-02-04
編集後記:
この記事の内容がベストではないかもしれません。
記事一覧
-
コミュニケーションシンプル柔軟 プログラミングのストレスを軽減する3つの価値観【Imprementation Patterns】 -
理論を学ぶ理由 プログラミング理論は学習すべきか【Imprementation Patterns】 -
メモリとストレージ 【メモリとストレージ】プログラミングに必要な保存と計算の区別 -
引数をまとめたい 複数の引数をまとめて読みやすくするパラメータ•オブジェクト|Parameter Object -
ローカル変数の役割 Local Variable|ローカル変数の役割と使い方 -
Orthogonality垂直な関係性 直交性とは影響を与えない設計方法|Orthogonality