在中大型程序中,初始化是不可避免的,比如一些控件的复位,一些资源的开辟等等,以下举例几种常见的初始化代码组织方法,最后个人推荐一种我自己用的比较多的方法,请大家评价。
方法一:
初始化代码扔在主题循环外面,随便放置,如下图:
缺点:代码混乱,没有依靠关系
优点:简单,快捷,也是常见的一边开发程序一边增加初始化模块的产物
方法二:
用户自定义事件,里面有个init事件,在这个事件处理中,完成初始化。
缺点:留给初始化代码的空间非常有限,如果要做很多初始化工作,会要求增大主体循环框;或者配置几个初始化事件,比如init1,init2,init3,init1中触发init2,init2触发init3。。。可能会混淆程序逻辑(我某个项目中就是如此做,然后发现了用户事件的queue属性,这个以后可以单独写出)
优点:大型程序中几乎不可避免用到用户自定义事件,把初始化部分集成到用户事件中,方便管理,同时节省后面板空间;
方法三:
在主体循环之前,放一个sequence,如果初始化代码太多,可以使用stacked的sequence,如下图:
缺点:顺序结构没办法命名,违背self document思想;顺序结构不同的框传递数据比较麻烦;初始化顺序很难调整(虽然不常见,但我确实遇到过要调整初始化顺序的情况);
优点:初始化和主体循环分开,初始化代码增加不会要求主体循环变大;而且分开比较符合逻辑。
方法四:
把方法三的sequence用简单状态机代替,如下图:
缺点:初始化中创建的queue引用或者用户事件的ref要用移位寄存器保存,或者把创建ref的初始化代码放到最后。
优点:各个case都有命名,如果需要修改某个初始化代码,能很容易找到位置,而且也很容易看懂。
25