matlab - 在 Simulink 中,Goto 和 From block 是否通常被认为是不良风格?

标签 matlab styles simulink goto

我最近在研究 Simulink 模型,并使用 GotoFrom block 来防止非常繁忙的系统变成一团乱麻。我被告知我不能使用 GotoFrom block ,因为它们被认为是糟糕的风格(至少,根据我的雇主的说法)。

虽然我认为电线应该尽可能保持连接,但我相信如果模型可以,GotoFrom block 可以显着提高系统/子系统的可读性否则会导致很多交叉线;特别是如果 block 可以用颜色编码(例如紫色 Goto block 转到所有紫色 From block )。

我会提供我正在使用的子系统的图像,但我不确定是否可以将它放在这里。子系统本身有大约 12 个子系统 block (以后可能会更多),每个子系统 block 都有两个总线类型的输出。每个子系统的第一个输出进入 Bus Creator block ,每个子系统的第二个输出进入第二个 Bus Creator block 。由于子系统垂直对齐并且 Bus Creator 位于右侧,因此会导致许多交叉线。我使用 GotoFrom block 来清理系统。

我可以提供一个较小但相似的模型的图像,该模型是我为这个问题组合在一起的。 Small Simulink system depicting crossed wires. 对于具有大约 12 个子系统的系统,这会变得非常繁忙。我使用 GotoFrom block 来连接子系统和 Bus Creator,而没有过多的交叉线。

我相信我的雇主可能背负着从基于文本的语言中使用 goto 语句并将其应用于 Goto/From block 的耻辱在模拟链接中。一般来说,以这种方式(或任何方式)使用 GotoFrom block 是否被认为是糟糕的风格?

最佳答案

Mathworks 汽车顾问委员会发布了一些模型 guidelines (PDF),其中包括 Goto/From 的用法。他们列出的规则是:

  1. 不要有 float 的子系统,即所有输入/输出端口都通过 Goto 连接。 Simulink 的一大优点是能够仅通过粗略的目视检查来确定信号流,不要通过使用 Goto 链接所有内容来破坏它。信号线连接的子系统之间至少有1个前馈和1个反馈回路。

    • 我个人对反馈信号的看法是,它们都应该用信号线连接,但我相信你会想出把它们全部画出来会使模型困惑的情况。

      <
  2. 第二条准则是关于Goto标签的范围;尽可能保持可见性 local

    • 我觉得将可见性设置为 scoped 也是可以接受的,只要您没有在 Goto 下游的几个级别以上使用匹配的 From 。我还没有遇到对全局 Goto 标记的合理需求。

所以,所有 Goto 的用法都不错,在某些情况下它可以提高可读性,这是对的。话虽如此,我认为 Gotos 不适合上图。我知道这只是一个例子,但我应该指出,如果正在创建的总线是虚拟的,那么创建器的输入顺序并不重要,重新排列 Bus Create 和 Mux block 输入可以为可读性创造奇迹。

上述准则的问题在于存在弯曲它们的空间,您团队中的开发人员可能会这样做。即使每个人一开始都努力遵循它们,但有一天,从现在开始很长一段时间,当您重新绘制模型的那一部分以改进/添加功能时,您可能会与这些准则发生冲突。在实现一些很酷的新功能的过程中,重新排列输入和输出可能特别烦人。这可能是您的雇主选择实现全面禁令的原因。这在某些情况下不方便,但更容易执行。

关于matlab - 在 Simulink 中,Goto 和 From block 是否通常被认为是不良风格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20204253/

相关文章:

matlab - 检测均匀表面中的错误点

matlab - 如何从 matlab 中的大散点图中找到索引?

css - Facebook 粉丝,设计外观 - 不要工作

html - CSS 在 div 中定位 div

matlab - 为什么如果我在输出上放置滤波器,我会修改源信号?这是一个 simulink 错误吗?

matlab - 直线和折线之间的交点

matlab - 在matlab中比较数字

javascript - 如何仅使用 javascript 设置通过 p5.js 中的 createButton 函数创建的 slider 的样式?

matlab - 通过 Simulink 中的第二个变量限制 PID Controller 的输出

matlab - 如何在 Simulink Matlab 功能 block 中使用 syms