重构——22以对象取代数组(Replace Array with Object)

以对象取代数组(Replace Array with Object)

你有一个数组,其中的元素各自代表不同的东西;以对象替换数组。对于数组中的每个元素,以一个字段来表示

一、动机

数组应该只用于“以某种顺序容纳一组相似对象”

二、做法

1、新建一个类表示数组所拥有的信息,并在其中以一个public字段保存原先的数组

2、修改数组的所有用户,让它们改用新类的实例

3、编译,测试

4、逐一为数组元素添加取值/设值函数。根据元素的用途,为这些访问函数命名。修改客户端代码,让它们通过访问函数取用数组内的元素,每次修改后,编译并测试

5、当所有对数组的访问都改成了调用访问函数后,将新类的保存该数组的字段声明为private

6、编译

7、对于数组中的每一个元素,在新类中建立一个类型相当的字段,修改该元素的访问函数,令它改用上述的新建字段

8、每修改一个元素,编译并测试

9、数组的所有元素都有了相应自断后,删除该数组

时间: 2024-07-30 12:18:08

重构——22以对象取代数组(Replace Array with Object)的相关文章

PHP对象转数组(Object转Array),Json转数组(Json转Array)的方法

(1)php对象转数组的方法(object 转 array): /** * object 转 array */ function object_to_array($obj){ $_arr=is_object($obj)?get_object_vars($obj):$obj; foreach($_arr as $key=>$val){ $val=(is_array($val))is_object($val)?object_to_array($val):$val; $arr[$key]=$val;

as3中四种存储容器的比较(array,object,vector,dictionary)

as3中有四种存放对象的容器:Array,Object,Vector,Dictionary:其他人在博客里提到过几种占cpu以内存或者速度的比较数据.其性能不是差很多,但是对于大型项目,或者需要移植到移动设备上的项目,这方面的优化还是很抢眼的. 首先要按照自己的需要选择合适的类型. array,一般语言都有,在这里就不要多说了,但是要知道他是索引数组,所以索引尽量使用int,这样可以提高速度,如果使用字符串,那么length方法可能和你想象的不一样(自己可以小测试一下 呵呵) object就是m

重构——8以函数对象取代函数(Replace Method with Method Object)

以函数对象取代函数(Replace Method with Method Object) 有一个大型函数,其中对局部变量的使用使你无法采用Extract Method.将这个函数放进一个单独的对象里中,如此一来局部变量就成了对象内的字段,然后你就可以在同一个对象中将这个大型函数分解为多个小型函数 一.动机 1.小函数优美动人,只要将相对独立的代码从大型函数中提炼出来,就可以大大提高代码的可读性 2.局部变量的存在会增加函数分解难度.如果一个函数之中局部变量泛滥成灾,那么想分解这个函数是非常困难的

JavaScript中的Array 对象(数组对象)_javascript技巧

 1.创建Array对象方法: --->var arr = [1,2,3];//简单的定义方法 此时可以知道 arr[0] == 1; arr[1] == 2; arr[2] == 3; --->new Array(); var arr = new Array();//定义一个没有任何内容的数组对象,然后以下面的方式为其赋值 arr[0] = "arr0"; arr[1] = "arr1"; arr[2] = "arr2"; ---&

javascript中数组(Array)对象和字符串(String)对象的常用方法总结_javascript技巧

本文实例总结了javascript中数组(Array)对象和字符串(String)对象的常用方法.分享给大家供大家参考,具体如下: 综述:笔者经常将数组的方法和字符串的方法混淆,这里写篇日志,做个区分 1.字符串对象 String是JavaScript中的五种基本类型之一. (1)字符串对象的创建 例1: var str="Hello world"; 或者 var str=new String("Hello world") (2)charAt()方法 charAt(

Javascript中判断变量是数组还是对象(array还是object)_javascript技巧

怎样判断一个JavaScript变量是array还是obiect? 答案: 1.如果你只是用typeof来检查该变量,不论是array还是object,都将返回'objec'. 此问题的一个可行的答案是是检查该变量是不是object,并且检查该变量是否有数字长度(当为空array时长度也可能为0). 然而,参数对象[arguments object](传给制定函数的所有参数),也可能会适用于上述方法,技术上来说,参数对象并不是一个array. 此外,当一个对象有a.length属性的时候,这个方

JavaScript 对象与数组参考大全

javascript|参考|对象|数组 JavaScript 对象与数组参考大全 本文列举了各种Javascript对象与数组,同时包括对上述每一对象或数组所完成工作的简短描述,以及与其相关的属性方法,以及事件处理程序,还注明了该对象或数组的父对象用户同样可能需要参考Online Companion中的超级文本Object Hierarchy页面(http://www.netscapepress.com/support/javascript/10-9.htm),以便了解这些对象之间是如何相互关联

从零开始学_JavaScript_系列(15)——js系列<4>(数值、字符串、对象、数组、函数、日期的基本方法)

注:$("#a").text( 内容 ) 是jquery的方法,可以理解为在 <div id="a"></div>  添加内容变为: <div id="a">内容</div> (6)数值 注意,Math的M需要大写 ①绝对值:Math.abc(x)         获得x的绝对值(之后的意思都类似,非特殊不再说明)   ②求四舍五入后结果: Math.round(1.9) = 2; Math.rou

JavaScript对象与数组参考大全

javascript|参考|对象|数组 本文列举了各种javascript对象与数组,同时包括对上述每一对象或数组所完成工作的简短描述,以及与其相关的属性方法,以及事件处理程序,还注明了该对象或数组的父对象用户同样可能需要参考Online Companion中的超级文本Object Hierarchy页面(http://www.netscapepress.com/support/javascript/10-9.htm),以便了解这些对象之间是如何相互关联的. 顺便提一下,记住,这里把所有作为另一