微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > Labview > 程序初始化可以做得更整洁

程序初始化可以做得更整洁

时间:10-02 整理:3721RD 点击:
在中大型程序中,初始化是不可避免的,比如一些控件的复位,一些资源的开辟等等,以下举例几种常见的初始化代码组织方法,最后个人推荐一种我自己用的比较多的方法,请大家评价。
方法一:
初始化代码扔在主题循环外面,随便放置,如下图:
缺点:代码混乱,没有依靠关系
优点:简单,快捷,也是常见的一边开发程序一边增加初始化模块的产物



方法二:
用户自定义事件,里面有个init事件,在这个事件处理中,完成初始化。
缺点:留给初始化代码的空间非常有限,如果要做很多初始化工作,会要求增大主体循环框;或者配置几个初始化事件,比如init1,init2,init3,init1中触发init2,init2触发init3。可能会混淆程序逻辑(我某个项目中就是如此做,然后发现了用户事件的queue属性,这个以后可以单独写出)
优点:大型程序中几乎不可避免用到用户自定义事件,把初始化部分集成到用户事件中,方便管理,同时节省后面板空间;



方法三:
在主体循环之前,放一个sequence,如果初始化代码太多,可以使用stacked的sequence,如下图:
缺点:顺序结构没办法命名,违背self document思想;顺序结构不同的框传递数据比较麻烦;初始化顺序很难调整(虽然不常见,但我确实遇到过要调整初始化顺序的情况);
优点:初始化和主体循环分开,初始化代码增加不会要求主体循环变大;而且分开比较符合逻辑。



方法四:
把方法三的sequence用简单状态机代替,如下图:
缺点:初始化中创建的queue引用或者用户事件的ref要用移位寄存器保存,或者把创建ref的初始化代码放到最后。
优点:各个case都有命名,如果需要修改某个初始化代码,能很容易找到位置,而且也很容易看懂。



学习了,小编很强大啊

初始化都能搞这么强大
学习

再附加一种方法:把要初始化的代码放入子程序中(通过引用传值),并将这个子程序放入主程序的Init分支(随便什么状态机)....

从本质上来说,初始化也是一种状态设置,其中的大部分操作,在其他的地方都是会用到的。所以最好还是能够直接利用子事件或者子函数去实现初始化,而不是单独有一份初始化的code stack之类。否则维护起来会比较麻烦,尤其是如果有比较多的control需要resize及align的时候。

真的不错耶。

见识了!现在才知道什么叫入门容易,深入难

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top