`

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

阅读更多

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

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

 

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来获取和设置属性信息,如上面的例子,可以很方便地添加缓存控制。

分享到:
评论

相关推荐

    数据库课程设计——学生成绩管理系统

    在本项目中,"数据库课程设计——学生成绩管理系统"是一个典型的IT应用场景,结合了数据库技术和Java编程,用于实现对学生成绩的有效管理和查询。这个系统对于理解和掌握数据库设计、SQL语言以及Java GUI编程有着...

    数据库试题————————一共四套

    1. 数据库概念:数据库(Database)是一个有组织、可共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,用于存储和管理信息。常见的数据库管理系统(DBMS)包括MySQL、Oracle、SQL Server等。 2. 数据模型...

    住院管理信息系统——软件数据库设计说明书.doc

    设计原则还包括将不同主题的字段分配到不同的表,将信息分解为小逻辑单元,避免推导和计算字段,以及确保收集所有必需的信息。这些措施有助于减少数据冲突,提高数据访问速度,降低维护成本。 在逻辑设计阶段,通过...

    C++课程设计——出租车管理系统

    在本C++课程设计项目中,我们探讨的是一个出租车管理系统,这是C++编程学习过程中的一个典型应用案例。这个系统的主要目标是实现对出租车服务的全面管理,包括车辆信息、驾驶员信息、乘客订单、费用计算等多个功能...

    数据库设计说明书(GB8567——88)

    《数据库设计说明书(GB8567——88)》是中国国家标准中关于数据库设计的一份规范文档,旨在为数据库的设计、开发和维护提供一套统一的标准和指南。这份文档详细阐述了数据库设计的各个阶段,包括外部设计、结构设计...

    数据库程序设计 图书馆借还书系统

    【数据库程序设计——图书馆借还书系统】 在IT行业中,数据库程序设计是构建高效、稳定、易用的应用程序的关键组成部分。本项目“图书馆借还书系统”是一个典型的案例,它结合了Java编程语言和SQL(Structured ...

    网页设计师 ——web标准应用教程

    10. **跨浏览器兼容性**:Web标准确保网页在多种浏览器中表现一致,避免因浏览器差异导致的设计和功能问题。 通过学习和实践Web标准,网页设计师可以创建出更高效、更具包容性和可持续发展的网站,从而满足不断变化...

    面向对象C++程序设计

    为了更好地理解这些概念,可以参考《面向对象的程序设计语言——C++》课件,该课件可能包含了详细的理论讲解、示例代码和练习,帮助你深入学习和掌握C++的面向对象编程技术。通过实际的编程实践,你可以更有效地...

    《重构——改善既有代码的设计》

    ### 《重构——改善既有代码的设计》:提升代码质量与性能的关键实践 #### 一、重构的概念及其重要性 在软件开发过程中,随着项目规模的增长和技术需求的变化,代码的复杂性和混乱度也会随之增加。这不仅会影响...

    教务管理系统——数据库课程设计mysql+java.zip

    需要理解实体、属性、键的概念,以及如何通过范式理论优化数据库设计,避免数据冗余。 2. **SQL语言**:包括DQL(数据查询语言)用于查询数据,DML(数据操纵语言)用于插入、更新和删除数据,DDL(数据定义语言)...

    怎样设计良好的数据库.pdf

    设计一个良好的数据库是任何应用程序成功的关键,特别是在处理大量数据时。本文主要介绍了一种系统性的方法来设计数据库,包括从理解需求、识别实体、绘制E-R图、转换为表格,以及应用数据库规范化原则。以下是对...

    一个工具类搞定 CRUD 的创建人、修改人、时间等字段赋值!(csdn)————程序.pdf

    在这里,我们获取请求的`token`和`username`,然后使用`BeanUtils.setProperty()`更新对象的属性,将当前用户信息和时间戳设置为创建人和创建时间或修改人和修改时间。 5. **执行流程** 当有更新或创建操作时,AOP...

    数据库——模拟题

    - **可控冗余度**:通过减少不必要的数据重复存储,避免数据不一致的问题。 ### 表文件的组成部分 2. **表文件的组成**:在数据库中,表文件主要由**表结构**和**表数据**两部分组成。 - **表结构**:定义了表中...

    数据库设计报告论坛管理信息系统

    《数据库设计报告——论坛管理信息系统》是一份详细记录了如何设计和实现一个论坛管理信息系统的学术报告。报告的作者是崔建波,他在理学院数学101班,由尚宝欣讲师和朱振菊实验师指导。这篇报告涵盖了从选题背景到...

    Java笔记——2017年3月3日

    7. **反射**:反射是Java的一项强大功能,它允许程序在运行时检查和操作类、接口、字段和方法的信息。通过反射,我们可以动态创建对象、调用方法和修改属性,这在元编程和插件系统中非常常见,但使用不当也可能带来...

    12.java学习第十二章——继承extends.pdf

    通过合理地设计类层次结构,可以有效地管理代码库,减少冗余,并增强程序的可维护性和扩展性。然而,需要注意的是,在设计继承关系时应谨慎考虑,以避免不必要的耦合度增加。此外,理解Java对继承的支持特性和限制...

    数据库设计--ER图

    ### 数据库设计——ER图详解 #### 一、数据库设计概述 数据库设计是一个系统化的过程,旨在构建一个高效且能够满足特定应用环境需求的数据库。它不仅涉及数据的有效存储,还包括确保数据的安全性和完整性。数据库...

    图书信息管理系统 11

    - 数据一致性与完整性:确保数据库中的数据准确无误,避免数据冗余或缺失。 - 数据安全性:采取加密、访问控制等措施保障数据安全。 2. **前端应用程序的开发**:这部分涉及用户界面的设计以及与后台数据库交互...

    高质量C++编程指南——教你如何提高C++编程质量

    - **注释规范**:注释应简洁明了,避免冗余。注释可以解释代码的功能、算法思路等。 - **类的版式**:类的定义应该遵循一定的格式,比如先声明公共成员,再声明保护成员,最后是私有成员。 #### 四、命名规则 - **...

Global site tag (gtag.js) - Google Analytics