Code Complete的作者在谈论隐藏全局数据时意味着什么?


25

在Code Complete 2nd Edition的6.4节中,有一段有关隐藏全局数据的段落。我特别感兴趣的是McConnell(该书的作者)提供了隐藏全球数据的好处的示例。有一个我无法理解的例子。我没有这本书的英文版,所以我将尝试翻译文本。

隐藏全局数据。(...)您可以在不修改程序的情况下更改数据的结构。

麦康奈尔是什么意思?他是在谈论改变全球数据吗?如果是这样,为什么在使用检索数据的方法时不必修改程序?还是他在这里指的是其他东西?

如果有人能消除我的困惑,我将不胜感激。如果您还可以提供一个示例,那就太好了(您知道示例非常棒)。

Answers:


44

作者正在谈论全局数据的结构,以及更改该结构将如何影响使用它的代码。

如果可以直接访问全局数据,则更改数据结构意味着潜在地必须更改使用该全局数据的所有代码。

如果只能通过接口(例如一组功能)访问全局数据,则更改结构意味着仅更改这些访问器。其余代码无需更改。

一个简单的例子就是以整数数组开头的代码(例如,static int[]在某些Java类中为a)。如果该数组可以全局访问,那么人们将开始以数组语法(即Global.cool_stuff[x] = 1;)使用它。如果出于某种原因要将数组更改为集合类型(向量,列表等),则必须更改使用此全局数据的所有代码,因为从语法上讲,它已变得无效。

如果只能通过一组访问器/更改器功能(“隐藏在”接口之后)访问该数据,则只需要更改那部分功能即可。实际使用数据的代码可以保持不变。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.