問題タブ [code-complete]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - パラメータ受け渡しの合理化
Code Completeを読んでいて、「パラメーターの受け渡しの合理化」について質問がありました。著者は、複数のルーチン間でパラメーターを渡す場合、それらのルーチンをクラス データとしてパラメーターを共有するクラスに分解する必要があることを示している可能性があると述べています。
これは、同じデータを使用する複数の別個のクラスがある場合、そのデータを使用する新しいクラスを 1 つ作成し、継承して新しいクラスを作成する必要があるということですか?
または
これは、私のプログラムに緩いルーチンがたくさんある場合、先に進んでそれらをクラスに入れ、カプセル化などの利点を得る必要があるということですか?
c++ - for ループ ヘッダーでループ インデックスを宣言する動作は C++ 仕様で定義されていますか?
Code Complete 2nd Edition を読んでいたときに、次のようなコードがありました。
著者は、これに関して 3 つの異なる動作を持つ 3 つの異なる C++ コンパイラを見つけたと主張しました。
ただし、この機能を 3 つの異なる C++ コンパイラでチェックしたところ、3 つの異なる結果が得られました。
- 最初のコンパイラは、複数の変数宣言の 2 番目の for ループで recordCount にフラグを立て、エラーを生成しました。
- 2 番目のコンパイラは、2 番目の for ループで recordCount を受け入れましたが、最初の for ループの外で使用することを許可しました。
- 3 番目のコンパイラは、recordCount の両方の使用を許可し、宣言された for ループの外でどちらを使用することも許可しませんでした。
難解な言語機能でよくあることですが、コンパイラの実装はさまざまです。
C++ 仕様に関しては、3 番目のコンパイラでの動作が唯一の正しい動作であると常に信じていたため、この段落は非常に気になりました。
C++ 仕様のどのセクションでこの動作が指定されているかを調べるのを手伝ってくれる人はいますか?