sshin's coding norm


Git commit message (title)
  • <type>: <subject>の形態に従う.

  • コマンドとして作成します.

  • 全長は50行を超えないでください.

  • 修正内容には多くの点が含まれているはずです.

  • 使用するtypeは以下の通りです.
    # Type can be
    #   FEAT    : new feature (새로운 기능을 추가)
    #   FIX     : bug fix (에러 수정)
    #   REFACTOR: refactoring production code (FIX나 STYLE이 아닌 변경)
    #   STYLE   : formatting, missing semi colons, etc; no code change 
    							(기능적 변경이 아닌 코드 스타일만 변경)
    #   DOCS    : changes to documentation
    #   TEST    : adding or refactoring tests
    #             no production code change
    #   CHORE   : updating grunt tasks etc
    #             no production code change
  • Coding norm
    42校の厳格な符号化規則Norminetteを基礎としている.
    Naming

  • 関数名
  • Camelスタイルに従います.ex) void getSomething()

  • 変数名
  • 小文字+Snakeスタイルに従います.ex) std::string table_name

  • グローバル変数名
  • 変数名にg_を付けます.

  • クラス名
  • Pascalスタイルに従います.ex) class TableInfo

  • クラスメンバー変数
  • 変数名に_を付けます.ex) std::string _password
  • 共通メンバー変数は使用されません.

  • クラスメンバー関数
  • 関数の命名規則に従います.

  • 構造体名
  • Pascalスタイルに従います.ex) struct ServerConfig

  • Enum名
  • Pascalスタイルに従います.ex) enum FdSetType

  • ファイル名
  • クラスを宣言または定義するファイルの場合は、クラス名と同じです.ex) Human.hpp, Human.cpp
  • クラスを宣言または定義するファイルでない場合は、Camelスタイルに従います.ex) main.cpp
  • ファイル名はできるだけ詳しく記入してください.ex) http_server_logs.h is better than logs.h
  • Formatting

  • ポインタ、参照者を表示
  • 変数名ではなくデータ型に貼り付けます.ex) std::string& sample , char* sample

  • パラメータ
  • voidはvoidを表す.ex) void getSomething(void)
  • タイプだけでなく、パラメータ名も入力します.ex) void getPrice(int price)

  • 変数宣言の場所
  • 変数および定数は、最大使用位置に近いように定義される.
  • 整数関数に使用される変数は、関数の第1の部分で宣言される.
  • リングを回転する変数は、ループゲートの真前にあります.

  • 戻り値
  • の戻り値にかっこを付けます.ex) return (res)

  • if文関数戻り値ブール判別
  • 関数の戻り値がtrueの場合、==演算子は省略されます.ex) if (isValid())
  • 関数の戻り値がfalseの場合、"==false"条件文が記述されます.ex) if is (isValid() == false)
  • できれば肯定的な条件で表現します.

  • スキャン

  • for,if文で下端が単行に符号化されている場合は括弧を省略する.

  • 名前空間キーワードの横に括弧を付けるのは、namespaceのみです.

  • ex)
    namespace {
    
    int strlen(char* str)
    {
        return (i);
    }
    
    }

  • コンパイル時に-Wall -Wextra -Werror -std=c++11が符号化され、警告メッセージが表示されないようにする.
  • Comment
  • は基本的にハングルで書かれ、プロジェクト終了時に英語に変換されます.
  • は基本的に//に編成され、プロジェクト終了時にすべての注釈を/**/に変換する.
  • Reference
    https://github.com/24siefil/norminette/blob/master/pdf/en.norm.pdf
    https://github.com/get-Pork-Belly/Webserv/wiki/%ED%98%91%EC%97%85%EA%B7%9C%EC%B9%99