论坛首页 入门技术论坛

java类的设计技巧

浏览 9825 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-09-27   最后修改:2010-09-28
1)一定将数据设计为私有。
最重要的是: 绝对不要破坏封装性。在有的时候,需要编写一个访问器方法或更改器方法,但是最好还是保持实例域的私有性。很多惨痛的经验告诉我们,数据的表示形式很可能会改变,但他们的使用方式却不会经常发生变化。当数据保持私有时,他们的表示形式的变化不会对类的使用者产生影响,即使出现bug也易于检测。
2)一定要对数据初始化。
java不对局部变量进行初始化,但是会对对象的实例域进行初始化。最好不要依赖于系统的默认值,而是应该显式地初始化所有的数据,具体的初始化方式可以是提供默认值,也可以是在所有构造器中设置默认值。
3)不要在类中使用过多的基本数据类型。

就是说,用其他的类代替多个相关的基本数据类型的使用。这样会使类更加易于理解且易于修改
4)不是所有的域都需要独立的域访问器和域更改器。
或许,需要获得或设置雇员的薪金。而一旦构造了雇员对象,就应该禁止雇佣日期,并且在对象中,常常包含一些不希望别人获得或设置的实例域,

 5)使用标准格式进行类的定义
一定采用下面的顺序书写类的内容
 公有访问特性部分
包作用域访问特性部分
私有访问特性部分
在每一部分中,应该按照下列顺序列出
实例方法
静态方法
实例域
静态域 
6)将职责过多的类进行分解
 
7)类名和方法名要能够体现他们的职责
 

 

 

深圳人才网 深圳招聘网 深圳人才招聘网 深圳人才大市场 

企业、个人免费注册,获取想要的 深圳 软件工程师招聘信息 月薪最低3000-8000,更有高端猎头职位 

www.szrcwz.com                                                                                                                                           

                  Google 提供的广告

   发表时间:2010-09-27  
很好。不过,对于:
引用

5)使用标准格式进行类的定义
一定采用下面的顺序书写类的内容
公有访问特性部分
包作用域访问特性部分
私有访问特性部分
在每一部分中,应该按照下列顺序列出
实例方法
静态方法
实例域
静态域 

要加一个:
final static 修饰的静态域,放在最上面!
0 请登录后投票
   发表时间:2010-09-27  
1)一定将数据设计为私有。


这个肯定是不合理的

如果处处都合理的话,java设计之初就不会让public修饰类的属性了
1 请登录后投票
   发表时间:2010-09-27  
freish 写道
1)一定将数据设计为私有。


这个肯定是不合理的

如果处处都合理的话,java设计之初就不会让public修饰类的属性了

+1
0 请登录后投票
   发表时间:2010-09-27  
freish 写道
1)一定将数据设计为私有。


这个肯定是不合理的

如果处处都合理的话,java设计之初就不会让public修饰类的属性了

同意,就我自己来说,对于私有的内部类,我基本使用public字段代替私有字段加getter和setter
0 请登录后投票
   发表时间:2010-09-27  
youanyyou 写道
1)一定将数据设计为私有。
最重要的是: 绝对不要破坏封装性。在有的时候,需要编写一个访问器方法或更改器方法,但是最好还是保持实例域的私有性。很多惨痛的经验告诉我们,数据的表示形式很可能会改变,但他们的使用方式却不会经常发生变化。当数据保持私有时,他们的表示形式的变化不会对类的使用者产生影响,即使出现bug也易于检测。
                  


实际上,我们产品里有些地方是不这样的,并且不可以这样

0 请登录后投票
   发表时间:2010-09-27  
很熟悉!好像是在java code里!看过!
0 请登录后投票
   发表时间:2010-09-28  
asme2u 写道
freish 写道
1)一定将数据设计为私有。


这个肯定是不合理的

如果处处都合理的话,java设计之初就不会让public修饰类的属性了

同意,就我自己来说,对于私有的内部类,我基本使用public字段代替私有字段加getter和setter


就是啊,java自己的源码里都有用到不少的public字段
0 请登录后投票
   发表时间:2010-09-28  
纸上得来终觉浅..
0 请登录后投票
   发表时间:2010-09-28  
这是哪本书上写着的来着?
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics