JAVA教程之写Java程序最简单犯的21种毛病
java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的),程序|毛病1.DuplicatedCode代码反复几近是最多见的异味了。他也是Refactoring的次要方针之一。代码反复常常来自于copy-and-paste
的编程作风。与他绝对应OAOO是一个好体系的主要标记(请拜见我的duplicatedcode一文:http://www.erptao.org/download.php?op=viewsdownload&sid=6)。
2.Longmethod
它是传统布局化的“遗毒“。一个办法应该具有自我自力的企图,不要把几个企图放在一同,我的《年夜类和长办法》一文中有具体形貌。
3.LargeClass
年夜类就是你把太多的义务交给了一个类。这里的划定规矩是OneClassOneResponsibility。
4.DivergentChange
一个类内里的内容变更率分歧。某些形态一个小时变一次,某些则几个月一年才变一次;某些形态由于这方面的缘故原由产生变更,而另外一些则由于其他方面的缘故原由变一次。面向对象的笼统就是把绝对稳定的和绝对变更相断绝。把成绩变更的一方面和另外一方面相断绝。这使得这些绝对稳定的能够重用。成绩变更的每一个方面都能够独自重用。这类相异变更的共存使得重用十分坚苦。
5.ShotgunSurgery
这恰好和下面相反。对体系一个中央的改动触及到其他很多中央的相干改动。这些变更率和变更内容类似的形态和举动一般应该放在统一个类中。
6.FeatureEnvy
对象的目标就是封装形态和与这些形态严密相干的举动。假如一个类的办法频仍用get办法存取其他类的形态举行盘算,那末你要思索把举动移到触及形态数量最多的谁人类。
7.DataClumps
某些数据一般像孩子一样成群游玩:一同呈现在良多类的成员变量中,一同呈现在很多办法的参数中…..,这些数据也许应当本人自力构成对象。
8.PrimitiveObsession
面向对象的老手一般习气利用几个原始范例的数据来暗示一个观点。比如关于局限,他们会利用两个数字。关于Money,他们会用一个浮点数来暗示。由于你没有利用对象来表达成绩中存在的观点,这使得代码变的难以了解,办理成绩的难度年夜年夜增添。
好的习气是扩大言语所能供应原始范例,用小对象来暗示局限、金额、转化率、邮政编码等等。
9.SwitchStatement
基于常量的开关语句是OO的年夜敌,你应该把他变成子类、state或strategy。
10.ParallelInheritanceHierarchies
并行的承继条理是shotgunsurgery的特别情形。由于当你改动一个条理中的某一个类时,你必需同时改动别的一个条理的并行子类。
11.LazyClass
一个干活未几的类。类的保护必要分外的开支,假如一个类承当了太少的义务,应该打消它。
12.SpeculativeGenerality
一个类完成了从未用到的功效和通用性。一般如许的类或办法独一的用户是testcase。不要夷由,删除它。
13.TemporaryField
一个对象的属性大概只在某些情形下才成心义。如许的代码将难以了解。专门创建一个对象来持有如许的孤儿属性,把只和他相干的举动移到该类。最多见的是一个特定的算法必要某些只要该算法才有效的变量。
14.MessageChain
动静链产生于当一个客户向一个对象请求另外一个对象,然后客户又向这另外一对象请求另外一个对象,再向这另外一个对象请求另外一个对象,云云云云。这时候,你必要埋没分拨。
15.MiddleMan
对象的基础特征之一就是封装,而你常常会经由过程分拨往完成封装。可是这一步不克不及走得太远,假如你发明一个类接口的一泰半办法都在做分拨,你大概必要移往这其中间
人。
16.InappropriateIntimacy
某些类互相之间太亲热,它们消费了太多的工夫往砖研他人的公有部分。对人类而言,我们大概不该该太假正派,但我们应该让本人的类严厉恪守禁欲主义。
17.AlternativeClasseswithDifferentInterfaces
做不异事变的办法有分歧的函数signature,分歧把它们往类条理上移,直至协定分歧。
18.IncompleteLibraryClass
要创建一个好的类库十分坚苦。我们大批的程序事情都基于类库完成。但是,云云普遍而又相异的方针对库构建者提出了刻薄的请求。库构建者也不是全能的。偶然候我们会发明库类没法完成我们必要的功效。而间接对库类的修正有十分坚苦。这时候候就必要用各类手腕举行Refactoring。
19.DataClass
对象包含形态和举动。假如一个类只要形态没有举动,那末一定有甚么中央出成绩了。
20.RefusedBequest
超类传上去良多举动和形态,而子类只是用了个中的很小一部分。这一般意味着你的类条理有成绩。
21.Comments
常常以为要写良多正文暗示你的代码难以了解。假如这类感到太多,暗示你必要Refactoring。
最后就是我对java的几点希望:首先是IDE工具,有人说java已经很好了,有jbuilder,eclipse,netBeans等等,但是我认为如果java想超越.net,那么他首先要解决的就是IDE工具的整合。 是一种将安全性(Security)列为第一优先考虑的语言 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 是一种语言,用以产生「小应用程序(Applet(s)) J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
页:
[1]