私はQtが名前空間にすべてを入れるのではなく、すべてのクラス名の前にQを使用するのだろうと思います。名前を検索しやすいようにするなどの特別な理由はありますか、それともブランド名だけですか?クラスに名前を付けるQtの背後にある根拠は何ですか?
答えて
私はそれが歴史的だと信じています。名前空間は1995年頃にC++に導入されました。Qtの開発は1991年に始まったので、明らかに名前空間は使用できませんでした。
移植性の問題がある可能性があります。名前空間はすべてのコンパイラでサポートされていませんでした。そのため、命名規則は命名の衝突を減らすのに役立ちます。
Qt Designerから生成されたコードは、デフォルトでui :: namespaceを使用しています...それは問題ではないと思われます。 – yesraaj
はい、Qt _does_は 'Qt'名前空間を持っています。それはクラスを含んでおらず、いくつかの列挙型だけを含んでいます。 –
Qtは、使用するC++言語機能では非常に保守的です。名前空間がありません。exceptions or RTTIthis articleも参照して、信号/スロット処理でテンプレートが使用されない理由を詳しく説明します。私は、コードをチェックしていなかったものの、:)
私はQtが控えめであることに同意しますが、テンプレートのないリンクはシグナル/スロットのメカニズムに特有です。 Qtは多くのコードでテンプレートを使用しています。 例外とRTTIのものは組み込み機器で使用されているため、私は賭けます。多くの組み込みアプリケーションは、追加するオーバーヘッドのためにそれらを避けます。 –
それは良い点であり、正しいです。答えを修正します! –
は、今日で一つだけの理由がありますそれらが本当にC++ namespace
か、クラス内のパブリック宣言を持つハックかどうかを確認してください。
namespace Qt
{
class Object { ... };
}
#ifndef NO_OLD_DECLS
typedef Qt::Object QObject;
#endif
現在のコンパイラはありません。最新のバージョンにアップグレードできない/古いバージョンのコンパイラを使用している人がたくさんいます。私はそれが良い状況だと言っているわけではありませんが、いくつかの技術的/非技術的理由のために、時にはあなたはちょっとばかげた古いコンパイラを使用して立ち往生しています。 – Glen
誰もが名前空間を正しくサポートしている新しいコンパイラを使用していても(私はあなたのステートメントBTWには同意していません - まだネームスペースのすべてのニュアンスをサポートしていない現在のコンパイラがあります)、Qtコードの*現在の命名規則を使用します。名前空間を使うために、皆さんがQtコードをすべて新しい命名規則に変更することを期待していますか? – Thomi
@Glen、Thomi:Qtは最近(4.0以降)ネームスペースを使用しています。したがって、少なくとも基本的なサポートなしに残っているコンパイラはQtでサポートされなくなりました(サポートできません)。 –
ブランディング:名前空間を実装していない単一のC++コンパイラの左側がないんとして見て
Qtはそれらのコードの一部として、Qの接頭辞を使用しています:彼らが望んでいた場合、彼らは移行パスを提供できるが、そのように私は、残りの部分は、誰もがすべての名前を変更する必要がありますさせることを避けるためにしようとしていることを推測しますスタイル。これは、通常、コードを読みやすくして何が何かを特定する目的を果たします。
識別子:
- は「Q」で始まると「プライベート」と末尾には、実装の詳細のために使用するプライベートクラスであり、(例えばQPainterPrivate)APIの一部ではありません
- を前に付けています"Q" と "プライベート" 接尾辞ないで
- が "Q"(小文字)が付いているpublicクラス(例えばQWidgetのは)公共グローバル関数(例えばqRgb)
コーディングスタイルを採用し、それを一様に使用することで、他の人が記述しなかったコードを理解しやすくなります。
のRef .: Qt Coding Style
- 1. std :: optionalの背後にある根拠は何ですか?
- 2. ヘッダーの背後にある根拠は何ですか?
- 3. HTTP Dateヘッダーの背後にある根拠は何ですか?
- 4. Zend Studio IDEの "条件付き割り当て"警告の背後にある根拠は何ですか?
- 5. ロック内部ロックの背後にある根拠?
- 6. QueryDSL:SQLUpdateClauseの背後にある根拠はデフォルトでNULLを無視します
- 7. タイプの後に名前を付ける変数の名前は何ですか?
- 8. UIViewから継承しないUIBarButtonItemの背後にある根拠は何ですか?
- 9. URL内の特定の予約文字の背後にある根拠は何ですか?
- 10. デザインの根拠STLの背後
- 11. オブジェクトであるプロパティに名前を付けるベストプラクティスは何ですか?
- 12. kafkaトピックに名前を付けるベストプラクティスは何ですか?
- 13. boolパラメータを取るConvert.ToBoolean()の根拠は何ですか?
- 14. 2.5/2.0の背後にある根拠は何ですか?Python 3.xではintではなくfloatを返しますか?
- 15. クラス名の後で、かっこの前に引用符を付ける
- 16. std :: bindとstd :: threadの背後にある根拠は何ですか?引数は常にコピーされますか?
- 17. 列名の前に項目名を付けるメリットとデメリットは何ですか?
- 18. レンダリングの背後にある根拠:redirect_toの代わりに新しく、POST作成のために新しい?
- 19. クラスの名前をつけて、クラスに名前を付けて属性を付けたり、その属性をクラス名に入れていいのですか?
- 20. イメージセグメンテーションの根拠に注釈を付けるにはどうすればよいですか?
- 21. 名前を付けるクラスと名前空間は同じですか?
- 22. Python - 名前付け基準に準拠するサブディレクトリを移動する
- 23. Swift APIデザインガイドラインに準拠したメソッドとパラメータの名前付け
- 24. フォローセットアルゴリズムの第3のルールの根拠は何ですか?コンパイラクラスの
- 25. jsベースのAPIのトークンの根拠は何ですか
- 26. シート名の後にテーブルの名前を付ける方法
- 27. boost :: none_tの実装の根拠は何ですか?
- 28. UIViewのサブクラス化の正当な根拠は何ですか?
- 29. リレーショナルデータベースにXMLを格納する根拠
- 30. どのようにViewModelクラスに名前を付けますか?
私は "原理" である必要があり、それはnitpickyが、 "合理的" であることを知っています。 –
はちょうど潜んでいます。個人的には、ネイティブでない英語のスピーカーとして、私は訂正を楽しんでいます。私は、間違った単語やフレーズを知らずに使っているよりも、訂正を強く好みます。 –
@Matthew Talbert私もStefanoに同意します。あなたは大歓迎です。Matthew – yesraaj