これはやや物議を醸すトピックであり、プログラマーと同じくらい多くの意見があると思います。しかし、そのために、ビジネス(または職場)での一般的な慣行を教えてください。
私の職場では、厳密なコーディングガイドラインがあります。その1つのセクションは、マジックストリング/マジックナンバー専用です。状態(C#の場合):
コードでは、記号定数を定義する以外に、数値または文字列のリテラル値を使用しないでください。次のパターンを使用して、定数を定義します。
public class Whatever { public static readonly Color PapayaWhip = new Color(0xFFEFD5); public const int MaxNumberOfWheels = 18; }
例外があります:値0、1、nullはほとんど常に安全に使用できます。多くの場合、値2および-1も問題ありません。ロギングまたはトレースを目的とした文字列は、この規則から除外されます。リテラルは、意味が文脈から明らかであり、将来の変更の影響を受けない場合に許可されます。
mean = (a + b) / 2; // okay
WaitMilliseconds(waitTimeInSeconds * 1000); // clear enough
理想的な状況は、次の場合にコードの可読性/保守性への影響を示す公式の研究論文です。
- 魔法の数字/文字列がいたるところにある
- 魔法の文字列/数字は、一定の宣言によって合理的に(またはさまざまな範囲で)置き換えられます-「合理的に」使用することについて私に怒鳴らないでください
- 魔法の文字列/数字は、過剰に置き換えられる必要があります(以下の私の例を参照)
私の同僚の1人と議論するときに科学的根拠に基づいた議論をするためにこれをしたいと思います。彼は次のような定数を宣言するようになります:
private const char SemiColon = ';';
private const char Space = ' ';
private const int NumberTen = 10;
別の例は次のようになります(これはJavaScriptで行われます)。
var someNumericDisplay = new NumericDisplay("#Div_ID_Here");
そのIDが1か所でしか使用されていない場合、javascriptファイルの上にDOM IDを貼り付けますか?
次のトピックを読みました
。StackExchange
StackOverflow
Bytes IT Community
さらに多くの記事があり、これらを読んだ後にいくつかのパターンが出現します。
私の質問は、コードで魔法の文字列と数字を使用することですか?可能な場合は、参考文献に裏打ちされた専門家の回答を特に探しています。
NumberTen = 10
数字の10は再定義されないため、これは無意味です。MaxRetryCount = 10
これには、最大再試行回数を変更したいというポイントがあります。private const char SemiColon = ';';
ダム。private const char LineTerminator = ';'
; スマート。