Java代码约定澄清 - 直接编码数字常量

时间:2013-08-28 07:59:49

标签: java conventions

Java Code Conventions第10.3节中,它指出:

  

数值常量(文字)不应直接编码,除了-1,0和1,它们可以作为计数器值出现在for循环中。

'直接编码'数值常数是什么意思?

3 个答案:

答案 0 :(得分:9)

它指的是所谓的“神奇数字”。请注意以下代码:

float radians = 180/3.141;

float degreesInRadians = myDegrees/Math.PI;

哪一个更清楚?

答案 1 :(得分:3)

这意味着当您在代码中使用数字(除了-1,0和1)时,使用常量来“标记”它。

即代替:

boolean pass = score >= 50;

使用此:

private static final int MINIMUM_PASS_SCORE = 50;

boolean pass = score >= MINIMUM_PASS_SCORE;

答案 2 :(得分:1)

我认为这意味着在不定义实际内容的情况下使用它们。例如,而不是陈述:

public static double PI = 3.14; //<-- Clearly defines the meaning of this value.

你只是使用小数值。

double a = Math.pow(3.14 * r, 2); // <-- Does not define the meaning of 3.14

这使得代码更难阅读,因此是一种避免使用的做法。