|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你希望java的IDE整合。这个是没有必要的,重要的是你理解java有多深以及怎么组织你的代码,即使没有IDE,代码照样能够编译运行的。
只管传统的断言能够增添对Java代码所作的反省次数,但仅用它们,仍是有很多反省没法完成。处置这类情形的办法之一就是利用时态逻辑。请回想上个月的文章“AssertionsandtemporallogicinJavaprogramming”,时态逻辑有助于供应比程序中的办法更无力的断言,从而有助于加强用别的体例难以正式表达的稳定量。
我们不用吃力征采往发明有助于避免我们程序堕落的很多有效的稳定量。实践上,能够经由过程利用此类时态逻辑断言来加年夜我们打消一些最多见毛病形式的力度。在本文中,我们将研讨一些毛病形式,利用时态逻辑能会对它们发生最主动的影响。我们将把以下毛病形式用作示例:
吊挂复合(DanglingComposite)。当您的软件抛出空指针非常时这个毛病产生,由于递回数据范例的毛病暗示,以是这是个难以诊断的成绩。
损坏者数据(SaboteurData)。这类毛病在已存储的数据不克不及满意某些句法或语义束缚时产生;此时软件会由于代码利用的数据中的毛病而不是编码中的毛病而溃散。
SplitCleaner。当资本的猎取和开释按办法界限一分为二,同意某些把持流不开释它们本该开释的资本,其体现情势为泄露或过早地开释它们时,这类毛病产生。
孤线程(OrphanedThread)。当主线程抛出非常而残剩线程持续运转,并守候更多输出到该行列时,这类毛病产生;这类毛病大概招致程序解冻。
臆想完成。当您“完成”了接口,但实践上没有满意其预期的语义时,这类毛病产生。
吊挂复合毛病形式
吊挂复合毛病形式包含递回数据范例的毛病暗示、将一些范例的基础情形暗示为空值而非独自的类。如许做会招致难以诊断的NullPointerException。
比方,假定您创立了以下“厌恶的”数据范例来暗示二叉树:
清单1.一些十分糟的树
publicclassTree{
publicintvalue;
publicTreeleft;
publicTreeright;
//LeavesarerepresentedasTrees
//withnullbranches.
publicTree(int_value){
this.value=_value;
this.left=null;
this.right=null;
}
publicTree(int_value,Tree_left,Tree_right){
this.value=_value;
this.left=_left;
this.right=_right;
}
}
人人注重,除作为糟的示例,请不要将这个代码用于任何别的用处!
这段代码形成了吊挂复合。二叉树叶子被暗示为摆布分支都是空值的Tree。假如我们实验向下递回如许的树,大概很简单激发NullPointerException
避免这类毛病形式的最好办法是:将数据范例的暗示重构为Composite类条理布局(请在参考材料一节参阅关于这个主题的文章)。假定您刚好已完成了如许的重构,以下所示:
<p>
多谢指点,其实我对.net网页编程和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。 |
|