Qtコードスタイル[翻訳]

4922 ワード

字下げ
  • 4個のスペースを使って字下げします.
  • スペースを使って、Tabを使わないでください.
  • をインデントします.
    変数宣言
  • 各変数宣言は、別行
  • を使用する.
  • は、単純化または意味のない名前の使用を避ける(例えば、「a」、「rbarr」、「nughdeget」)
  • 単文字の変数名は、カウントや臨時文字
  • など、意味が非常にはっきりしているシーンだけで使用できます.
     //   
     int a, b;
     char *c, *d;
    
     //   
     int height;
     int width;
     char *nameOfThis;
     char *nameOfThat;
    
  • 変数が必要なときだけ宣言されます.
  • 変数名と方法明は小文字で始まり、後に続く単語の頭文字を大文字にします.
  • 略語を使わないでください.
     //   
     short Cntr;
     char ITEM_DELIM = ' ';
    
     //   
     short counter;
     char itemDelimiter = ' ';
    
  • 類の名前は常に大文字で始まる.公開クラスは'Q'で始まり、大文字(QRgb)を迎えます.共通の方法は一般に'q'で始まる.
  • の略語も最初には、QXMLStreamReaderの代わりに、ラクダのピークパターンを使用しています.
  • スペース
  • 空行を使用して語句を適切なところに組み合わせる
  • .
  • はいつも空白の行だけを使っています.
  • 常にキーワードの後と大かっこの前にスペースを追加します.
  •  //   
     if(foo){
     }
    
     //   
     if (foo) {
     }
    
  • は、ポインタや参照に対して、常にタイプと「」または「&」の間に単一のスペースを使用しますが、「」または「&」と変数名の間にスペースがないようにしてください.
  •  char *x;
     const QString &myString;
     const char * const y = "hello";
    
  • は、二元演算子の前後にスペースを追加します.
  • タイプ変換キーワードの後にスペースを追加しないでください.
  • Cスタイルのタイプ変換をできるだけ避ける
  •  //   
     char* blockOfMemory = (char* ) malloc(data.size());
    
     //   
     char *blockOfMemory = reinterpret_cast(malloc(data.size()));
    
  • 複数の文を一行に置いてはいけません.
  • 拡張により、制御フロー文の本体に新しい行を使用します.(元の文:By extension、use a new line for the body of a control flow statement:)
  •  //   
     if (foo) bar();
    
     //   
     if (foo)
         bar();
    
    大かっこ
  • は、タイトな括弧を使用しています.括弧は声明の先頭と同じ行にあります.右大かっこの後にもう一つのキーワードがある場合は、行にも入れます.
  •  //   
     if (codec)
     {
     }
     else
     {
     }
    
     //   
     if (codec) {
     } else {
     }
    
  • 例外:関数実装(ただし、lamban表現ではない)とクラス宣言は常に新しい行の先頭に左括弧を追加します.
  •  static void foo(int g)
     {
         qDebug("foo: %i", g);
     }
    
     class Moo
     {
     };
    
  • は、条件文の本体が複数行を含む場合のみ、かっこを使用する.
     //   
     if (address.isEmpty()) {
         return false;
     }
    
     for (int i = 0; i < 10; ++i) {
         qDebug("%i", i);
     }
    
     //   
     if (address.isEmpty())
         return false;
    
     for (int i = 0; i < 10; ++i)
         qDebug("%i", i);
    
  • 例外1:親文に複数行/改行が含まれている場合は、大かっこも使用されます.
     //   
     if (address.isEmpty() || !isValid()
         || !codec) {
         return false;
     }
    
  • 例外2:括弧対称性:if-then-elseブロックに大括弧を使用し、ifの本体またはelseの本体がいくつあるかに関わらず:
  •  //   
     if (address.isEmpty())
         qDebug("empty!");
     else {
         qDebug("%s", qPrintable(address));
         it;
     }
    
     //   
     if (address.isEmpty()) {
         qDebug("empty!");
     } else {
         qDebug("%s", qPrintable(address));
         it;
     }
    
     //   
     if (a)
         …
     else
         if (b)
             …
    
     //   
     if (a) {
         …
     } else {
         if (b)
             …
     }
    
  • 条件文の本体が空の場合は、かっこ
  • を使用する.
     //   
     while (a);
    
     //   
     while (a) {}
    
    小かっこ
  • 式を小かっこでグループ化する:
  •  //   
     if (a && b || c)
    
     //   
     if ((a && b) || c)
    
     //   
     a + b & c
    
     //   
     (a + b) & c
    
    switch文
  • caseキーワードとswitchは同じ列
  • にあります.
  • 各caseは最後に一つのbreak(またはreturn)の文を持っていなければなりません.またはQ_を使ってください.FALLTHROUGH()は、後に続く別のcaseの内容でない限り、意図的に中断しないことを示す.
  •  switch (myEnum) {
     case Value1:
       doSomething();
       break;
     case Value2:
     case Value3:
       doSomethingElse();
       Q_FALLTHROUGH();
     default:
       defaultHandling();
       break;
     }
    
    ジャンプ文(break、continue、return、and goto)
  • .ジャンプ文の後ろにelseを置かないでください.
  •  //   
     if (thisOrThat)
         return;
     else
         somethingElse();
    
     //   
     if (thisOrThat)
         return;
     somethingElse();
    
  • 例外:コード自体が対称であれば、elseを使用して対称性を表示することができる.
    行をかえる
  • は1行が100文字未満であることを保持する.必要があれば行を折ります.
  • コメント/appidoc行は、実際のテキストの80列以下に維持されるべきである.周囲の内容に合わせて調整し、「ギザギザ」段落を避ける方式(Comment/appoc lineas shound be kept below 80 columns of actual text.Adjust to the surround ings,and try to flow the text in a way ath avoid「jaged」paragrapps.24792)
  • カンマは折れた行末にあり、操作子は新行の行頭にあります.オペレータは行末に隠しやすいです.エディタが狭いと.
  •  //   
     if (longExpression +
         otherLongExpression +
         otherOtherLongExpression) {
     }
    
     //   
     if (longExpression
         + otherLongExpression
         + otherOtherLongExpression) {
     }
    
    一般例外
  • ルールを厳守するとコードが悪く見えます.
  • を守らないでください.
    スタイルアート
    下記のコードスタイルを使ってコードを芸術的にします.
    --style=kr 
    --indent=spaces=4 
    --align-pointer=name 
    --align-reference=name 
    --convert-tabs 
    --attach-namespaces
    --max-code-length=100 
    --max-instatement-indent=120 
    --pad-header
    --pad-oper
    
    「無制限」であるmax-innstatement-inndentはastyleにのみ使用されます.後続の行がインデント制限が必要であれば、astyleは最初のパラメータを包装するために知能が足りません.ステートメントの中に手動で制限することを推奨します.50列ぐらいの列です.
        int foo = some_really_long_function_name(and_another_one_to_drive_the_point_home(
                first_argument, second_argument, third_arugment));
    
    公式テキストリンク