9

GoogleのC++ コーディング スタイルでは C++ 例外を使用しないことを推奨しており、Google も使用していません。ほとんどの STL ライブラリ コンテナーでは、例外は無視できます。通常、例外は重大なエラーを示し、とにかく処理が難しいため、クラッシュは許容されます。

ただし、マルチスレッド (std::thread) には問題があります。たとえば、再帰的でないミューテックスを 2 回入力すると例外がスローされます。この状況は重大ではなく、待機することで処理できます。

私の質問は、Google がスレッド化ライブラリとして何を使用しているか知っている人はいますか? 例外を使用しない C++ クロスプラットフォーム スレッド ライブラリはありますか?

ありがとうございました

4

4 に答える 4

11

Google のスタイル ガイドの慣例は、スレッドがかなり風変わりな獣であった前世紀の 90 年代初頭にまでさかのぼります。そのため、そのスタイルとスレッドがどのように混ざり合うかを考えても意味がありません. スレッドなどの「最新」(21 世紀) の手法を使用する場合は、Google のスタイル ガイドを使用しません。逆の場合も同様です。

于 2013-09-30T19:17:56.880 に答える
9

IIRC が Google が例外を使用しない理由は、コードベースの多くが例外セーフではなく、書き直す余裕がないためです。

彼らのサイトから:

一見すると、特に新しいプロジェクトでは、例外を使用する利点がコストを上回ります。ただし、既存のコードの場合、例外の導入はすべての依存コードに影響を与えます。例外が新しいプロジェクトを超えて伝播する可能性がある場合、新しいプロジェクトを既存の例外のないコードに統合することも問題になります。Google の既存の C++ コードのほとんどは例外を処理する準備ができていないため、例外を生成する新しいコードを採用することは比較的困難です。

Google の既存のコードは例外に寛容ではないため、例外を使用するコストは、新しいプロジェクトのコストよりもいくらか高くなります。変換プロセスは遅く、エラーが発生しやすくなります。エラー コードやアサーションなど、例外に代わる利用可能な代替手段が大きな負担をもたらすとは考えていません。

例外の使用に対する私たちのアドバイスは、哲学的または道徳的根拠に基づいているのではなく、実際的な理由に基づいています。Google でオープンソース プロジェクトを使用したいのですが、それらのプロジェクトで例外が使用されている場合は使用が難しいため、Google のオープンソース プロジェクトでも例外に対してアドバイスする必要があります。最初からやり直さなければならない場合は、おそらく状況が異なるでしょう。

于 2013-09-30T19:29:31.090 に答える