ときどき、自分のコード スタイルについての考え方に異議を唱える、私が維持しているコードに出くわします。今日はその中の1日でした...
スコープ演算子を使用してグローバルスコープを定義する理由については承知しています。実際、ここでは、スコープのないスコープ解決演算子は、その理由を説明する素晴らしいリンクです。
しかし、今日は考えさせられるものを見ました。問題のクラスはすべてプロジェクトの名前空間にラップされていましたが (良いことです!)、グローバル スコープ演算子が大量に使用されていることがわかりました。つまり、Cライブラリのすべてに使用されていました(uint8_tなどを除く...はい、プログラマーはこのライブラリの.hバージョンを使用しました。実行していたg ++のバージョンが新しいC ++に関する警告をまだスローしていたようです)標準)。これは役に立ちますか?私はこれを単なる文字の無駄だと考えています (this ポインターを使用することを思い出します... コピー コンストラクターと代入演算子の場合を除き、どのオブジェクトがどれであるかを明確にするのに役立ちます)。何か不足していますか?確かに、誰かがやって来て、usleep() や stderr (「::」の使用が最も多い箇所) の行に沿って名前を付けることができますが、そうはなりません。そうすることで何かがひどく壊れる可能性があることを彼らは知っていますか?どの時点で、スコープ演算子に関して「ねじ込み」と言い、自分の名前空間内で特定の方法で関数に名前を付けている誰かが問題を求めていると自分に言い聞かせますか?
だから私の質問は...このコンテキストでグローバルスコープ演算子を使用する「正しい」(私が理解している主観的な)方法は何ですか? std または独自の名前空間に含まれていないものはすべて、グローバル スコープを明示的に定義する必要がありますか? 私は注意を怠り、「std::」を使用して using ディレクティブを回避する傾向がありますが、ここでグローバル スコープ演算子を使用することで得られるものはありますか? 明確にするために、現在の名前空間から問題の変数または関数を取得していないという事実に役立つと考える傾向がありますが、それを含めるか、今日の開発を与えないかで迷っています。
いつものように、コードをよりクリーンに、より読みやすく、そして (もちろん) 大幅に素晴らしいものにするために、ヘルプとガイダンスに感謝します。