了解下JAVA的诊断Java代码: Fictitious Implementation毛病形式,第1部分
没有那个大公司会傻了吧唧用.net网页编程开发大型项目,开发了,那等于自己一半的生命线被微软握着呢。而.net网页编程不行,限制在window系统,又是捆绑,鄙视微软之!Java言语接口是一种壮大的工具。它具有多承继的良多长处,而没有甚么成绩。为客户但愿利用的一切服务指定一个接口,使得在必要时插进这类接口的分歧完成成为大概。
遗憾的是,标准中能够被表达的部分只要办法申明。对任何完成来讲,极可能另有良多别的稳定量但愿被把握,可是Java言语没有供应反省它们的工具。
臆想毛病形式
因为这类限定,极可能“完成”了一个接口而实践上没有满意预期的语义。由这类FictitiousImplementation招致的毛病就是本周专栏的主题。
比方,请看一看上面这个仓库的接口:
清单1.仓库的接口
publicinterfaceStack{
publicObjectpop();
publicvoidpush(Objecttop);
publicbooleanisEmpty();
}
从Java范例反省器的角度看,包括切合如上申明的办法的任何类能够作为Stack的正当完成。可是实践上,我们但愿仓库能满意一些别的的请求。比方:
假如一个对象o被压进仓库s,而且在仓库长进行的下一步操纵是pop,那末这个操纵的前往值应当是o。
假如关于一个给定的仓库s,s.isEmpty()的前往值是true,而且在这个仓库长进行的下一步操纵是pop,那末挪用pop应当抛出一个RuntimeException非常。
另有大批别的的能够指定的稳定量。我们但愿仓库怎样处置屡次push操纵?关于多线程会有甚么举动?很难经由过程编程来实行这些稳定量。我们能够(而且应当)在文档编写时说起它们,可是编写完成的开辟者大概简单疏忽它们。假如产生这类情形,那末依附这些稳定量的客户将不克不及完成这类完成,就构成了毛病。我称这类形式的毛病为FictitiousImplementation,由于我公平地将其归罪于完成而不是客户。正如任何毛病都有本人的形式一样,FictitiousImplementation大概不克不及立即看出,而是埋伏,一向埋没到某种不屈常的实行路径发明它。
不要指责Java言语!
在持续这篇专栏前,我要指出我并非品评Java言语不克不及指定这类稳定量。同意这类标准的任何机制城市有良多随之而来的弱点。起首,我们想要指定的良多稳定量不克不及被静态地反省。固然范例申明只表达了稳定量的一小部分,可是比下面我们概述的用于仓库的这类束缚简单反省。
在接口中同意更多可表达标准有另外一方面的弱点:如许做,很简单让Java言语背负良多成绩,使得言语中各处都是多承继。请看上面的接口:
清单2.弹出器接口
publicinterfacePopper{
publicObjectpop();
}
<p>
而学习JAVA我觉得最应该避免的就是:只学习,不思考,只记忆,不实践! 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 Java 编程语言的风格十分接近C、C++语言。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
页:
[1]