我最近在研究 Simulink 模型,并使用 Goto
和 From
block 来防止非常繁忙的系统变成一团乱麻。我被告知我不能使用 Goto
和 From
block ,因为它们被认为是糟糕的风格(至少,根据我的雇主的说法)。
虽然我认为电线应该尽可能保持连接,但我相信如果模型可以,Goto
和 From
block 可以显着提高系统/子系统的可读性否则会导致很多交叉线;特别是如果 block 可以用颜色编码(例如紫色 Goto
block 转到所有紫色 From
block )。
我会提供我正在使用的子系统的图像,但我不确定是否可以将它放在这里。子系统本身有大约 12 个子系统 block (以后可能会更多),每个子系统 block 都有两个总线类型的输出。每个子系统的第一个输出进入 Bus Creator
block ,每个子系统的第二个输出进入第二个 Bus Creator
block 。由于子系统垂直对齐并且 Bus Creator
位于右侧,因此会导致许多交叉线。我使用 Goto
和 From
block 来清理系统。
我可以提供一个较小但相似的模型的图像,该模型是我为这个问题组合在一起的。
对于具有大约 12 个子系统的系统,这会变得非常繁忙。我使用 Goto
和 From
block 来连接子系统和 Bus Creator
,而没有过多的交叉线。
我相信我的雇主可能背负着从基于文本的语言中使用 goto
语句并将其应用于 Goto
/From
block 的耻辱在模拟链接中。一般来说,以这种方式(或任何方式)使用 Goto
和 From
block 是否被认为是糟糕的风格?
最佳答案
Mathworks 汽车顾问委员会发布了一些模型 guidelines (PDF),其中包括 Goto
/From
的用法。他们列出的规则是:
不要有 float 的子系统,即所有输入/输出端口都通过
Goto
连接。 Simulink 的一大优点是能够仅通过粗略的目视检查来确定信号流,不要通过使用Goto
链接所有内容来破坏它。信号线连接的子系统之间至少有1个前馈和1个反馈回路。- 我个人对反馈信号的看法是,它们都应该用信号线连接,但我相信你会想出把它们全部画出来会使模型困惑的情况。
<
- 我个人对反馈信号的看法是,它们都应该用信号线连接,但我相信你会想出把它们全部画出来会使模型困惑的情况。
第二条准则是关于
Goto
标签的范围;尽可能保持可见性local
。- 我觉得将可见性设置为
scoped
也是可以接受的,只要您没有在Goto 下游的几个级别以上使用匹配的
。我还没有遇到对全局From
Goto
标记的合理需求。
- 我觉得将可见性设置为
所以,所有 Goto
的用法都不错,在某些情况下它可以提高可读性,这是对的。话虽如此,我认为 Gotos 不适合上图。我知道这只是一个例子,但我应该指出,如果正在创建的总线是虚拟的,那么创建器的输入顺序并不重要,重新排列 Bus Create 和 Mux block 输入可以为可读性创造奇迹。
上述准则的问题在于存在弯曲它们的空间,您团队中的开发人员可能会这样做。即使每个人一开始都努力遵循它们,但有一天,从现在开始很长一段时间,当您重新绘制模型的那一部分以改进/添加功能时,您可能会与这些准则发生冲突。在实现一些很酷的新功能的过程中,重新排列输入和输出可能特别烦人。这可能是您的雇主选择实现全面禁令的原因。这在某些情况下不方便,但更容易执行。
关于matlab - 在 Simulink 中,Goto 和 From block 是否通常被认为是不良风格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20204253/