`
沈冠军
  • 浏览: 110070 次
  • 性别: Icon_minigender_1
  • 来自: 玉林
社区版块
存档分类
最新评论

Java程序如何优化??

阅读更多

程序优化的方法有很多,在这里只介绍几个常用的方法。在说程序优化之前,我们得了解一些程序开放过程中的问题,初学者都知道,Java程序中有类、接口、方法、属性等,当你编程一个java程序时,总是在不停的调用方法和属性,从这个类调用到那么类,又从那个类调用到这个类,调得自己都头晕了,如果你没有写注解的话,我想过几天当你再次看代码时,连你自己都看不懂了,代码如果只有几十行还好,但是如果是上千行乃至上万呢,怎么办?呵呵,这个我是深有体会的,即使你可以看得清楚,但是自己做出来的软件不是给自己用的,是给客户用的,假如你卖出去一个软件,哪天出问题了,人家还得非找到你才能解决咧,如果我们写出来的软件能够对所有程序员来说都可以很轻易看懂的话,那么你的这个软件就是比较成功的,说了这么多,无非就是想说明在编写程序的时候,要尽量怀着人性化,可拓展化的思想去编程。

程序的优化最基本的一点就是命名要标准,在java编程中,经常采用的是驼峰命名法,什么?你不知道这个?好吧,在这里简单的说一下,总的规则是用相应的英文单词来表示,尽量做到别人一看就知道这个是干嘛用的,但是要尽量不要写成和系统自带的名字类似或者一样,这样很容易混淆;首先是类和接口的命名首字母大写,如果是由多个单词组合的则每个字母的首字母都大写,如定义一个聊天客户端类:ChatClient;而方法的命名则是第一个单词首字母小写,如定义一个处理聊天信息的方法:processChat();属性的命名则是:变量的都是用相应的单词来表示,小写,如定义一个计数变量:int count=0;如果是常量的话则全部大写,如果是两个单词,则用下划线分开,如:final BUTTON_LEFT;好了基本的命名方法都知道了,只要在平时的时候注意一点应该没有什么大的问题。

我觉得有句话说得很对“一个好的软件不是写出来的,而是调试出来的”,也就是说在编写程序时要边写边打印出来调试的信息,不要到整个程序都写完后才来运行,那样的话,如果出错了,是很难找到错误所在的。但是试试想想看,如果一个程序有很多的System.out.println(“”);这些调试语句的话,看起来不爽,而且本来没有错的,但是打印调试信息时却出错了,比如:if(data==null){System.out.println(data.getData());},看出来有什么错没有,呵呵,明明data已经为null了,但是还使用这个data.getData();这肯定会报空指针异常的啦。为了解决这种问题,就引用了一个日志模块的概念,什么是日志模块呢?其实日志模块就是单独的写一个类用来处理消息。下面给个设计示例:

//日志模块的类
public class LogTools {
	// 判断是否打印信息的标志
	private static boolean isDebug = false;

	// 处理一般信息的方法
	public static void INFO(Class cs, Object msg) {
		if (!isDebug) {
			// 如果不打印消息,则返回
			return;
		} else {
			// 获得系统的时间
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			// 将时间格式话
			String time = sdf.format(new Date());
			// 打印消息
			System.out.println("消息类型:INFO 日期:" + time + "类名:"
					+ cs.getSimpleName() + " 内容:" + msg);
		}
	}

	// 处理异常的方法
	public static void Exception(Class cs, Object msg) {
		if (!isDebug) {
			return;
		} else {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			String time = sdf.format(new Date());
			System.out.println("消息类型:ERROR 日期:" + time + "类名:"
					+ cs.getSimpleName() + " 内容:" + msg);
		}
	}

}

 

当然这只是一个简单的例子,在这个类中,如果你不想打印,想保存在文件里,这也行,只要写个方法来实现就可以了,日志模块的好处就是可以对不同的信息集中来处理,如果你想要功能更多的话,可以下载logo4这个包,调用即可。

下面让大家看两个结构图:



                                   图(1)                                                                 图(2)

 

呵呵,如果问大家哪种设计模式更好,我想大家肯定会说是图(2)的好,这是为什么呢?这就要涉及程序优化的另外中方法,低耦合,高内聚的设计思想,何谓低耦合和高内聚呢?简单的说,所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则,一个完整的系统,模块与模块之间,尽可能的使其独立存在,也就是说,让每个模块,尽可能的独立完成某个特定的子功能。就像图(1)所示,这里面的各个类之间呈网状结构,他们直接的耦合是十分高的,这样的程序是很脆弱的,如果要改变其中的一个类,则其他的几个也必须该,这对程序的拓展带来了很大的局限性,而图(2)则是呈星状机构,这中正是“低耦合,高内聚”的思想,这意味着,如果我们想改变其中的某个类,对其他的类的影响不是很大,也容易对程序进行拓展,举几个常用的设计模式,比如说事件监听模式,数据与界面分离模式等等,这些都是比较好的设计模式,只有自己在写程序的过程中慢慢的体会才能掌握到良好的设计模式。

 

  • 大小: 19.1 KB
  • 大小: 10.3 KB
分享到:
评论
4 楼 yzz9i 2011-12-12  
貌似.茂盛
3 楼 贾懂凯 2010-10-06  
我发现了对我有价值的一句话:logo4功能很强
冠军可以写的更有条理些就更好了
2 楼 freewxy 2010-10-06  
“什么?你不知道这个?”这句话怎么这么耳熟呢?你原创?
1 楼 freewxy 2010-10-06  
“ 此文纯属原创,如有雷同,纯属你抄我”强大啊,其实大家都抄袭习惯了

相关推荐

Global site tag (gtag.js) - Google Analytics