代码的坏味道之八 :Data Clumps(数据泥团)
2013-05-02 18:04
441 查看
数据项(data items)就像小孩子:喜欢成群结队地待在一块儿。你常常可以在很多地方看到相同的三或四笔数据项:两个classes内的相同值域(field)、许多函数签名式(signature)中的相同参数。这些「总是绑在一起出现的数据」真应该放进属于它们自己的对象中。首先请找出这些数据的值域形式(field)出现点,运用Extract Class
(提炼类)将它们提炼到一个独立对象中。然后将注意力转移到函数签名式(signature)上头,运用Introduce Parameter Object(引入参数对象)
或Preserve Whole Object(保持对象完整) 为它减肥。这么做的直接好处是可以将很多参数列缩短,简化函数调用动作。是的,不必因为Data Clumps只用上新对象的一部分值域而在意,只要你以新对象取代两个(或更多)值域,你就值回票价了。
一个好的评断办法是:删掉众多数据中的一笔。其他数据有没有因而失去意义?如果它们不再有意义,这就是个明确信号:你应该为它们产生一个新对象。
缩短值域个数和参数个数,当然可以去除一些坏味道,但更重要的是:一旦拥有新对象,你就有机会让程序散发出一种芳香。得到新对象后,你就可以着手寻找Feature Envy,这可以帮你指出「可移至新class」中的种种程序行为。不必太久, 所有classes都将在它们的小小社会中充分发挥自己的生产力。
(提炼类)将它们提炼到一个独立对象中。然后将注意力转移到函数签名式(signature)上头,运用Introduce Parameter Object(引入参数对象)
或Preserve Whole Object(保持对象完整) 为它减肥。这么做的直接好处是可以将很多参数列缩短,简化函数调用动作。是的,不必因为Data Clumps只用上新对象的一部分值域而在意,只要你以新对象取代两个(或更多)值域,你就值回票价了。
一个好的评断办法是:删掉众多数据中的一笔。其他数据有没有因而失去意义?如果它们不再有意义,这就是个明确信号:你应该为它们产生一个新对象。
缩短值域个数和参数个数,当然可以去除一些坏味道,但更重要的是:一旦拥有新对象,你就有机会让程序散发出一种芳香。得到新对象后,你就可以着手寻找Feature Envy,这可以帮你指出「可移至新class」中的种种程序行为。不必太久, 所有classes都将在它们的小小社会中充分发挥自己的生产力。
相关文章推荐
- 代码坏的味道08:数据泥团(Data Clumps)
- 改善代码设计 —— 组织好你的“.NET技术”数据(Composing Data)
- iOS6 编程:Core Data持久化数据存储(3)-编写Core Data代码
- 代码的坏味道之二十 :Data Class(纯稚的数据类)
- 转:代码的坏味道之二十 :Data Class(纯稚的数据类)或POJO
- 一段由数据库结构生成相应数据对象的代码(1)(2) (3)--DataHelper
- Winform开发常用控件之DataGridView的简单数据绑定——代码绑定DataSet、DataTable、IList、SqlDataReader
- 一起谈.NET技术,改善代码设计 —— 组织好你的数据(Composing Data)
- 代码大全学习-15-基础数据类型(Fundamental Data Types)
- 代码坏的味道20:纯稚的数据类 (Data Class)
- 改善代码设计 —— 组织好你的数据(Composing Data)
- HDFS1.0源代码解析—DataNode数据接收线程DataXceiverServer与DataXceiver解析
- Core Data持久化数据存储(3)-编写Core Data代码
- 改善代码设计 —— 组织好你的数据(Composing Data)
- codeData数据持久化代码
- SqlDataReader读取数据的代码
- C#使用SQL DataAdapter数据适配代码实例
- 在程序中写了一段代码向数据库中插入数据,出现了data too long for column 'name' at row 1的问题。
- 企业库数据层代码生成工具:DataTierGenerator for Enterprise Library
- HDFS1.0源代码解析—DataNode端数据存储和管理DataStorage和FSDataset解析