は、それがグループ関連書類に助言され、そして次の例では、与えられます。関連する変数と操作のグループ化?完全なコード、10章で
void SummarizeData(...) {
...
GetOldData(oldData, &numOldData);
GetNewData(newData, &numNewData);
totalOldData = Sum(oldData, numOldData);
totalNewData = Sum(newData, numNewData);
PrintOldDataSummary(oldData, totalOldData, numOldData);
PrintNewDataSummary(newData, totalNewData, numNewData);
SaveOldDataSummary(totalOldData, numOldData);
SaveNewDataSummary(totalNewData, numNewData);
...
}
このようなグループ化や並列処理が悪いデザインであることが記載され、代わりに、より分離何かを与えます:
void SummarizeData(...) {
GetOldData(oldData, &numOldData);
totalOldData = Sum(oldData, numOldData);
PrintOldDataSummary(oldData, totalOldData, numOldData);
SaveOldDataSummary(totalOldData, numOldData);
...
GetNewData(newData, &numNewData);
totalNewData = Sum(newData, numNewData);
PrintNewDataSummary(newData, totalNewData, numNewData);
SaveNewDataSummary(totalNewData, numNewData);
...
}
私は第二のアプローチが読み、理解することが容易であり、少なくとも私自身の観点から、クリーンに見えるコードを提供することに同意します。だから、私の質問は、2番目のアプローチには何らかの欠点があるということですか?例えば、私は考えることができ一つの可能な問題は、データベースとそのように一時的な接続である:
void SummarizeData(...) {
...
externalDataStore.open();
externalDataStore.save(oldData, numOldData);
externalDataStore.save(newData, numNewData);
externalDataStore.close();
...
}
この最初のアプローチは両方とも1オープン/クローズサイクルで操作を保存完了します。ただし、2番目のアプローチでは...
操作ごとに接続を開いたり閉じたりする必要があります。これは無駄に思えますが、実際にどのようにパフォーマンスに影響を与えるかはわかりません。
不必要に長い質問には申し訳ありません...
ポインタありがとうございます。コード・コンプリートは多くの情報を持っていますが、何かと同じように、あなたはまだそれを額面で受け取ることができません。 – voithos