3

先日、友人と私はどちらのスタイルのコードが優れているかについて話し合っていました。

ケース A:

int function()
{
    largeobject a;
    //do some stuff without a
    //do some stuff with a
}

ケース B:

int function()
{
    //do some stuff without a
    largeobject a;
    //do some stuff with a
}

では、速度と読みやすさの点でどちらのコードが優れているのでしょうか。

4

3 に答える 3

10

オブジェクトの変数/インスタンスは、できるだけローカルで宣言する必要があります。したがって、この場合、B が最適なオプションになります。

関数本体の先頭で宣言すると、コードを読んでいる他の人がオブジェクトを実際にどこで使用しているのか疑問に思うかもしれません。したがって、宣言を実際に使用する場所に近づけることで、読みやすくなります。

ケース A と B の間に大きなパフォーマンスの違いはないはずです。

たとえば、メモリの大きなチャンクやスレッド プールの割り当てなど、いくつかの特殊なケースがあります。このような場合、時間とリソースが消費される可能性があるため、それらを割り当てるためのより良い場所を見つける必要があるかもしれません.

プログラミングに慣れていない場合は、Scott Meyers の著書「Effective C++ 」を読むことを検討してください。項目 26 はそれについて語っています: 変数の定義を可能な限り延期します。

于 2012-07-06T14:53:47.310 に答える
2

ケース B を使用する必要があります。必要になる前にオブジェクトを作成する必要はありません。

また、コンパイラはlargeobject a();、既定のコンストラクターを使用したオブジェクトの作成としてではなく、関数宣言として解釈します。これは「最も厄介な解析」と呼ばれます。

于 2012-07-06T14:55:08.767 に答える
0

ケースBがベストです。この状況は、S.Mcconnell の本 - 完全なコードで説明されています。そして、あなたは間違っています:

では、速度と読みやすさの点でどちらのコードが優れているのでしょうか。

ケース B は、別の理由で優れています。

于 2012-07-06T15:06:20.530 に答える