0

まあ、これは実際のプログラミングの問題ではありませんが、良い/悪い習慣についての詳細です

私は、いくつかのソルバーを備えたライブラリである CSP コースの最終プロジェクトに取り組んでいます。ほとんどのクラスは頻繁にテンプレート化されています。私の知る限り、クリーンなバイナリと開発スタッフを得るためにソースとヘッダーを分離するエレガントな方法はありません。実際、ここには実際のバイナリはありません。コード生成ステージは、最終コード内でコンパイラーによって実行されます。

一方、私はブースト asio ライブラリを使用して、ネットワーキング スタッフを移植可能な方法で処理しています。using namespace基本的なプログラミングのコースから、ヘッダーで使用するのは悪い習慣として知られていることを知っています。そうすることで、最終ユーザーが自分のプライベート コード内でより限定された命名オプションを使用するように制限され、競合が発生しやすくなるためです。

最後に、コードを明確にするために、コード内でまたはしたいとunisg namespcae思いusingます。私の質問は、そうするための最良の方法は何ですか? 私はこれを間違っていますか?現在、私はusing次のように(グローバルスコープではなく)ヘッダーの関数内で s を使用しています:

// File : abt-solver.h
template<typename valueType>
inline void AIT::ABT_Solver<valueType>::connect() {
    using boost::asio::ip::tcp;    // <===== Here
    using namespace std;           // <===== And here
    tcp::resolver::query query(this->address, this->portNumber);
    tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
    tcp::resolver::iterator end;
    boost::system::error_code error = boost::asio::error::host_not_found;
    while (error && endpoint_iterator != end) {
    // blah blah blah ...
4

2 に答える 2

3

はい、using関数スコープで使用しても問題ありません。その関数の外部には影響しません。

于 2013-05-05T17:00:00.600 に答える