Last modified 12 years ago Last modified on 11/23/05 17:34:26

MISTプロジェクト推奨のコーディングルール

始まりの中カッコは次の行に!

  • いい例
    int main( void )
    {
        return 0;
    }
    
    if( bFlag )
    {
        i = 0;
    }
    else
    {
        i = 1;
    }
    
  • ダメな例
    int main(void){
        return 0;
    }
    
    if(bFlag){
        i = 0;
    }else{
        i = 1;
    }
    

引数列のコンマの後にはスペースを!

  • いい例
    mist.test( i, j, k );
    
  • ダメな例
    mist.test(i,j,k);
    mist.test( i , j , k );
    

関数名などは小文字の単語をアンダーバーでつなごう!

  • いい例
    mist.calc_filter_coef();
    
  • ダメな例
    mist.CalcFilterCoef();
    

クラスのメンバ変数は,変数名の後ろにアンダーバーを付ける!

  • いい例
    class Hoge
    {
        int hoge_;
        double hogehoge_;
    };
    
  • ダメな例
    class Hoge
    {
        int hoge;
        double hogehoge;
    };
    

ifの後ろの中括弧は次の行に移し,ifブロックの中身が1行だけでも中括弧でくくる.

  • いい例
    if(  )
    {
        A = B + C;
    }
    
  • ダメな例
    if(  ){
        A = B + C;
    }
    
    if(  ) A = B + C;
    

elseの後ろの中括弧は次の行に移す.

  • いい例
    if(  )
    {
        A = B + C;
    }
    else
    {
        A = B + D;
    }
    
  • ダメな例
    if(  )
    {
        A = B + C;
    }else{
        A = B + D;
    }
    

templateの後ろの <> の前後にはスペースを入れる.

  • いい例
    template < class T >
    
    template < typename T >
    
    mist::matrix< double > hoge;
    
  • ダメな例
    template<class T>
    
    template<typename T>
    
    mist::matrix<double> hoge;
    

タブは保持し,スペースに置き換えない.

できる限り,C++スタイルのキャストを利用する.

  • いい例
    int hoge = static_cast< int >( hogehoge );
    
  • ダメな例
    int hoge = (int)hogehoge;
    

for,if分の条件部分はスペースを空ける.

  • いい例
    if( hogehoge ) ...
    
    for( int i = 0 ; i < hogehoge ; i++ ) ...
    
  • ダメな例
    if(hogehoge) ...
    
    for(int i=0;i<hogehoge;i++) ...
    

アルゴリズム内部のみで用いるクラス等は,さらに内部の名前空間で囲むか,関数内部で定義する.

  • いい例
    namespace hoge
    {
        class hogehoge {...};
    }
    
    void hogehogehoge( )
    {
        hoge::hogehoge hogehogehoge;
    }
    
    void hogehogehoge( )
    {
        class hogehoge {...};
        hoge::hogehoge hogehogehoge;
    }
    
  • ダメな例
    class hogehoge {...};
    
    void hogehogehoge( )
    {
        hogehoge hogehogehoge;
    }
    

using namespace をグローバルスコープで利用しない.

  • いい例
    void hogehogehoge( )
    {
        std::string hoge;
    }
    
    void hogehogehoge( )
    {
        using namespace std;
        string hoge;
    }
    
  • ダメな例
    using namespace std;
    
    void hogehogehoge( )
    {
        string hoge;
    }