处理分层全局数据更改的正确方法

时间:2017-04-08 05:22:43

标签: language-agnostic theory

假设您解析了一个数据文件以生成数千个项目并将它们分层/树格​​式化。想想像html,json或QStandardItemModel(对于任何Qt用户)。每个项目都可以拥有自己的文字,图标,数据等。现在让我们假设您想根据自己的数据及其与周围项目的关系来设置这些项目的样式。

例如,如果有一个名为' pie'的子项,请将父项设为红色,但仅当父项具有名为' cheese'的同级时,才如果父项是从根项目向下两步。等等...

我能够为我的用例创建一个递归函数,它正是这样做的(有更多的检查类型)。我基本上创建了一个JSON文档,其中包含所有可能的有效场景的参数。然后在我的递归函数中,检查项是否适合这些参数,然后检查JSON文档中定义的其他相关项。我为每个项目都这样做。

当用户编辑其中一个项目时,会出现问题。如果有人更改了某个项目的名称,那么我将如何让其他项目知道进行了更改并且它们现在可能适合作为有效方案?我无法再次检查该编辑项目的JSON文档,因为如果样式操作没有编辑其中一个选中的项目,那么编辑的项目可能需要才能适合场景。此外,如果编辑中断了一个场景,那么如何撤消它对其他项目的影响呢?

我无法重新检查父项,因为据我所知,它现在可能适合父母>父> sibling> child> child>子项。 (可能更多)

我的回答是重新扫描整个事物,每一个,每一个,时间。这样做的缺点是很多时候这些变化都是无关紧要的,当有数千个项目和数十种可能的场景时,性能可能会成为一个问题。

让我想到的是,像Visual Studio这样的软件在突出显示可能依赖于另一个文档中可能很远的变量时,如何在进行更改后知道何时突出显示某些内容?是否有正确的方式来处理这样的情况?或者重新整理整个过程?

0 个答案:

没有答案