`
youanyyou
  • 浏览: 191887 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java类的设计技巧

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

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

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

 

 

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

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

www.szrcwz.com                                                                                                                                           

                  Google 提供的广告

分享到:
评论
20 楼 Leon.Wood 2010-09-29  
7454103 写道
     太多的 “一定”!
     实际作用:一般!
      鉴定完毕! 欢迎拍砖!

不由自主的顶一个
19 楼 月落码农 2010-09-28  
你这是在抄书吧?
18 楼 xiangdefei 2010-09-28  
think in java or eff java 这两本其中一本书中的。。
17 楼 lewisw 2010-09-28  
<div class="quote_title">youanyyou 写道</div>
<div class="quote_div">
<div><span style="color: #993300;">2)一定要对数据初始化。 </span></div>
<div><span style="color: #993300;">java不对局部变量进行初始化,但是会对对象的实例域进行初始化。最好不要依赖于系统的默认值,而是应该显式地初始化所有的数据,具体的初始化方式可以是提供默认值,也可以是在所有构造器中设置默认值。</span></div>
<div>
<span><span> </span></span>
</div>
</div>
<div><br></div>
<div><br></div>
<div>这一点个人认为没有必要。并且就我接触的,包括大部分开源项目源码里和呆过的大部分公司的项目里,都没有对实例域进行没必要的初始化。 尤其在构造器里去写十几个变量等于null或0或false的,看起来都头晕。 局部变量能不初始化就不初始化,比如:</div>
<div><br></div>
<div>
<div class="quote_div">        User user = null; // or new User();<br><br>        if (a == b) {<br><span style="white-space: pre;"> </span>user = userDao.getUser();<br>        } else {<br><span style="white-space: pre;"> </span>user = sessionUtil.getUser();<br>        }<br>
</div>
</div>
<div> </div>
<div>看到太多的类似代码, IDE(intellij idea)马上报黄色警告。</div>
<div><br></div>
16 楼 7454103 2010-09-28  
     太多的 “一定”!
     实际作用:一般!
      鉴定完毕! 欢迎拍砖!
15 楼 fool_leave 2010-09-28  
asme2u 写道
freish 写道
1)一定将数据设计为私有。


这个肯定是不合理的

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

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


将get和set去掉,用public变量取代,实际上是有一个问题存在的。问题不是存在于开发过程中,而是程序的适应性。考虑一下,如果你写的组件有100个子程序调用,使用同一个变量。
例如:
你的Student类有一个String studentCardID;
getStudentCardID方法有100个地方被调用,而且程序已经上线n久了。
现在学校规定,在显示的studentCardID前必须加上"#"标记。你需要做的其实很简单,修改一个方法。
public String getStudentCardID(){
   return "#"+studentCardID;
}
这样就会省去修改整个系统的风险。而如果不用get方法来实现,则很可能面临修改整个系统。

当然,上面的例子对于程序员来说不是很爽,谁也不希望get方法里还要对数据处理,这样的代码不严谨。但在现实世界里,成本往往说了算。

14 楼 aoliwen521 2010-09-28  
play framework框架给点文档,其模型的部分属性就直接使用的public修饰。
13 楼 darwintest 2010-09-28  
说的很基本,不错
12 楼 aimicheng 2010-09-28  
肤浅的技巧
11 楼 hardPass 2010-09-28  
Freedom!
10 楼 shi5228313 2010-09-28  
final static 写在最上面是checkStykle规范吧啊。。这些都好正常的,没必要说吧?
9 楼 clarkamx 2010-09-28  
这是哪本书上写着的来着?
8 楼 zzknight 2010-09-28  
纸上得来终觉浅..
7 楼 elementstorm 2010-09-28  
asme2u 写道
freish 写道
1)一定将数据设计为私有。


这个肯定是不合理的

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

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


就是啊,java自己的源码里都有用到不少的public字段
6 楼 Javakeith 2010-09-27  
很熟悉!好像是在java code里!看过!
5 楼 Leon.Wood 2010-09-27  
<div class="quote_title">youanyyou 写道</div>
<div class="quote_div">
<div>
<span style="color: #993300;">1)一定将数据设计为私有。<br>最重要的是: 绝对不要破坏封装性。在有的时候,需要编写一个访问器方法或更改器方法,但是最好还是保持实例域的私有性。很多惨痛的经验告诉我们,数据的表示形式很可能会改变,但他们的使用方式却不会经常发生变化。当数据保持私有时,他们的表示形式的变化不会对类的使用者产生影响,即使出现bug也易于检测。</span>                  <a href="http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-4914818119943102&amp;output=html&amp;h=90&amp;slotname=6429866262&amp;w=728&amp;lmt=1285571276&amp;flash=10.1.53.64&amp;url=http%3A%2F%2Fyouanyyou.iteye.com%2Fblog%2F772824&amp;dt=1285571276500&amp;shv=r20100909&amp;jsv=r20100917&amp;correlator=1285571276500&amp;frm=0&amp;adk=1965243879&amp;ga_vid=1813892377.1285571277&amp;ga_sid=1285571277&amp;ga_hid=1180002008&amp;ga_fc=0&amp;u_tz=480&amp;u_his=57&amp;u_java=1&amp;u_h=768&amp;u_w=1024&amp;u_ah=738&amp;u_aw=1024&amp;u_cd=32&amp;u_nplug=0&amp;u_nmime=0&amp;biw=1007&amp;bih=611&amp;ref=http%3A%2F%2Fyouanyyou.iteye.com%2Fadmin%2Fblogs%2F772824&amp;fu=0&amp;ifi=1&amp;dtd=46&amp;xpc=e2yT8FYiw2&amp;p=http%3A//youanyyou.iteye.com" target="_blank"></a>
</div>
</div>
<p><br>实际上,我们产品里有些地方是不这样的,并且不可以这样</p>
4 楼 asme2u 2010-09-27  
freish 写道
1)一定将数据设计为私有。


这个肯定是不合理的

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

同意,就我自己来说,对于私有的内部类,我基本使用public字段代替私有字段加getter和setter
3 楼 selvenfx2009 2010-09-27  
freish 写道
1)一定将数据设计为私有。


这个肯定是不合理的

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

+1
2 楼 freish 2010-09-27  
1)一定将数据设计为私有。


这个肯定是不合理的

如果处处都合理的话,java设计之初就不会让public修饰类的属性了
1 楼 anhaoy 2010-09-27  
很好。不过,对于:
引用

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

要加一个:
final static 修饰的静态域,放在最上面!

相关推荐

Global site tag (gtag.js) - Google Analytics