动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.如何在J2ME的低级界面中轻松实现.
.Spring AOP之Hello World.
.PowerFolder 工作流服务器版本0..
.学编程的人不能不看的好文章(3).
.在EJB环境中实现“观察者”模式.
.使用SimpleDateFormat必须注意的.
.struts1.1中的异常应用实践.
.抢先体验“野马”J2SE6.0.
.JAVA中图片文件的缩放.
.对比C++和Java.
.在移动设备上用J2ME实现动画.
.Java中的两个特殊变量this和super.
.利用Java语言实现数据报编程之单.
.Struts中文帮助.
.Java Bean 生成器.
.布署和使用 Enterprise JavaBean.
.Java数据流——企业级数据流分析.
.Java核心代码例程之:HelloWorld.
.关于 MVC 模式中的通知机制.
.改善编码风格(超级简单实用).

诊断Java代码:设计轻松的代码维护

发表日期:2008-1-5 |


  有效调试源自良好的编程。设计易于维护的程序是程序员面临的最困难挑战之一,其部分原因在于程序通常并不是由那些编写代码的程序员维护的。
为了有效维护这样的程序,新程序员必须能够快速了解程序的工作原理,假如程序员能够单独理解整个程序中各个小部分,那么就可以轻易地了解程序的工作原理。

  通过讨论可变性、可译码性、私有方法、最终方法、最终类、本地代码、单元测试以及重构问题,我们将简述编写程序的一些方法,以帮助使程序更易理解和维护。

  可变性和可译码性

  首先讨论可变性问题。假如在一个程序的计算期间,其每一部分所处理的数据都没有被该程序的其它、远程部分更改,那么就很轻易单独理解该程序的各个部分。

  太多信息

  例如,请考虑一个使用容器类实例的程序,可以修改其中的成分链接。每次将容器从程序某一部分上的方法传递到该程序其它部分的方法,以及每次调用 new 表达式(其中容器被作为参数传递)时,容器就可能脱离调用方法的控制发生改变。

  在我们首先理解调用方法调用的每个方法如何修改容器之前,我们不能真正确保我们理解了调用方法,由此我们诊断错误的能力也就更差。假如这些被调用的每个方法都依次调用其它修改方法,那么维护程序员为了理解单个方法必须阅读的代码总量会迅速增加,多得无法控制。

  由于这个原因,对可变容器和不可变容器使用不同类会非常有利。在不可变版本中,容器的字段可以标记成 final。

  求助于函数样式

  相对于修改旧数据,为构造新数据而进行代码编写称为函数样式,因为程序的方法与数学函数相似,其行为是根据每个输入所返回的输出来单独描述的。

  函数样式经常被忽略的优点是相当轻易单独理解程序的个别组件。假如方法所操纵的数据决不会被其主体中执行的任何操作改变,那么程序员要理解该方法必须做的就是理解那些操作返回的结果。将之与前面的一个方法调用几个其它方法的方案相对照,那个方案中的其它几个方法都修改这一方法所操作的数据结构。

  Java 语言的一个相当好的特性是它答应我们使用 final 要害字(作为类型检查器的伪指令)来声明何时我们要使某个数据成为不可变。

  使用 final 要害字来避免变化是“钉住”类的方法行为的一个好方法。每次修改字段时,都有可能改变引用该字段的方法的行为。另外,将字段标记为 final 让阅读程序的其他程序员立即知道:不管整个程序有多大,决不要修改该字段。例如,请考虑下列表示不可变列表的类层次结构。
  清单 1. 表示不可变列表的类层次结构

  abstract class List {...}
  class Empty extends List {...}
  class Cons extends List {
  private final Object first;
  private final List rest;
  }

  这些类中的所有字段都被标记成 final。要确保这些类的实例不可变,这样做够了吗?不太够。当然,即使字段被标记成 final,该字段本身的组件可能不是 final,记住这一点很重要。当那些组件更改时,引用那些组件的程序的任何部分可能会被修改,而不管字段本身是否改变。在上面的示例中,尽管列表的组成元素不能被修改,但是我们必须检查那些元素本身没有包含可能被修改的非最终字段。

  在这种情形中,尽管列表可能包含可变元素,但是我们可以看到存储在给定列表中的元素序列由于以下原因而不可变:Empty 列表(即,长度为零的列表)的实例根本不包含任何元素;因此不能修改它们。Cons(非空列表)实例包含两个字段,都是 final。第一个字段包含该列表的第一个元素,它不能被修改;第二个字段包含一个列表,其中包含所有剩余元素。假如这个列表的内容不可变,那么该包含列表也不可变。

  但是包含在这第二个字段中的列表比包含列表的长度小一,所以假如我们知道长度为 n 的所有列表都不可变,那么我们就知道长度为 n + 1 的列表也不可变。因为我们已经知道长度为零的列表不可变,所以我们也知道长度为 1、2、3 等的列表同样不可变。

上一篇:Java让Web显示数学特殊符号 人气:752
下一篇:Java编码规范 人气:494
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-15 自由岭峰行业专用留言系统 v1.87
2008-10-15 Tikiwiki v1.9.11 多国语言版
2008-10-15 Roclog v3.1.6.28
2008-10-15 谷秋精品课程开发系统 v2.1
2008-10-15 pageadmin企业网站管理系统 v2.1
2008-10-15 晴天免费电影系统完整版(带迅雷采
2008-10-15 PHP-B2B v2.4.0 UTF8 Beta版
2008-10-15 云峰多用户网络进销存B/S v2.1
2008-10-15 Qspace v1.1.1 Access
2008-10-16 Microsoft Office 2003 Service
2008-10-11 联系人分组工具 v1.1 中文破解版
2008-10-11 FaceMelter变脸 v2.0 汉化破解版
2008-10-11 PathTracker道路跟踪仪 v1.2 破解
2008-10-11 Rooms手机聊天室 v0.6.7 破解版
2008-10-11 RemoteDesktop远程桌面 v1.0 破解
2008-10-11 ProRemote远程调音台 v1.0.1 破解
2008-10-11 PicShare照片共享 v1.0.0 破解版
2008-10-11 Photogene照片编辑器 v1.5 汉化破
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成