ファイルフォーマット

各ファイルについては,下記のフォーマット(書式)で記述すること.

各ファイル共通

  • 改行コードは LF を使用すること
  • マルチバイト文字列が含まれるファイルは,文字コードセットとして UTF-8 を使用すること
  • 一行の文字数は 80 字以内とすること
  • ホワイトスペースは半角スペースを使用すること(全角スペースは使用禁止とする)
  • インデントは半角ホワイトスペース 4 個を使用すること
  • コメントは // 形式を使用すること
    • 複数行にわたるコメントについても,各行の先頭に // を挿入しコメントとすること
  • ファイル冒頭に適用ライセンスに沿ったライセンス条文を挿入すること

ヘッダファイル(*.h)

  • 宣言が重複しないよう,マクロを定義すること
    • マクロ名は,下記のルールに従って命名すること
      • プレフィックスにアンダースコアを付加
      • ファイル名をすべて大文字に変換
      • ドットはアンダースコアに変換
      • サフィックスにアンダースコアを付加
    • #endif ディレクティブを記述する行のコメントとして,マクロ名を記述すること.

例: scheduler_rr.h の場合

  1. #ifndef _SCHEDULER_RR_H_
  2. #define _SCHEDULER_RR_H_
  3. ....
  4. #endif // _SCHEDULER_RR_H_

  • ヘッダファイル内で #include を使用しないこと
    • ソースファイル内で,インクルード順序を考慮すること
  • クラスを定義するヘッダファイルの場合は,ひとつのファイルにひとつのクラスを記述すること
    • ただし,密接に関連するクラス(特定のクラスに対する例外を処理するクラスなど)は同じファイルに記述することを許容する

ソースファイル(*.c,*.cpp など)

  • マジックナンバを使用しないこと
    • 定数を使用する場合は,マクロとして定義すること
  • #include によるインクルードは,先頭部分でのみ行うこと
    • インクルードの順序は,下記の順とし,各括りの中ではアルファベット順に記述する
      1. config.h など,プロジェクト独自の定数が定義されているファイル
      2. C 向け標準ヘッダファイル
      3. C++ 向け標準ヘッダファイル
      4. その他外部ライブラリ用ヘッダファイル
      5. プロジェクト固有ヘッダファイル
  • NULL 判定を行う場合は,0 ではなく NULL を使用すること
  • 配列や構造体のサイズを sizeof キーワードによって取得する場合は,対象の変数ではなく,型を指定すること
    1. int foo(...)
    2. {
    3. struct data_structure data;
    4. int data_size = 0;
    5. data_size = sizeof (data); // bad
    6. data_size = sizeof (struct data_structure); // good
    7. ....
    8. }
  • goto を適切に使用し,コードの重複を避けること
    1. #define USER_NAME_LENGTH 64
    2. #define PASSWORD_LENGTH 64
    3. int foo(...)
    4. {
    5. int error_code = 0;
    6. char *user_name = NULL;
    7. char *password = NULL;
    8. user_name = (char *) malloc(sizeof (char) * USER_NAME_LENGTH);
    9. if (user_name == NULL) {
    10. error_code = -1;
    11. goto user_name_initialization_failed;
    12. }
    13. password = (char *) malloc(sizeof (char) * PASSWORD_LENGTH);
    14. if (password == NULL) {
    15. error_code = -1;
    16. goto password_initialization_failed;
    17. }
    18. // some operation
    19. free(password);
    20. password_initialization_failed:
    21. free(user_name);
    22. user_name_initialization_failed:
    23. // nothing to free
    24. return error_code;
    25. }
    Pour vous inscrire maintiennent numéro, vous aurez pu votre compte driver (utile à votre portabilité du numéro) numéro rio. Vous obtiendrez pouvez obtenir pour aucun coût par entrer en contact avec la voix expression du serveur ou du service à la clientèle votre propre vieille fournisseur numero rio bouygues . Vous ne mai get un SMS avec vos . Avec votre rio orange, alors vous serez en mesure de vous abonner à l' offre de de son à propos citrons .