在Simulink中,Goto和From块通常被认为是不好的风格吗?

cel*_*orb 6 matlab styles simulink goto

我最近正在研究一种Simulink模型,正在使用GotoFrom阻止一个非常繁忙的系统变成一堆扭曲的电线.我被告知我不会使用GotoFrom阻止,因为他们被认为是不好的风格(至少,根据我的雇主).

虽然我认为应尽可能保持电线连接,但我相信,如果模型会产生大量交叉线Goto,那么From块和块可以显着提高系统/子系统的可读性; 特别是如果块可以用颜色编码(例如紫色Goto块到达所有紫色From块).

我提供了一个我正在使用的子系统的图像,但我不确定我可以把它放在这里.子系统本身有大约12个子系统块(可能更晚),每个子系统块有两个总线型输出.每个子系统的第一个输出转到一个Bus Creator块,每个子系统的第二个输出转到第二个Bus Creator块.由于子系统垂直对齐而Bus Creators位于右侧,因此会产生许多交叉线.我正在使用GotoFrom阻止清理系统.

我可以提供一个较小但相似模型的图像,我将这个问题放在一起. 小Simulink系统描绘交叉线. 对于大约12个子系统的系统,这变得非常繁忙.我正在使用GotoFrom阻止连接子系统和Bus Creators而没有过多的交叉线.

我相信我的雇主可能会承担使用goto基于文本的语言的语句并将其应用于Simulink中的Goto/ From块的耻辱.一般来说,使用GotoFrom阻止这种方式(或任何方式)被认为是不好的风格?

Pra*_*ian 7

Mathworks汽车顾问委员会发布了一些建模指南(PDF),其中包括Goto/的使用From.他们列出的规则是:

  1. 没有浮动子系统,即所有输入/输出端口都通过Gotos 连接.Simulink的一大优点是能够通过粗略的视觉检查确定信号流,不要通过将所有内容与Gotos 连接来破坏它.在通过信号线连接的子系统之间至少有一个前馈和一个反馈回路.

    • 我个人对反馈信号的看法是它们都应该与信号线连接,但我相信你可以提出一些案例,其中所有这些都会使模型混乱.

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

    • 我觉得设置可见性scoped也是可以接受的,只要你没有使用From超过下游几个级别的匹配Goto.我还没有遇到过对全局Goto标签的合理需求.

所以,所有Goto用法都不错,而且你可以在某些情况下提高可读性.话虽如此,我认为Gotos对于上面的图片并不合理.我意识到这只是一个例子,但我应该指出,如果正在创建的总线是虚拟的,那么创建者的输入顺序无关紧要,重新排列总线创建和Mux块输入可以实现可读性的奇迹.

上述指南的问题在于存在弯曲它们的空间,团队中的开发人员可能就是这样做的.即使每个人都在努力关注它们,但是有一天,很长一段时间,当你重新绘制模型的那一部分以进行精炼/添加功能时,你可能会违反这些指南.在实现一些很酷的新功能的过程中,重新排列输入和输出可能会特别恼人.这可能是您的雇主选择实施全面禁令的原因.在某些情况下它很不方便,但更容易执行.