我最近正在开发一个Simulink模型,正在使用Goto
和From
块来保持一个非常繁忙的系统不会变成乱七八糟的电线。我被告知我不会使用Goto
和From
块,因为它们被认为是不好的风格(至少,根据我的雇主)。
虽然我认为应尽可能保持连线,但我相信Goto
和From
块可以显着提高系统/子系统的可读性,如果模型会导致大量交叉线除此以外;特别是如果块可以用颜色编码(例如紫色Goto
块到达所有紫色From
块。
我提供了我正在使用的子系统的图像,但我不确定我是否可以将它放在这里。子系统本身有大约12个子系统块(可能更晚),每个子系统块有两个总线型输出。每个子系统的第一个输出转到Bus Creator
块,每个子句的第二个输出转到第二个Bus Creator
块。由于子系统垂直对齐而Bus Creator
s位于右侧,因此会产生许多交叉线。我正在使用Goto
和From
块来清理系统。
我可以提供一个较小但相似的模型的图像,我将这个问题放在一起。
对于大约12个子系统的系统,这变得非常繁忙。我使用
Goto
和From
块来连接子系统和Bus Creator
,而没有过多的交叉线。
我相信我的雇主可能会怀疑使用基于文本的语言的goto
语句并将其应用于Simulink中的Goto
/ From
块。一般来说,以这种方式(或任何方式)使用Goto
和From
块被认为是不好的风格?
答案 0 :(得分:7)
Mathworks汽车顾问委员会发布了一些建模guidelines(PDF),其中包括Goto
/ From
的使用情况。他们列出的规则是:
没有浮动的子系统,即所有输入/输出端口都通过Goto
连接。 Simulink的一大优点是能够通过粗略的视觉检查来确定信号流,不要通过将所有内容与Goto
s链接来破坏它。至少在通过信号线连接的子系统之间有一个前馈和一个反馈回路。
第二条准则是关于Goto
标签的范围;保持可见性local
尽可能多。
scoped
多于From
下游的几个级别,我认为设置Goto
的可见性也是可以接受的。我还没有遇到对全局Goto
标记的合理需求。 因此,所有Goto
使用都不错,而且在某些情况下它可以提高可读性。话虽如此,我认为Gotos对于上面的图片并不合理。我意识到这只是一个例子,但我应该指出,如果正在创建的总线是虚拟,那么创建者的输入顺序无关紧要,重新排列Bus Create和Mux块输入可以为可读性创造奇迹。
上述指南的问题在于存在弯曲它们的空间,团队中的开发人员可能就是这样做的。即使每个人都在努力关注它们,但是有一天,很长一段时间,当你重新绘制模型的那一部分以进行精炼/添加功能时,你可能会违反这些指导原则。在实现一些很酷的新功能的过程中,重新排列输入和输出可能会特别恼人。这可能是您的雇主选择实施全面禁令的原因。在某些情况下不方便,但更容易执行。