長い「メイン」プログラムを分割して、変更できるようにし、おそらく単体テストをしようとしています。それはいくつかの巨大なデータを使用するので、私は躊躇します:
最善の方法: 関数呼び出しを行い、おそらく非常に大きな (メモリに関する) データが渡されるようにすること。
(a) 値によって、または
(b) 参照による
(非常に大きいとは、いくつかの構造と小さなクラスのベクトルのマップとベクトルを意味します...画像でさえ...本当に大きくなる可能性があります)
(c) または、すべての関数がアクセスできるプライベート データを保持するには? これは、 main_processing() または何かがそれらすべてのベクトルを持つ可能性があることを意味する場合もありますが、一部の関数にはアイテムしかありません...関数がテスト可能であるという利点があります。
私の質問は最適化と関係がありますが、このモンスターを赤ちゃんモンスターに分割しようとしている間、メモリを使い果たしたくありません。
ローカル変数を作成した場合、データのコピーがいくつになるかはあまり明確ではありません。
誰か説明してくれませんか?
編集:これは一般的な「非常に大きなプログラムをクラスに分割する方法」ではありません。このプログラムは、すでに小さなエンティティに分割されている大規模なソリューションの一部です。
私が見ている実行可能ファイルは、かなり大きいですが、分割できないデータを持つ単一のエンティティです。したがって、データはすべて、既に作成した単一のクラスのメンバー変数として作成されるか、(すべて) 関数の引数として渡されます。
どちらが良いですか?