避免幻数的最佳实践应该走多远?

Omn*_*ent 4 java coding-style

在不久的将来,我们可能会通过一个规则强制执行,我们的java源代码中不能包含任何硬编码数字.必须将所有硬编码数字声明为final变量.

尽管从理论上讲这听起来很棒,但在代码中实现它确实很困难/乏味,特别是遗留代码.在下面的代码片段中将数字声明为final变量,是否真的被视为"最佳实践" ?

//creating excel
cellnum = 0;

//Declaring variables. 
Object[] result = new Object[2];

//adding dash to ssn
return ssn.substring(1, 3)+"-"+ssn.substring(3, 5)+"-"+ssn.substring(5, 9);
Run Code Online (Sandbox Code Playgroud)

以上只是我能想到的一些例子,但在这些(以及其他)中,作为开发人员,你会说够了吗?

我想把这个问题变成一个社区维基但是看不出怎样......?

aio*_*obe 6

绝对没有.字面常量有他们的地方,特别是低常量如0,1,2,...

我认为没有人会想到

double[] pair = new double[PAIR_COUNT];
Run Code Online (Sandbox Code Playgroud)

比...更有意义

double[] pair = new double[2];
Run Code Online (Sandbox Code Playgroud)

我会说使用最终变量if

  • ......它增加了可读性,
  • ...值可能会改变(并在多个地方使用),或
  • ......它作为文件

相关的附注:与编码标准/惯例一样:严格遵守极少数(如果有)规则.