当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

良好的程序设计——避免属性信息冗余

发表于: 2012-11-01   作者:ciaos   来源:转载   浏览次数:
摘要: 设计数据结构的时候常常为了性能考虑,很容易引入一些冗余的属性,不是说多余的属性不好,我们应该按照一个正常的思维方法去设计数据结构。 看看一个记录路线的数据结构的例子,一条路线有起点,终点以及距离三个基本的信息,第一种设计方式如下,分别用三个属性值记录三个值   import java.awt.Point; public class Line { public Po

设计数据结构的时候常常为了性能考虑,很容易引入一些冗余的属性,不是说多余的属性不好,我们应该按照一个正常的思维方法去设计数据结构。

看看一个记录路线的数据结构的例子,一条路线有起点,终点以及距离三个基本的信息,第一种设计方式如下,分别用三个属性值记录三个值

 

import java.awt.Point;

public class Line {

		 public Point start;
		 public Point end;
		 public double distance;

}

  我们可以看出距离是受另外起点和终点控制的,它们的变化会导致距离值的变化,所以第二种设计我们考虑使用一个方法来记录距离的信息如下

 

import java.awt.Point;

public class Line {

		 public Point start;
		 public Point end;
		 
		 public double distance(){
			 return start.distance(end);
		 }

}

 这种设计和数据库的范式原则原理上也是一样的(比如通过个人信息的出生年份即可推算出年龄信息,所以没必要多设计一个字段保存年龄信息)但是实际开发过程中,我们为了业务的方便或者是出于性能的考虑,我们可能会考虑设计缓存来记录计算结果,第三种设计方式如下

 

import java.awt.Point;

public class Line {

		 public Point start;
		 public Point end;
		 public boolean changed = true;
		 public double distance;
			 
		 public Point getStart() {
			 return start;
		 }
		 public void setStart(Point start) {
			 this.start = start;
			 changed = true;
		 }
		 public Point getEnd() {
		 	 return end;
		 }
		 public void setEnd(Point end) {
			 this.end = end;
			 changed = true;
		 }
		 
		  public double distance(){
			  if(changed){
				  distance = start.distance(end);
				  changed = false;
			  }
			  return distance;
		  }
}

  建议尽量使用get/set来获取和设置属性信息,如上面的例子,可以很方便地添加缓存控制。

良好的程序设计——避免属性信息冗余

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
本文讨论一些常见的MySQLC API 程序设计错误,以及如何避免其发生(这些问题在MySQL邮件清单中会周
一个良好的用户界面应具有高转换率,并且易于使用。但要用户体验良好并不容易做到,下面我们整理了4
¹5-1 :去掉没必要的公共变量。 说明:公共变量是增大模块间耦合的原因之一,故应减少没必要的公共
http://apps.hi.baidu.com/share/detail/22191507转贴 解决方案与项目: 从VC6之后VC系列就使用解决
注:本博客的内容纯属本人的个人零散想法的收集文,记录本人的一时闪出的想法,可能没有格式或连贯性
Martin C. Brown (questions@mcslp.com), 开发人员和作家 2008 年 6 月 16 日 使用本文介绍的 10 个
一个良好的用户界面应具有高转换率,并且易于使用。但要用户体验良好并不容易做到,下面我们整理了4
曾经在网上看到这么一段话:权威机构统计得出一个脑力工作者80%时间是和文档在打交道,其中60%的时
如何避免江郎才尽 中国神童的故事大家都读过吧?方仲永,生五年,自是指物作诗立就,又七年,泯然众
拥塞避免算法是一种处理丢失分组的方法。 该算法假定由于分组受到损坏引起的丢失是非常少的(远小于
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号