まあ、これは実際のプログラミングの問題ではありませんが、良い/悪い習慣についての詳細です
私は、いくつかのソルバーを備えたライブラリである 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 ...