1. 一定要让数据私有
这是最为首要的一点,否则,就会破坏封装性.虽然让数据私有,可能需要编写访问方法或更改方法,但保持实例字段私有具有更多的好处.很多惨痛的经验告诉人们,数据表示方式很可能会发生改变,但对其的使用方式却很少变动.让数据保持私有的话,改变其表示方法就不会影响该类的使用者,bug也就很容易发现.
2. 一定要初始化数据
Java不会为你初始化局部变量,但它会初始化对象中的实例字段.不过, 绝不要依赖于那些默认值,而应该显示地初始化变量.手段可以是提供默认值,也可以是在所有构造器中设置默认值.
3. 不要在类中使用过多基本类型
这句话指的是应用期货类代替多个相关的基本类型字段,这样使类更易理解并且更容易修改.举例来说,可以用一个名为Address的新类替Customer类中下列实例字段:
private String street;
private String city;
private String state;
private int zip;
通过这种方式,可以容易地处理地址上的变化,比如增加对国际地址的处理.
4. 并非所有字段都需独自的字段访问方法和更改方法.
你可能需要获取和设置员工的薪金.但显然,对象构造之后,你就不会改变其雇佣日期.而且,对象中常常包含不希望其他人存取或设置的实例字段,比如,Address类中存放州缩写的数组.
5. 为类定义使用标准格式
我们总以下面的顺序列出类的内容:
i. 公有特性
ii. 包作用域特性
iii. 私有特性
而在每一部份中,我们列出顺序是:
i. 实例方法
ii. 静态方法
iii. 实例方法
iv. 表态字段
毕竟,类的使用者对公开接口比对私有实现的细节更感兴趣,对方法比对数据更感兴趣.
不过,究竟哪种风格最好并没有统一的意见.Sun公司对Java语言的编码风格提倡先列出字段,然后再列出方法.无论具体使用哪种风格,最重要的一点就是一致.
6. 分解职责太多的类
这句话显然有些含糊不清:究竟多少处是”太多”,相信每个人都有不同的看法.在实际中,如果显然可以把一个复杂的类分成两个概念上更为简单的类的话,那么一般就把它分解.(但不能走入极端:如果设计了10个类,而每个类只有一个方法,显然也并不合理.)
下面给出一个设计很糟糕的例子:
class CardDeck //糟糕的设计
{
public CardDeck(){…..}
public void shuffle(){….}
public int getTopValue(){….}
public int getTopSuit(){…..}
public void draw(){….}
private int [] value;
private int [] suit;
}
这个类实际上实现了两个单独的概念:一副牌(含有shuffle和draw方法)、一张牌(含有检查牌值和花色的方法)。另外,引入Card类,用以表示单张纸牌类更有意义。这样应有了两个类,第个类实现自己的职责。
class CardDeck
{
public CardDeck(){…..}
public void shuffle(){….}
public Card getTop(){….}
public void draw(){….}
private Card[] cards;
}
class Card
{
public Card(int aValue,int aSuit){…..}
public int getValue(){….}
public int getSuit(){….}
private int value;
private int suit;
}
7. 让类和方法的名字反映它们的职责
如同变量名应该反映它们表示的什么一样,类名和方法名也应如此。(当然,标准库中也存在不明确的例子,例如Date类用来描述的是时间。)
按照惯例,一般是用名词(Order)、前面有开窍词修饰的名词(RushOrder)、前面有动名词修饰的名词(BillingAddress)为类命名。而对于方法,访问方法以小写get开始(getSalary),更改方法以小写set开始(setSalary).
分享到:
相关推荐
本资料包是关于FPGA设计方法与技巧的综合资源,涵盖了从基础到高级的各种主题,对于学习和提升FPGA开发技能非常有帮助。 首先,"FPGA开发全攻略(上册)"和"FPGA开发全攻略(下册)"这两本书籍通常会系统地介绍FPGA...
4. 类设计技巧 - 使用合理的命名规范:类名应清晰地反映其功能,避免使用模糊或不明确的名称。 - 限制类的大小:一个类不应该过于庞大,应保持高内聚,低耦合,每个类只做一件事情。 - 避免过深的继承层次:过多...
### 数据库设计技巧经验浅析 #### 一、引言 数据库设计是软件开发中至关重要的环节,良好的数据库设计不仅能确保数据的有效存储与快速检索,还能为后续的应用扩展打下坚实的基础。根据“3分技术,7分经验”的原则...
在IT行业中,软件设计思想和C#设计技巧是开发者必须掌握的核心能力。这两本书籍的目的是帮助读者深入理解编程背后的逻辑,提升代码质量和可维护性。让我们分别探讨这两个主题。 首先,软件设计思想,它是软件工程的...
《CC++语言程序设计技巧》是一本专注于C/C++编程语言的深度指南,它涵盖了从基本语法到高级特性的广泛内容。这本书对于编程新手来说是一个理想的起点,它以易懂的方式解释了C/C++的基础知识,包括变量、数据类型、...
报告应清晰展示学生的思考过程和解决问题的能力,这也是衡量其程序设计技巧的重要依据。通过这样的综合设计,学生不仅能提升编程技能,还能培养良好的团队合作精神和项目管理能力,为未来的职业生涯打下坚实基础。
本文将详细介绍9种实用的CSS设计技巧,帮助提升网页的视觉效果和用户体验。 1. 取消下划线:在现代网页设计中,为了使链接看起来更简洁,常常会去除文本链接的下划线。这可以通过在CSS中设置`text-decoration`属性...
根据给定的信息,“算法设计技巧与分析”是一本关于算法设计的教材,作者是(沙特)阿苏外耶。尽管文档内容中包含了OCR扫描结果的一些文字错误,但我们可以基于这些信息提炼出与算法设计技巧和分析相关的知识点。 ...
《Java程序设计技巧1001例》是一个深入学习Java编程的资源集合,包含了大量实例,旨在帮助开发者提升技能和理解Java语言的核心概念。通过这1001个实例,我们可以系统地掌握Java语言的各个方面,包括基础语法、面向...
"VC界面类编程技巧大全"是一份宝贵的资源,包含了135种不同的编程技巧,旨在帮助开发者创造出更具吸引力和功能性的用户界面。这些技巧涵盖了从基本的控件使用到复杂的特效实现,对于提升VC++应用程序的视觉效果和...
本资源“Java程序设计技巧与开发实例”深入探讨了Java编程中的关键技术和实用策略,旨在帮助开发者提升编程效率和代码质量。 首先,Java的设计原则包括“Write Once, Run Anywhere”(一次编写,到处运行),这得益...
在《JAVA程序设计技巧1001例》中,我们深入探讨了Java编程的各种实用技巧和最佳实践,这些实例旨在帮助开发者提升技能,优化代码,提高程序效率。本书覆盖了从基础到高级的广泛主题,适合各个层次的Java开发者学习。...
在"Java程序设计技巧1001个实例"中,我们可以深入学习如何利用Java进行高效的程序开发。这个资料集涵盖了从基础到高级的Java编程技巧,通过1001个实例,帮助开发者巩固和提升技能。 1. **基础概念**:Java的基础...
C# 设计技巧总结 C# 设计技巧总结是一本系统化的技术指南,涵盖了 C# 语言的主要属性、方法、事件和控件设计等方面的知识点。本书通过实例演示和操作步骤,帮助读者快速掌握 C# 语言的设计技巧。 主要属性 在 C# ...
《最新VC++绘图程序设计技巧与实例教程》是一本专为VC++爱好者精心编写的教程,它深入浅出地介绍了使用VC++进行图形绘制的各种技术,并提供了丰富的实例供学习者实践。通过这本书,读者不仅可以掌握基本的绘图概念,...
《高级C++语言程序设计技巧与实例》深入探讨了C++的高级概念,旨在帮助开发者充分挖掘语言潜能,编写出更高效、可维护性更强的代码。本文将详细讲解其中涵盖的重要知识点。 1. **模板(Templates)**:C++中的模板是...
C++程序设计技巧 一些常用的VC程序设计技巧! 2000.11.4 混用两大 Application Framework VCL & MFC 使用WinInet类进行Internet编程 在C++ Builder3下实现程序自动运行的方法 让应用程序禁止Windows屏幕保护 ...
该书详细介绍了数字芯片前端设计的方法、技巧及实践经验,涵盖了芯片设计的背景知识、设计流程和工具、架构设计、RTL级设计与仿真、逻辑综合及相关技术,以及芯片设计项目管理等多个方面。 书中首先向读者介绍了...