経験豊富なC++プログラマではなく、私は自分のプログラムを読めるようにしています。 可能性Main.cppの外にある関数やクラスを他のcppやヘッダーファイルに置いています。コード可読性について
ラベルと基本パラメータを宣言するすべての#defineディレクティブで同じことをやり始めました。それらはDEF_PARAM.hヘッダーファイルにあり、これは動作します。
私はマップでも同じことをすると思いましたが、これは私に問題を引き起こします。
std::map <std::string,int> Mnemo_list; //Mapping of Mnemonics to number of parameters.
Mnemo_list["P"]=4;
Mnemo_list["PX"]=1;
Mnemo_list["PY"]=1;
Mnemo_list["PZ"]=1;
Mnemo_list["SO"]=1;
Mnemo_list["S"]=4;
Mnemo_list["SX"]=2;
Mnemo_list["SY"]=2;
Mnemo_list["SZ"]=2;
Mnemo_list["CpX"]=3;
Mnemo_list["CpY"]=3;
Mnemo_list["CpZ"]=3;
Mnemo_list["CX"]=1;
Mnemo_list["CY"]=1;
Mnemo_list["CZ"]=1;
私は、テキストファイルから読み込まれ、時には文字列を使用しているので、私は多くの場合のみ列挙型で動作するスイッチ制御を必要とするので、私はスイッチの後半で使用する整数とマッピング文字列を開始しました。マップは長くなる可能性があるので、ヘッダーファイルを含むヘッダーまたはcppファイルを入れておくことをお勧めします。
まず、完全なブロック(マップ定義と割り当て)をヘッダーファイルに入れてみるか、ヘッダー内のマップdefとcppファイル内の残りの部分のみを入れてみました。その結果、コンパイラから、次の奇妙なエラーです:
"error: expected constructor, destructor, or type conversion before '=' token"
私は誰もがmain.cppにの冒頭にこのような長いリストの一連のブラウジングを好きではないと思います。いったんコードが再びコードを見たいのであれば、そのために、この一連の行コードをMain.cppの外側のヘッダーまたはコードファイルに入れます。
このメソッドは、大文字小文字の区別がない場合にグローバル変数を使用したいという印象を与えます。私はちょっと前にフォーラムが私に示唆したようにそれを避けたい。
これは良い習慣であるか、ソースコードを読みやすくするための他の方法はありますか?事前に
おかげで、
ステファン
それらの数十億。それらの多くは、相互に排他的であるか、または特定のプロジェクトに適用可能ではありません。残りのほとんどすべては主観的です。 – delnan
いくつか例を挙げてください。マクロの不必要な使用は、コードを_less_読み取り可能にする傾向があります。また、この質問は[codereview.se]に適しているかもしれません。 – hammar
編集後、私はC++ 0xを推奨します。グローバルなスコープであっても、マップを正しい値で*初期化する*ことができます。 –