Labview-管理大量常量

时间:2019-06-06 18:16:27

标签: constants labview

与代码逻辑相比,这更多的是格式问题,而且似乎很愚蠢(考虑到我看过更密集的框图)。我正在使用许多数字常量,它们开始使我的程序框图变得混乱。有什么我可以用来将它们很好地紧凑组合的吗?

最好避免将它们聚类,因为每次需要访问时,我都需要捆绑和解除捆绑。

编辑:有问题的代码的图片(代码段被重复使用,所以拥有更紧凑的用例结构会很好)

enter image description here

2 个答案:

答案 0 :(得分:1)

我认为您应该重新考虑希望将多少框图用于常量:-)

直接在代码中使用数字(相当于LabVIEW框图上未标记的常数)是公认的anti-pattern。除非常量值的原因很明显且对于执行操作至关重要,否则任何查看您的代码的人(包括您,在您编写代码后几周内的任何时间)都不会理解为什么选择该值。因此,您应该通过以某种方式标记常量(相当于将其分配给文本语言中的名称)来使其清晰明了,并且在必要时还可以轻松地更改值。

通常很清楚01常量在做什么,但是在您发布的代码图中,您有两个常量1000和一个999 。为什么是1000,如果我决定改为(例如)2000,我是否还需要更新其他两个值?如果是这样,则应定义一次,并用适当的名称标记它的含义(在您的示例中,该名称可能是chunk size或其他名称),然后将该值关联到您需要使用的任何位置。如果您有一个常数999,则可以使用减量函数获得该值,也可以将Greater Than函数更改为Greater or Equal,然后直接与1000值进行比较。这样,由于标签的存在,初始常量定义将占用更多空间,但是通过将该值连接到所需的位置而不是放置其他常量,可以节省空间并提高可维护性。

如果需要在程序框图的多个位置引用相同的常量,可以将常量(以及常量,而不是任何其他程序逻辑)放在子VI中,每个常量都用一个合适的标签,并且每个指示器连接到连接器窗格上的不同输出。将接线工具悬停在SubVI的端子上时,您会在尖端条中看到标签。另外,特别是如果您需要加载不同的常量值,则可以执行相同的操作,但在SubVI中将不同的常量捆绑到命名簇中(您将其保存为typedef),然后使用Unbundle by Name访问特定的群集中需要它们的常量值。同样,这不一定节省框图空间,但确实会使您的代码更具可读性和可维护性。

答案 1 :(得分:0)

一个简单的答案是重新组织我的框图,为常量留出更多空间。 Dave_St建议为任何寻求替代方案的人创建案例结构的子视图。希望将此标记为已解决。