社区应用 最新帖子 精华区 社区服务 会员列表 统计排行 社区论坛任务 迷你宠物
  • 3786阅读
  • 2回复

JAVA使用魔法数值

级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
说明:所谓魔法数值,是指在代码中直接出现的数值,只有在这个数值记述的那部分代码中才能明确了解其含义。 {WN(&eax  
{xcZ*m!B  
  魔法数值使代码的可读性大大下降。而且,如果同样的数值多次出现时,到底这些数值是不是带有同样的含义呢,谁也说不清楚。另一方面,如果本来应该使用相同数值的地方,一旦用错了,也很难发现。因此,需要注意以下几点,极力避免使用魔法数值。 wy1X\PJjH  
4tA_YIv  
  ① 不使用魔法数值,代之以有名字的Static final或者enum值 Die-@z|Y  
$ls[|N:y0l  
  在Java语言中,对有名字的值的定义,可以使用用Static final或者enum来声明的值 C@y8.#l  
AS!6XT  
  注意(命名方法):在取名时一定要注意增加名字的信息量。比如,为16命名为SIXTEEN是没有意义的。 5,"l0nrk  
wVs.Vcwr  
  如果16表示的是价格表的一个元素,则应该命名为PRICE_TABLE_MAX。关于命名规则,还要参照本小册子的第6条。 >r5P3G1  
!%mAh81{&/  
  ② 原则上,数值就是魔法数值 $Byj}^;1  
iSRpfU  
  但是,0,作为数组的最小下标是经常使用的。 qKS;x@  
C z#Z<:  
  例:for( int i = 0; I < table.leERRORth(); i++ ) }`VDD?M  
<c[U#KrvJ  
  读到这里,读者都会认为这里的0是数组的最小下标,所以在这里不认为0是魔法数值。 wHjLd$ +o  
FwKj+f"  
  另外,0经常被作为变量初始化的缺省值,这时候一般也不认为0是魔法数值。 vZ7gS  
*TW=/+j  
  通过使用有名字的值,一方面可以提高代码的可读性,另一方面,也可以把变更的地方局部化,从而提高可维护性。 G>qZxy`c  
}'"Gr%jf(  
  例子: n#Dv2 E=6  
 n]W_e  
  魔法数字的例子 }n,Zl>T9  
T<yP* b2E  
  int priceTable[] = new int[16]; //ERROR:这个16究竟有何含义呢? UUo;`rkT  
>M!xiQX  
  使用了带名字的数值的例子 jo +w>  
MjfFf} @  
  static final int PRICE_TABLE_MAX = 16; //OK:带名字 %b.UPS@I  
W|k0R4K]]  
  int price Table[] = new int [PRICE_TABLE_MAX]; //OK:名字的含义是很清楚的 wu<])&F  
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
发帖
27
铜板
29
人品值
21
贡献值
0
交易币
0
好评度
27
信誉值
0
金币
0
所在楼道
学一楼
只看该作者 1 发表于: 2010-10-27
J2EE初学者需要注意的问题
E{xVc;t  
*MN HT`Y^o  
J2EE初学者需要注意的问题 M_ 0zC1  
  体系结构简单介绍 M/PFPJ >`  
  一、J2EE提出的背景  c9''  
  1、 企业级应用框架的需求 O/%< }3Sq  
j;yf8Nf  
  在许多企业级应用中,例如数据库连接、邮件服务、事务处理等都是一些通用企业需求模块,这些模块如果每次再开发中都由开发人员来完成的话,将会造成开发周期长和代码可靠性差等问题。于是许多大公司开发了自己的通用模块服务。这些服务性的软件系列统称为中间件。 fHrt+_Zn|  
  2、 为了通用必须要提出规范,不然无法达到通用 :Br5a34q  
  在上面的需求基础之上,许多公司都开发了自己的中间件,但其与用户的沟通都各有不同,从而导致用户无法将各个公司不同的中间件组装在一块为自己服务。从而产生瓶颈。于是提出标准的概念。其实J2EE就是基于JAVA技术的一系列标准。 ;P&y,:<m:  
  注:中间件的解释 中间件处在操作系统和更高一级应用程序之间。它充当的功能是:将应用程序运行环境与操作系统隔离,从而实现应用程序开发者不必为更多系统问题忧虑,而直接关注该应用程序在解决问题上的能力 。我们后面说到的容器的概念就是中间件的一种。 /z7VNkD  
  二、相关名词解释 u/b7Z`yX}  
  容器:充当中间件的角色 o{v&.z  
  WEB容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接与容器中的环境变量接口交互,不必关注其它系统问题。主要由WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。 S,fCV~Cio?  
  容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。 5\mTr)\R  
  WEB容器和EJB容器在原理上是大体相同的,更多的区别是被隔离的外界环境。WEB容器更多的是跟基于HTTP的请求打交道。而EJB容器不是。它是更多的跟数据库、其它服务打交道。但他们都是把与外界的交互实现从而减轻应用程序的负担。例如SERVLET不用关心HTTP的细节,直接引用环境变量session,request,response就行、EJB不用关心数据库连接速度、各种事务控制,直接由容器来完成。 JN/UUfj  
  RMI/IIOP:远程方法调用internet对象请求中介协议,他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI是JAVA特有的。 ukgAI<O%  
  JNDI:JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。 D8{D [fJ;  
  JMS:JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。 75!9FqMZ}  
  JAVAMAIL:JAVA邮件服务。提供邮件的存储、传输功能。他是编程中实现邮件功能的核心。相当MS中的EXCHANGE开发包。 S&O3HC  
  JTA:JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。 foF19_2 ,  
  JAF:JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。 >!e<}84b  
  EAI:企业应用集成。是一种概念,从而牵涉到好多技术。J2EE技术是一种很好的集成实现。 hjZ}C+=O  
  三、J2EE的优越性 d|9b~_::V  
  1、 基于JAVA 技术,平台无关性表现突出 %OR|^M  
  2、 开放的标准,许多大型公司已经实现了对该规范支持的应用服务器。如BEA,IBM,ORACLE等。 %U7.7dSOI;  
  3、 提供相当专业的通用软件服务。 MmPU7Nl%X  
  4、 提供了一个优秀的企业级应用程序框架,对快速高质量开发打下基础 I-D^>\k+  
  四、现状 #BVtL :x@  
  J2EE是由SUN 公司开发的一套企业级应用规范。现在最高版本是1.6。支持J2EE的应用服务器有IBM WEBSPHERE APPLICATION SERVER,BEA WEBLOGIC SERVER,JBOSS,ORACLE APPLICATION SERVER,SUN ONE APPLICATION SERVER 等。 O-vGyNxP|  
更多免费技术文章和技术讲座视频请参考www.ascenttech.cn aIy*pmpD=  
发帖
2
铜板
-7
人品值
-9
贡献值
0
交易币
0
好评度
2
信誉值
0
金币
0
所在楼道
学一楼
只看该作者 2 发表于: 2010-10-27
学习学习
描述
快速回复

您目前还是游客,请 登录注册
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
认证码:
验证问题:
3+5=?,请输入中文答案:八 正确答案:八