しない理由
まず、下線を記述したり、トリックを使用してシミュレートしたりしない理由があります。コード内で定数を見つけるのが難しくなります。あるプログラムが、その操作のどこかで、いくつかのパラメーターにハードコーディングされた値1500000を示しているとします。プログラムのソースコードのどこでこれが実際に発生するかを知りたいので、コードをgrepして、1500000
何も見つかりません。どうして?16進数である可能性があります(ただし、そのような丸い10進数の場合)。私には知られていないが、定数は実際にはと書かれてい1_500_000
ます。正規表現が必要でした1_?500_?000
。
コメントのガイドキャラクター
1種類の視覚教材が利用できない、または上記の理由でそれを使用したくないからといって、代替視覚教材を作成するためにテキストファイルの2つの次元を利用できないという意味ではありません。
foo = bar / 1000000000;
// --^--^--^
これにより、3つのゼロからなる3つのグループがあることを簡単に確信できます。それでも、ソースコードをgrepして1000000000
、見つけることができます。
構文の色付け
プログラム可能な構文の色付けを備えたテキストエディタは、読みやすさを向上させるために、色を交互に変えて数値定数の数字をグループ化できます。コードで何もする必要はありません。
前処理:C、C ++、Objective C
ここで、数字と数字の間にコンマが必要な場合は、CとC ++でいくつかの前処理を使用できます。
/* Four digit base TH-ousand constant macro */
/* Condensed using Horner's rule */
#define TH(A,B,C,D) ((((((A) * 1000) + (B)) * 1000) + (C)) * 1000 + D)
tv_sec = nanoseconds / TH(1,000,000,000)
のような数字で動作しますTH(1,234,567,890)
。
THに似たマクロは、算術ではなくトークンの貼り付けでも機能します。Cプリプロセッサでは、2 ##
つのオペランドを1つのトークンに貼り付けるために、マクロ演算子で2項演算子(「トークンペースト」)を使用できます。オペランドの一方または両方をマクロ引数にすることができます。ここでのマイナス面(私たちにとってリスクを生み出します)は、結果の連結が有効なトークンでない場合、動作が未定義になることです。
#define TOK4(A, B, C, D) A ## B ## C ## D
いま
TOK4(1,000,000,000) /* produces the single token 1000000000 */
TOK4(1,123,000,000.0E+2) /* produces the single token 1123000000.0E+2 */
TOK4(pr,in,t,f) /* produces the token printf */
TOK4(#,*,a,b) /* undefined behavior, #*ab is not valid token syntax */
識別子を貼り付けて結果を使用してグローバル変数と関数に名前を付けるCプログラムが存在し、GNU id-utilsやctagsなどのツールの影響を受けないため、使用するのが非常に困難です。