什么是"远距离行动"在这个JEP?

时间:2016-03-10 07:14:23

标签: java type-inference

我在这里谈论this JEP。在文中,"远距离行动"有几次提到;例如:

  

排除没有初始化程序的本地人会消除远距离的行动"推理错误,只在典型程序中排除了一小部分本地人。

或:

  

同样,我们也可以在推断类型时考虑所有分配,而不仅仅是初始化器;虽然这会进一步增加可能利用此功能的当地人的比例,但这也会增加远距离行动的风险"错误。

我理解JEP的大部分内容,但那部分让我不知所措。

这里的意思是"远距离行动"?

1 个答案:

答案 0 :(得分:3)

来自维基百科的文章"Action at a distance (computer programming)"

  

在计算机科学中,远距离行动是一种反模式(a   公认的常见错误)在程序的一个部分中的行为   基于难以或不可能识别的操作而变化很大   在该计划的另一部分。避免问题的方法   与远处的动作相关联的是适当的设计,这避免了   全局变量并以受控和本地方式更改数据,或   使用带有参考的纯函数式编程风格   透明度。

     

该术语基于物理学中远距离行动的概念,   这可能是指允许对象在没有对象的情况下进行交互的过程   介质颗粒,如胶子。阿尔伯特爱因斯坦尤其如此   在量子力学中将这种效应称为“怪异行为”   距离"

在这种情况下,它引用没有初始化表达式的变量,如下所示:

var list;

// many lines of code

list = new ArrayList<String>();

虽然稍后在代码中可以通过赋值表达式进行变量类型推断,但这样做会使代码遭受远距离&#34;动作引起的问题&#34;它根本不会显而易见对代码的读者来说,局部变量的类型是什么,这可能会导致错误。