`
clq9761
  • 浏览: 592812 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

JAVA编程指南

 
阅读更多

一、设计方法论

 

1、方法学,是一套用以降解编程问题复杂性的过程与启发。它由许多经验积累而成的,特别是OOP中,
 在采用某种方法论之前,先弄清楚它能解决什么问题就显得十分重要。
 在整个开发过程中,最重要的一点是:不要不知所措。方法论中要尝试去发现的是:
(1)要使用的对象是什么?
(2)这些对象的接口是什么? 


2、无论做了多少分析,总有些问题不到设计阶段是无法发现的,而更多的问题直到编码阶段或者程序运行时
 才会暴露出来。因此,快速完成分析与设计阶段,并且对开发的系统进行测试才是至关重要的。

3、对象的设计并不只限于写程序的那段时间,而是出现在一系列阶段。对象设计的五个阶段如下:
(1)发现对象
(2)对象的组合
(3)系统的构建
(4)系统扩展
(5)对象重用


4、极限编程(XP)既是编程工作的哲学,也是一套实践准则。其中最重要而独特的两个贡献是“优先编写测试”
   和“结对编程”。


二、设计指南


1.优雅终将得到回报,提出优雅的解决方案似乎花费了太多的时间,不过一旦它能够工作,就能够很容易地
 适应新环境,得到的程序不仅易于编写和调试,而且还易于理解和维护。


2.先能运行,再求快速,先尽可能简化设计,让系统运转起来,如果性能不够理想,再求助于性能分析工具,
 要把时间用在刀刃上。


3.谨记"分而治之"原则,如果待解决的问题过于复杂,先设想一下程序的基本操作,把其中最困难的部分
 包装成其他对象,回过头再来研究这个对象。


4.区分类的编写者和使用者(客户端程序员),类的使用者不需要也不希望知道类的底层工作方式。

5.编写类的时候,类的名称要非常清晰,不需要注释也能理解


6.分析和设计必须使系统中的类,它们的公共接口以及类之间(尤其是与基类之间)的关系必须达到最少


7.尽量让所有的东西自动化,首先编写测试代码,并把它和要测试的类放在一起,可以使用构建工具来自动运行测试。


8.在编写类之前先编写测试代码,以验证这个类是否设计完备


9.所有软件设计中的问题,都可以通过"引入额外的间接层次"得到简化,这是软件工程领域的基本原则,
 也是抽象的依据,如果代码过于复杂,那就引入更多的对象。


10.引入间接概念层次要有意义,同准则9一致,如果加入了无意义的间接概念层次,那就会和没有
 引入间接层一样糟糕。


11.尽可能使类原子化,每个类要具有简单明了的用途,用它来向别的类提供服务。


12.当心冗长的参数列表


13.不要一再重复,如果某段代码不断出现在许多派生类方法中,应将该段代码置于基类的某个方法中,
 然后在派生类方法中进行调用。


14.小心Switch语句或嵌套的if-else子句,可以使用继承和多态机制来替代此类代码。

15.从设计的观点来看,要找出变动的因素,并使它和不变的因素相分离

16.不要依靠子类化来扩展基础功能,如果类接口中的某个元素非常重要,那么它应该被放进基类,而不是在继承时添加。


17.更少意味着更多,从类的最小接口开始,尽量在能够解决问题的前提下让它保持简单明了,
 先别急着考虑类可能被使用的所有方式,一旦它被实际使用,你自然会明白该如何扩展接口。


18.大声朗读你的类,确保它们符合逻辑


19.在判断应该使用继承还是组合的时候,考虑一下是否需要向上转型成基类型,如果不需要请优先考虑组合。


20.采用字段来表示数值的变化,使用方法覆盖来表示行为的变化


21.小心重载,方法不应该把参数值作为执行代码的条件,这种情况下,应该编写两个或多个重载方法作为替代。

 

22.使用异常体系,最好是从Java标准异常体系中派生出具体的、适应的异常类。这样,处理异常的用户便可以
在捕获基本异常之后,编写处理程序来捕获指定类型的异常。


23.有时候仅仅使用聚合就能完成工作


24.从客户端程序员和程序维护者的角度进行思考,设计的类要尽可能易于使用。


25.当心"巨型对象综合症


26.如果你只能采用某种别扭的方式才能实现某个功能,请将这部分代码至少局限在某个类内部


27.如果你只能采用某种不可移植的方式才能实现某个功能.请将其抽象成服务,并局限在某个类内部


28.对象不应仅仅用来持有数据,它还应该具有精心定义的行为。


29.在原有类的基础上编写新类时,首先考虑用组合


30.使用继承和方法覆盖来表达行为上的差异,使用字段来表示状态的变化


31.当心"变异性",仅仅为了从继承中获得某些好处,就让其中一个类成为另一个类的子类。这就是所谓的变异性,
 人为地制造出一个其实并不存在的超类/子类关系。


32.注意继承期间的"限制",最有条理的设计将在派生类里添加新的功能,如果在继承过程中去掉旧功能,
 而没有添加新功能,这样的设计就值得怀疑。


33.使用设计模式来消除那些"纯粹的功能性代码"


34.当心"分析瘫痪"的情况,在获得所有信息之前,理解未知部分最好、最快的方式,就是尝试向前推进,
 而不是在完全理解之后才开始工作。


35.当认为自己已经获得了一个优秀的分析,设计或实现时,进行一次全面评审

 

三、实现指南

 

1.一般来说,请遵守Sun的程序编写习惯


2.无论使用何种编写风格,如果你的团队(或整个公司,那就更好了)能够加以标准化,那么的确会带来显著效果

 

3.遵守标准的大小写规范


4.不要为私有字段加上你自己的"修饰"符号


5.编写通用性的类时,请遵守标准形式,包括定义equals(),hashCode(),toString(),clone()
(实现Cloneable接口,或者选择其他对象复制策略,比如序列化),并实现Compareable和Seriliable接口。


6.对于那些"获得或改变私有字段值"的方法,请使用JavaBean的"get","set","is"等命名习惯


7.对于你编写的每一个类,请使用JUnit为它编写测试


8.有时需要通过继承才能访问基类的受保护成员,如果不需要向上转型,可以先派生一个新类以对受保护成员
进行访问,然后在需要访问那个受保护成员的所有类中,将新派生的类作为成员对象,而不要直接使用继承。

9.应避免纯粹为了提高执行速度而采用final方法


10.如果两个类在功能性上产生了关联(比如容器和迭代器),那么请试着让其中一个类成为另一个的内部类


11.在任何时候,都要警惕那些相互之间高度耦合的类,考虑一下使用内部类为程序编写和维护带来的好处,
使用内部类不能消除类之间的耦合,而是使耦合关系更明显,使用起来也更方便。


12.不要跳入过早优化的陷阱


13.尽可能缩小对象的作用域,这样对象的可见范围和生存期也都会尽可能地小


14.使用Java标准库提供的容器,优先选择ArrayList来处理顺序结构,选择HashSet来处理集合,
选择HashMap来处理关联数组,选择LinkedList来处理栈。


15.对一个健壮的程序而言,每一个部件都必须是健壮


16.宁可在编译期发生错误,也不要在执行期发生错误


17.当心冗长的方法定义


18.尽量使用"private"关键字,一旦你把库的特征(包括方法、类、字段)标记为public,你就再也不能
 去掉它们。如果你只公开必要部分,那么其余部分就可以自由改变,而不用担心影响别人,设计总是会演化,
 所以这种自由度非常重要。


19.大量使用注释,并使用javadoc的"文档注释语法"来生成程序的文档


20.避免使用"魔术数字"


21.在编写构造器时,请考虑异常,最佳情况下,构造器不会有任何抛出异常的动作。

22.在构造器中只做必要的动作,将对象设定为正确的状态


23.客户端程序员用完对象之后,如果你的类需要任何清理动作,请将此动作放到一个精心定义的方法中
 (比如命名为dispone(),这样能清楚说明其用途)。


24.finalize()方法的职责只能是为了调试的目的而检查对象的"终结条件"


25.如果对象在某个特定的范围内必须被清理(而不是作为垃圾被回收),请使用以下方法:先初始化对象,
 如果成功的话,立刻进入一个带有finally子句的try块,在finally子句中进行清理动作。


26.在继承的时候如果覆盖了finalize()方法,要记得调用super.finalize()


27.当你编写固定大小的对象容器时,它们要能够被传送给一个数组


28.优先选择接口而不是抽象类


29.为了避免十分令人泄气的经历,请检查类路径,确保所有未放进包里的类的名称互不相同


30.注意无心的重载错误,如果你在覆盖基类方法时没有正确拼写方法的名称,其后果是增加了一个新方法,
 而没有覆盖原有的方法。


31.当心过早优化,先求运行,再求快速,只有在你必须时才这么做。


32.记住,代码被阅读的时间多于它被编写的时间。清晰的设计能使程序易于理解。注释、详细说明、
 测试代码和使用范例的作用是无价的,它能够帮助你和你的后继者。

 

 

分享到:
评论

相关推荐

    网络机器人JAVA编程指南

    《网络机器人JAVA编程指南》是一本专为Java开发者设计的深度学习资料,旨在帮助读者掌握如何使用Java语言构建网络爬虫和自动化工具,也就是我们常说的“网络机器人”。网络机器人在网络数据抓取、数据分析和自动化...

    SOAP与Java编程指南

    SOAP与Java编程指南 SOAP与Java编程指南

    网络机器人Java编程指南

    总结,编写网络机器人Java编程指南涵盖了网络爬虫的基本概念、技术选型、HTTP协议、HTML解析、多线程编程、数据存储和实际项目应用等多个方面。学习这个主题,不仅可以提升编程技能,也能增强对互联网信息的获取和...

    网络机器人Java编程指南源代码

    这个"网络机器人Java编程指南源代码"很可能是为了帮助开发者理解并实践如何构建一个功能完善的网络爬虫。 首先,我们来探讨Java语言在编写网络爬虫时的角色。Java是一种多平台、面向对象的编程语言,具有强大的库...

    网络机器人Java编程指南.pdf

    网络机器人Java编程指南JAVA应用的典范,可以不是一个研究方向但是程序中有很多可以共用的方法和思想

    网络机器人java编程指南源码

    网络机器人java编程指南 Jeff Heaton著

    Google java编程指南

    这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为 它符合Google的Java编程风格。 与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, ...

    JAVA编程指南JAVA编程指南.doc

    【JAVA编程指南】 Java编程指南旨在引导初学者深入理解并掌握Java编程语言。Java自1991年由美国SUN公司推出以来,以其面向对象、分布式、多线程的特性,以及良好的可移植性和安全性,成为了全球广泛使用的编程语言...

    网络机器人Java编程指南(Programming Spider, Bot and Aggregators in Java 中文版).pdf

    该资源包含了网络上现有的两个版本,11.8M版本和14.8M版本。内容为《Programming Spider, Bot and Aggregators in Java》的中文版《 网络机器人Java编程指南》。

    Java 编程指南(一整套编写高效可靠的 Java 代码的标准、约定和指南)

    Java编程指南是一份详细指导如何编写高效、可靠Java代码的标准文档。这份指南旨在提升软件工程的安全性和可维护性,同时也注重提高开发者的生产力。通过遵循这些标准,可以在项目的早期阶段就建立高质量的代码基础,...

    网络机器人Java编程指南.

    "网络机器人Java编程指南"这本书作为入门资料,将引导你探索这个领域,理解基本概念,掌握核心技能,并最终实现自己的Java爬虫项目。在阅读过程中,结合实际编码,理论与实践相结合,将大大提升学习效果。

    Domino的Java编程指南

    在深入探讨Domino的Java编程之前,我们首先需要理解Domino邮件系统的架构及其基本组件。Domino是一个强大的企业级应用平台,主要用于构建协作应用程序,尤其是电子邮件系统。它包含三个关键部分: 1. **Domino邮件...

    Java访问Domino的编程指南.doc

    Java 访问 Domino 的编程指南 Java 访问 Domino 的编程指南是指在 Java 语言中如何访问和操作 Domino 对象的编程指南。Domino 是一种商业软件,它提供了强大的信息管理和collaboration 功能。Java 是一种广泛使用的...

    网络机器人 java编程指南

    网络机器人 java编程指南 用java实现网络机器人、自动执行复杂的Web交互

    Java编程指南.ppt

    Java编程指南旨在帮助开发者熟练掌握Java这门广泛使用的编程语言。Java起源于1991年,由美国SUN公司创建,它具有面向对象、分布式、多线程等特性,并因其可移植性和高安全性在网络开发领域占据重要地位。随着版本的...

    MQ java 编程指南

    《MQ Java编程指南》是一本面向Java开发者的深入解析消息队列(MQ)技术的专业书籍。消息队列作为分布式系统中的重要组件,用于解耦应用、实现异步处理以及提高系统的可扩展性。本书旨在帮助Java开发者熟练掌握如何...

Global site tag (gtag.js) - Google Analytics