C ++のテンプレートメソッドパターンと長いパラメーターリスト
-
01-10-2019 - |
質問
私への役立つ答えの後 最後の質問 さまざまなオプションがあるクラスにテンプレートメソッドパターンを使用し始めました。それらをすべて実装しなかったため、そのクラスのオブジェクトに対する私の現在の宣言は、次のようになりました。
pc < prg, tc, 9, 0, 4, 4, test, true, true, true, true, false, true, true, 10, 0, -1, 3, 3 > mp;
長いテンプレートパラメーターリストをどのように扱いますか? true/falseと数字の代わりにenums/定義を使用する必要がありますか?一般的に使用される代替品はありますか?
解決
はい、true/falseの代わりにenums(定義しない)を使用します。そうすれば、パラメーターを順番に取得した場合、コンパイラは文句を言います。また、読者にとってはるかに明確です。
一般的に長いパラメーターリストを扱うことに関しては、typedefの後ろにそれらを隠したり、テンプレートパラメーターの一部を修正したり、他のパラメーターを変えることができるジェネレーターを隠します。
他のヒント
それほど長いテンプレートパラメーターリストがある場合は、私のデザインを再考したいです。多くのパラメーターは、多くの場合、デザインが悪いことを示しています。
私はC ++をしません、そしてこれはテンプレートにうまく適用されないかもしれませんが、私が長いパラメーターリストを持つ通常の方法でやろうとするのは、関連するパラメーターを見つけて、それらを賢明にグループ化し、グループ化を反映したパラメーターオブジェクトを導入しようとすることです。より複雑なパラメーターの短いリストがあるように。
私は、バリアントタイプのコレクションである単一の引数、たとえばSTD :: Vectorを評価します。
所属していません StackOverflow