C++ アプリケーションを作成するときは、通常、C++ 固有の言語機能に限定します。ほとんどの場合、これは可能な限り CRT の代わりに STL を使用することを意味します。
私にとって、STL は CRT を使用するよりもはるかに流動的で保守しやすいものです。次の点を考慮してください。
std::string str( "Hello" );
if( str == "Hello" ) { ... }
C ランタイムに相当するものは次のようになります。
char const* str = "Hello";
if( strcmp( str, "Hello" ) == 0 ) { ... }
個人的には、前者の例の方がはるかに見やすいと思います。何が起こっているのかがより明確になりました。コードの最初のパスを書くとき、私の最初のことは常に最も自然な方法でコードを書くことです。
私のチームが前者の例で懸念していることの 1 つは、動的割り当てです。文字列が静的であるか、すでに別の場所に割り当てられている場合、断片化を引き起こす可能性や、ここで無駄な割り当てを行うことは意味がないと主張しています。これに対する私の主張は、最初に最も自然な方法でコードを記述し、コードが問題を引き起こしていることが証明された後に戻って変更することです。
後者の例が気に入らないもう 1 つの理由は、C ライブラリを使用していることです。通常、C++ ではなく、読みにくく、エラーが発生しやすく、セキュリティ リスクが高いという理由だけで、どうしても避けています。
だから私の質問は、C ランタイムを避けるのは正しいですか? コーディングのこのステップで余分な割り当てを本当に気にする必要がありますか? このシナリオで、私が正しいか間違っているかを判断するのは難しいです。