DataflowAnomalyAnalysis:发现 'DD'-异常用变量'可变的' (线'n1'-'n2').

DataflowAnomalyAnalysis:发现 'DU'-异常用变量'可变的' (线'n1'-'n2').

DD和DU熟悉的声音...我想要说的事情,就像测试和分析关于薄弱之前和之后的条件,但我不记得细节。

NullAssignment:分配对象 null是一码的气味。考虑 重构。

会不会设定一个目的 null 协助在垃圾收集,如果对象是当地的目的(不用外面的方法)?或是一个神话吗?

MethodArgumentCouldBeFinal:参数 'param'不是分配,并可能 宣布最终的

LocalVariableCouldBeFinal:本地 变量'可变的'可以宣布 最终

是否有任何优势,使用 final 参数和变量?

LooseCoupling:避免使用 实施喜欢的类型 '链表';使用的界面 而不是

如果我知道,我特别需要一个 LinkedList, 为什么我不能使用一个使我的意图明确清楚的未来开发商?这是一件事回归类,最高的类的路径,是很有意义的,但是为什么我会不会宣布我的变量的严格意义上的?

AvoidSynchronizedAtMethodLevel:使用 块的水平,而不是方法一级 同步

什么优势的框级同步有超过方法水平的同步?

AvoidUsingShortType:请勿使用 短类型

我的第一语言是C和C++,但在Java世界,为什么我不应该使用的类型,最好描述了我的数据?

有帮助吗?

解决方案

  • DD和DU异常情况(如果我没有记错的话—我用置的代和消息是有一点不同)参照分配一个值,一个地方的变量是没读,通常是因为它是重新分配的另一个值之前曾经被读取。一个典型的情况下将被初始化了一些变量 null 当它宣布。 不宣布的可变直到它的需要。

  • 分配 null 当地变为"协助"的垃圾收集是一个神话。PMD是让你知道这只是反生产的混乱。

  • 指定的最终在一个地方变量 应该 会非常有益的一种优化,但我没有任何具体的实例目前他正在利用这种暗示。我已经找到了有用的推理是正确的我自己的代码。

  • 指定的接口方面的...好吧, 接口 是一个伟大的设计的做法。你可以很容易地改变实现的收集,而不影响主叫方所有。那是什么口是所有有关。

  • 我不能想象的许多情况下,其中一个会叫 需要 一个 LinkedList, ,因为它没有获得任何API,不是宣布一些接口。如果客户的依赖,API,它可以通过正确的界面。

  • 框级同步允许的关键部分得更小,其中许多工作要做,同时作为可能。也许更重要的是,它允许使用的一个锁定的对象是私营的封闭的对象。这种方式,可以保证没有任何僵局可能会发生。使用的实例本身作为一个锁,任何人都可以同步上它错误,造成僵局。

  • 操作数的类型 short 促进来 int 在任何行动。这条规则是让你知道,这是促进在发生,以及可能使用 int.然而,使用 short 类型可节省的存储器,所以,如果它是一个实例成员,我可能会忽视这一规则。

其他提示

DataflowAnomalyAnalysis:发现 'DD'-异常用变量'可变的' (线'n1'-'n2').

DataflowAnomalyAnalysis:发现 'DU'-异常用变量'可变的' (线'n1'-'n2').

不知道。

NullAssignment:分配对象 null是一码的气味。考虑 重构。

会不会设定一个目的 null 协助在垃圾收集,如果对象是当地的目的(不用外面的方法)?或是一个神话吗?

目在地方法标是垃圾收集一次的方法返回。设置他们null不会做任何区别。

因为这将使小经验中开发什么是空的分配有关它可以被认为是一个代码的气味。

MethodArgumentCouldBeFinal:参数 'param'不是分配,并可能 宣布最终的

LocalVariableCouldBeFinal:本地 变量'可变的'可以宣布 最终

是否有任何优势,使用 final 参数和变量?

它让更清晰的价值不会改变在生命周期的对象。

此外,如果任何机会有人尝试,以分配一个值,编译器将防止这个编码的错误在汇编的类型。

考虑这样的:

 public void businessRule( SomeImportantArgument important )  {
      if( important.xyz() ){
          doXyz();
      }
      // some fuzzy logic here
      important = new NotSoImportant();
      // add for/if's/while etc 

     if( important.abc() ){ // <-- bug
         burnTheHouse();
     }
  } 

假设你被派去解决一些神秘的错误,不时从燃烧的房子。

你知道什么,伙使用的参数,什么你不明白的是 为什么burnTHeHouse 调用的方法如果没有满足条件(根据你的发现)

它需要一段时间到发现,在某些时候在中间, 有人 改变参考和使用 其他的 对象。

使用 final 帮助防止这样的事情。

LooseCoupling:避免使用 实施喜欢的类型 '链表';使用的界面 而不是

如果我知道,我特别需要一个 LinkedList, 为什么我不能使用一个使我的意图明确清楚的未来开发商?这是一件事回归类,最高的类的路径,是很有意义的,但是为什么我会不会宣布我的变量的严格意义上的?

没有区别,在这种情况。我会认为因为你不是使用 LinkedList 具体功能的建议是公平的。

今天,链表可能是有意义的,但通过使用一个接口,你的帮助你自(或其他)来改变很容易的时候它不会将。

对于小的、个人的项目,这可能没有意义,但是因为你使用分析仪已经,我想你关心的代码质量。

此外,可以帮助经验较少的开发者创造良好的习惯。[我不是说你是其中之一,但分析不知道你)]

AvoidSynchronizedAtMethodLevel:使用 块的水平,而不是方法一级 同步

什么优势的框级同步有超过方法水平的同步?

较小的同步,部分得更好。就是这样。

此外,如果你进行同步的方法的水平,你会阻止整个的对象。当你同在框水平,你只是同步的特定部分,在某些情况下这就是你需要什么。

AvoidUsingShortType:请勿使用 短类型

我的第一语言是C和C++,但在Java世界,为什么我不应该使用的类型,最好描述了我的数据?

我从来没听说过这个,我同意你的意见:)我从来没有使用短虽然。

我的猜测是,通过不使用它,你就会帮助你的自我升级 int 无缝。

代码闻起来都更面向码质量的比表现优化。因此,建议给经验较少的程序,并避免陷阱,而不是提高程序的速度。

这样,就可以节省大量的时间和挫折的时候试图修改代码,以适应一个更好的设计。

如果它的建议没有道理的,只是忽略它们,记住,你是在开发费和工具只是一个工具。如果出错,你不能责怪工具,对吗?

只是一个注意 final 问题。

将"最终"上的一个变量的结果,它只能分配 一旦.这并不一定意味着它是更容易编写的,但它肯定意味着它容易 阅读 对于一个未来的维护者。

请考虑这些要点:

  • 任何变量 final 可以立即归类于"不会改变价值,同时观看".
  • 通过暗示这意味着,如果所有的变量,这将不改变标有最终的,那么变量未标有最后实际上会改变。

这意味着你可以看到已经阅读时通过的定义的一部分,这个变量以看出来,因为他们可能会改变价值在码,并维护者可以花他/她的努力的更好的代码的更多的可读性。

会不会设定一个目空 协助在垃圾收集,如果 对象是当地的目的(不用 以外的方法)?或是那一个 神话?

唯一的事情,它不是使它们能够为对象GCd的方法之前结束,这是很少必要的。

是否有任何优势,使用最终的参数和变量?

它使代码有点更明确的因为你不需要担心的价值正在改变的地方玩你的时候你分析代码。更经常的则不你不需要或不想要改变一变量的价值,一旦它的设置。

如果我知道,我特别需要一个 链表,我为什么不用一一个 使我的意图明确清楚 未来的开发人员?

你能想到的任何理由为什么你会具体需要一个 链表?

这是一件事 回归类,最高的 类的路径,是很有意义的,但为什么 我会宣布我的变量 最严格的意义吗?

我不太关心地变量,或者领域,但如果您声明一种类型的参数 LinkedList, 我会追捕你和伤害你的,因为它使我无法使用的东西喜欢 Arrays.asList()Collections.emptyList().

什么优势的框级同步有超过方法水平的同步?

最大的之一是,它可以使用专用监测对象,因此,只有那些关键部分是相互排斥的需要,而不是一切都使用同样的监控。

在Java世界,为什么我不应该 使用的类型,最好描述了我 数据?

因为类型小于int是个主题是非常晋升到int为所有的计算你已经投降到分配的任何东西给他们。这导致混乱的代码和相当多的confustion(尤其是当自动装箱参与).

AvoidUsingShortType:不要用的很短的类型

  • 列项目

    短是16位、2的恭维在java

  • 短mathmatical operaion有任何东西在整数家庭以外的另一个短期,将需要一个运行时签扩展转换到较大的尺寸。工作对一个浮点需要扩展和一个不平凡的转换到IEEE-754.
  • 找不到证明,但有一个32位或64位的注册,你不再节省'处的说明'的字节的水平。你是停车场的一辆小汽车在半拖车的停车位就处理器登记册的关注。
  • 如果你是优化项目的字节的代码水平,哇。只是哇;P
  • 我同意在设计方面的忽略这pmd警告,只是衡量准确地描述了你的对象,一个"短"与发生性能转换。
  • 在我看来,所发生的性命都是微不足道,在大多数机械。忽略错误。

什么样的优势块级 同步有方法的水平 同步?同步的方法是喜欢做一个 synchronize(getClass()) 块,并且阻止所有类。

也许你不想这样

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top