DataflowAnomalyAnalysis:找到变量'变量'的'DD'异常(行'n1' - 'n2').
DataflowAnomalyAnalysis:找到变量'变量'的'DU'-anomaly(行'n1' - 'n2').
DD和DU听起来很熟悉......我想说的是关于最弱前后条件的测试和分析,但我不记得具体细节.
NullAssignment:将Object指定为null是代码气味.考虑重构.
null
如果对象是本地对象(在方法之外没有使用),是不是设置一个对象来协助垃圾收集?或者这是一个神话?
MethodArgumentCouldBeFinal:参数'param'未分配,可以声明为final
LocalVariableCouldBeFinal:局部变量'variable'可以声明为final
使用final
参数和变量有什么好处吗?
LooseCoupling:避免使用'LinkedList'之类的实现类型; 改为使用界面
如果我知道我特别需要一个LinkedList
,为什么我不会用一个来明确表达未来开发人员的意图?返回有意义的类路径中最高的类是一回事,但为什么我不会声明我的变量是最严格的呢?
AvoidSynchronizedAtMethodLevel:使用块级别而不是方法级别同步
块级同步与方法级同步相比有哪些优势?
AvoidUsingShortType:不要使用短类型
我的第一语言是C和C++,但在Java世界中,为什么我不能使用最能描述我数据的类型呢?
eri*_*son 33
DD和DU异常(如果我没记错的话 - 我使用FindBugs并且消息有点不同)指的是为永远不会读取的局部变量赋值,通常是因为它在被读取之前被重新分配了另一个值.一个典型的例子null
是在声明它时初始化一些变量.在需要之前不要声明变量.
分配null
给局部变量以"协助"垃圾收集器是一个神话.PMD让你知道这只是适得其反的混乱.
在局部变量上指定final 应该对优化器非常有用,但是我没有任何利用这个提示的当前JIT的具体示例.我发现它有助于推理我自己的代码的正确性.
根据......井,接口指定接口是一个很好的设计实践.您可以轻松更改集合的实现,而不会影响调用者.这就是接口的全部意义所在.
我想不出有很多情况下,呼叫者就需要一个LinkedList
,因为它不公开不是由一些接口声明的API.如果客户端依赖于该API,则可以通过正确的界面获得该API.
块级同步允许关键部分更小,这允许尽可能多地同时完成工作.也许更重要的是,它允许使用由封闭对象私有控制的锁定对象.这样,您可以保证不会发生死锁.使用实例本身作为锁,任何人都可以错误地同步它,导致死锁.
在任何操作short
中都会提升类型的操作数int
.此规则让您知道此促销正在发生,您也可以使用int
.但是,使用该short
类型可以节省内存,所以如果它是实例成员,我可能会忽略该规则.
归档时间: |
|
查看次数: |
33977 次 |
最近记录: |