JAVA编程:Java代码编写的一样平常性引导 (转贴)
先谈谈我对java的一些认识。我选择java,是因为他语法简单,功能强大,从web,到桌面,到嵌入式,无所不能。但当我进一步了解了java后,感叹,java原来也有许多缺点。作者:javaduke(www.dukejava.com)(1)类名首字母应当年夜写。字段、办法和对象(句柄)的首字母应小写。关于一切标识符,个中包括的一切单词都应紧靠在一同,并且年夜写两头单词的首字母。比方:
ThisIsAClassName
thisIsMethodOrFieldName
若在界说中呈现了常数初始化字符,则年夜写staticfinal基础范例标识符中的一切字母。如许即可标记出它们属于编译期的常数。
Java包(Package)属于一种特别情形:它们全都是小写字母,即使两头的单词亦是云云。关于域名扩大称号,如com,org,net大概edu等,全体都应小写(这也是Java1.1和Java1.2的区分之一)。
(2)为了惯例用处而创立一个类时,请接纳"典范情势",并包括对下述元素的界说:
equals()
hashCode()
toString()
clone()(implementCloneable)
implementSerializable
(3)关于本人创立的每个类,都思索置进一个main(),个中包括了用于测试谁人类的代码。为利用一个项目中的类,我们没需要删除测试代码。若举行了任何情势的修改,可便利地前往测试。这些代码也可作为怎样利用类的一个示例利用。
(4)应将办法计划成扼要的、功效性单位,用它形貌和完成一个不一连的类接口部分。幻想情形下,办法应长篇大论。若长度很年夜,可思索经由过程某种体例将其支解成较短的几个办法。如许做也便于类内代码的反复利用(有些时分,办法必需十分年夜,但它们仍应只做一样的一件事变)。
(5)计划一个类时,请设身处地为客户程序员思索一下(类的利用办法应当长短常明白的)。然后,再设身处地为办理代码的人思索一下(估计有大概举行哪些情势的修正,想一想用甚么办法可把它们变得更复杂)。
(6)使类尽量短小干练,并且只办理一个特定的成绩。上面是对类计划的一些倡议:
■一个庞大的开关语句:思索接纳"多形"机制
■数目浩瀚的办法触及到范例不同极年夜的操纵:思索用几个类来分离完成
■很多成员变量在特性上有很年夜的不同:思索利用几个类
(7)让统统工具都尽量地"公有"--private。可以使库的某一部分"大众化"(一个办法、类大概一个字段等等),就永久不克不及把它拿出。若强行拿出,便可能损坏其别人现有的代码,使他们不能不从头编写和计划。若只发布本人必需发布的,便可宁神勇敢地改动其他任何工具。在多线程情况中,隐私是出格主要的一个要素--只要private字段才干在非同步利用的情形下遭到回护。
(8)谨惕"伟大对象综合症"。对一些习气于按次编程头脑、且初涉OOP范畴的老手,常常喜好先写一个按次实行的程序,再把它嵌进一个或两个伟大的对象里。依据编程道理,对象表达的应当是使用程序的观点,而非使用程序自己。
(9)若不得已举行一些不太美观的编程,最少应当把那些代码置于一个类的外部。
(10)任什么时候候只需发明类与类之间分离得十分严密,就必要思索是不是接纳外部类,从而改良编码及保护事情(拜见第14章14.1.2大节的"用外部类改善代码")。
(11)尽量仔细地加上正文,并用javadoc正文文档语法天生本人的程叙文档。
(12)制止利用"把戏数字",这些数字很难与代码很好地共同。如今后必要修正它,无疑会成为一场恶梦,由于基本不晓得"100"究竟是指"数组巨细"仍是"其他全然分歧的工具"。以是,我们应创立一个常数,并为其利用具有压服力的形貌性称号,并在全部程序中都接纳常数标识符。如许可以使程序更容易了解和更容易保护。
(13)触及构建器和非常的时分,一般但愿从头抛弃在构建器中捕捉的任何非常--假如它形成了谁人对象的创立失利。如许一来,挪用者就不会觉得谁人对象已准确地创立,从而自觉地持续。
(14)当客户程序员用完对象今后,若你的类请求举行任何扫除事情,可思索将扫除代码置于一个优秀界说的办法里,接纳相似于cleanup()如许的名字,明白标明本人的用处。除此之外,可在类内安排一个boolean(布尔)标志,指出对象是不是已被扫除。在类的finalize()办法里,请断定对象已被扫除,并已抛弃了从RuntimeException承继的一个类(假如还没有的话),从而指出一个编程毛病。在接纳象如许的计划之前,请断定finalize()可以在本人的体系中事情(大概必要挪用System.runFinalizersOnExit(true),从而确保这一举动)。
(15)在一个特定的感化域内,若一个对象必需扫除(非由渣滓搜集机制处置),请接纳下述办法:初始化对象;若乐成,则当即进进一个含有finally从句的try块,入手下手扫除事情。
(16)若在初始化过程当中必要掩盖(作废)finalize(),请记着挪用super.finalize()(若Object属于我们的间接超类,则无此需要)。在对finalize()举行掩盖的过程当中,对super.finalize()的挪用应属于最初一个举动,而不该是第一个举动,如许可确保在必要基本类组件的时分它们仍然无效。
(17)创立巨细流动的对象汇合时,请将它们传输至一个数组(若筹办从一个办法里前往这个汇合,更应云云操纵)。如许一来,我们便可享用到数组在编译期举行范例反省的优点。别的,为利用它们,数组的吸收者大概其实不必要将对象"外型"到数组里。
(18)只管利用interfaces,不要利用abstract类。若已知某样工具筹办成为一个基本类,那末第一个选择应是将其酿成一个interface(接口)。只要在不能不利用办法界说大概成员变量的时分,才必要将其酿成一个abstract(笼统)类。接口次要形貌了客户但愿做甚么事变,而一个类则努力于(或同意)详细的实行细节。
(19)在构建器外部,只举行那些将对象设为准确形态所需的事情。尽量地制止挪用其他办法,由于那些办法大概被其别人掩盖或作废,从而在构建过程当中发生不成预知的了局(拜见第7章的具体申明)。
(20)对象不该只是复杂地包容一些数据;它们的举动也应失掉优秀的界说。
(21)在现成类的基本上创立新类时,请起首选择"新建"或"创作"。只要本人的计划请求必需承继时,才招考虑这方面的成绩。若在原本同意新建的场所利用了承继,则全部计划会变得没有需要地庞大。
(22)用承继及办法掩盖来暗示举动间的差别,而用字段暗示形态间的区分。一个十分极度的例子是经由过程对分歧类的承继来暗示色彩,这是相对应当制止的:应间接利用一个"色彩"字段。
(23)为制止编程时碰到贫苦,请包管在本人类路径指到的任何中央,每一个名字都仅对应一个类。不然,编译器大概先找到同名的另外一个类,并呈报堕落动静。若嫌疑本人碰着了类路径成绩,请尝尝在类路径的每个出发点,搜刮一下同名的.class文件。
(24)在Java1.1AWT中利用事务"适配器"时,出格简单碰着一个圈套。若掩盖了某个适配器办法,同时拼写办法没有出格考究,最初的了局就是新增加一个办法,而不是掩盖现成办法。但是,因为如许做是完整正当的,以是不会从编译器或运转期体系取得任何堕落提醒--只不外代码的事情就变得不一般了。
(25)用公道的计划计划打消"伪功效"。也就是说,倘使只必要创立类的一个对象,就不要提早限定本人利用使用程序,并加上一条"只天生个中一个"正文。请思索将其封装成一个"独生子"的情势。若在主程序里有大批狼藉的代码,用于创立本人的对象,请思索采取一种制造性的计划,将些代码封装起来。
(26)小心"剖析瘫痪"。请记着,不管怎样都要提早懂得全部项目标情况,再往考查个中的细节。因为掌控了全局,可疾速熟悉本人未知的一些要素,避免在考查细节的时分堕入"逝世逻辑"中。
(27)小心"过早优化"。起首让它运转起来,再思索变得更快--但只要在本人必需如许做、并且经证明在某部分代码中切实其实存在一本性能瓶颈的时分,才应举行优化。除非用专门的工具剖析瓶颈,不然很有多是在华侈本人的工夫。功能提拔的隐含价值是本人的代码变得难于了解,并且难于保护。
(28)请记着,浏览代码的工夫比写代码的工夫多很多。思绪明晰的计划可取得易于了解的程序,但正文、仔细的注释和一些示例常常具有不成估计的代价。不管对你本人,仍是对厥后的人,它们都是相称主要的。如对此仍有嫌疑,那末请试想本人试图从联机Java文档里找出有效信息时碰着的波折,如许也许能将你压服。
(29)如以为本人已举行了优秀的剖析、计划大概实行,那末请略微改换一下头脑角度。尝尝约请一些外来人士--其实不必定是专家,但能够是来自本公司其他部门的人。请他们用完整奇怪的目光考查你的事情,看看是不是能找出你一度置若罔闻的成绩。接纳这类体例,常常能在最合适修正的阶段找出一些关头性的成绩,制止产物刊行后再办理成绩而酿成的款项及精神方面的丧失。
(30)优秀的计划能带来最年夜的报答。简言之,关于一个特定的成绩,一般会花较长的工夫才干找到一种最得当的办理计划。但一旦找到了准确的办法,今后的事情就轻松多了,不再用履历数小时、数天大概数月的疾苦挣扎。我们的勉力事情会带来最年夜的报答(乃至无可估计)。并且因为本人倾泻了大批血汗,终极取得一个杰出的计划计划,乐成的快感也是使人心动的。保持抵抗草草竣工的勾引--那样做常常得失相当
学习JAVA的目的更多的是培养自身的工作能力,我觉得工作能力的一个核心就是:独立思考能力,因为只有独立思考后,才会有自己的见解 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 是一种突破用户端机器环境和CPU 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 Java 编程语言的风格十分接近C、C++语言。
页:
[1]
2