5.3 时序分解
信息泄露的一个常见原因是一种我称之为时序分解(temporal decomposition)的设计风格。在时序分解中,系统的结构与操作发生的时间顺序相对应。它以特定格式读取文件,修改文件内容,然后再次写出文件。通过时序分解,这个应用程序可能被分成三个类:一个类用于读取文件,另一个类用于执行修改,第三个类用于写出新版本的文件。文件读取和文件写入步骤都有关于文件格式的知识,这导致了信息泄露。解决方案是将读写文件的核心机制合并到一个类中。这个类将在应用程序的读和写阶段被使用。陷入时序分解的陷阱是很容易的,因为当你编码时,操作必须发生的顺序往往在你的脑海中。然而,大多数的设计决策在应用程序的生命周期中会在几个不同的时间段体现出来;因此,时序分解往往会导致信息泄露。
顺序通常是重要的,所以它会反映在应用程序的某个地方。然而,它不应该反映在模块结构中,除非该结构与信息隐藏一致(也许不同的阶段使用完全不同的信息)。在设计模块时,要关注执行每个任务所需的知识,而不是任务发生的顺序。
Last updated