2009-08-28 5 views
6

私はQtが名前空間にすべてを入れるのではなく、すべてのクラス名の前にQを使用するのだろうと思います。名前を検索しやすいようにするなどの特別な理由はありますか、それともブランド名だけですか?クラスに名前を付けるQtの背後にある根拠は何ですか?

+1

私は "原理" である必要があり、それはnitpickyが、 "合理的" であることを知っています。 –

+1

はちょうど潜んでいます。個人的には、ネイティブでない英語のスピーカーとして、私は訂正を楽しんでいます。私は、間違った単語やフレーズを知らずに使っているよりも、訂正を強く好みます。 –

+0

@Matthew Talbert私もStefanoに同意します。あなたは大歓迎です。Matthew – yesraaj

答えて

7

私はそれが歴史的だと信じています。名前空間は1995年頃にC++に導入されました。Qtの開発は1991年に始まったので、明らかに名前空間は使用できませんでした。

3

移植性の問題がある可能性があります。名前空間はすべてのコンパイラでサポートされていませんでした。そのため、命名規則は命名の衝突を減らすのに役立ちます。

+1

Qt Designerから生成されたコードは、デフォルトでui :: namespaceを使用しています...それは問題ではないと思われます。 – yesraaj

+0

はい、Qt _does_は 'Qt'名前空間を持っています。それはクラスを含んでおらず、いくつかの列挙型だけを含んでいます。 –

2

Qtは、使用するC++言語機能では非常に保守的です。名前空間がありません。exceptions or RTTIthis articleも参照して、信号/スロット処理でテンプレートが使用されない理由を詳しく説明します。私は、コードをチェックしていなかったものの、:)

+1

私はQtが控えめであることに同意しますが、テンプレートのないリンクはシグナル/スロットのメカニズムに特有です。 Qtは多くのコードでテンプレートを使用しています。 例外とRTTIのものは組み込み機器で使用されているため、私は賭けます。多くの組み込みアプリケーションは、追加するオーバーヘッドのためにそれらを避けます。 –

+0

それは良い点であり、正しいです。答えを修正します! –

0

は、今日で一つだけの理由がありますそれらが本当にC++ namespaceか、クラス内のパブリック宣言を持つハックかどうかを確認してください。

namespace Qt 
{ 
class Object { ... }; 
} 

#ifndef NO_OLD_DECLS 
typedef Qt::Object QObject; 
#endif 
+0

現在のコンパイラはありません。最新のバージョンにアップグレードできない/古いバージョンのコンパイラを使用している人がたくさんいます。私はそれが良い状況だと言っているわけではありませんが、いくつかの技術的/非技術的理由のために、時にはあなたはちょっとばかげた古いコンパイラを使用して立ち往生しています。 – Glen

+0

誰もが名前空間を正しくサポートしている新しいコンパイラを使用していても(私はあなたのステートメントBTWには同意していません - まだネームスペースのすべてのニュアンスをサポートしていない現在のコンパイラがあります)、Qtコードの*現在の命名規則を使用します。名前空間を使うために、皆さんがQtコードをすべて新しい命名規則に変更することを期待していますか? – Thomi

+1

@Glen、Thomi:Qtは最近(4.0以降)ネームスペースを使用しています。したがって、少なくとも基本的なサポートなしに残っているコンパイラはQtでサポートされなくなりました(サポートできません)。 –

2
のQtのドキュメントが namespacesを指し

ブランディング:名前空間を実装していない単一のC++コンパイラの左側がないんとして見て

0

Qtはそれらのコードの一部として、Qの接頭辞を使用しています:彼らが望んでいた場合、彼らは移行パスを提供できるが、そのように私は、残りの部分は、誰もがすべての名前を変更する必要がありますさせることを避けるためにしようとしていることを推測しますスタイル。これは、通常、コードを読みやすくして何が何かを特定する目的を果たします。

識別子:

  • は「Q」で始まると「プライベート」と末尾には、実装の詳細のために使用するプライベートクラスであり、(例えばQPainterPrivate)APIの一部ではありません
  • を前に付けています"Q" と "プライベート" 接尾辞ない
  • が "Q"(小文字)が付いているpublicクラス(例えばQWidgetのは)公共グローバル関数(例えばqRgb)
されています

コーディングスタイルを採用し、それを一様に使用することで、他の人が記述しなかったコードを理解しやすくなります。

のRef .: Qt Coding Style

関連する問題