这是一个完全合理的问题,只要稍加注意,就可以编写易于维护的 GUI 代码。一些建议:
将 GUI 布局代码和“业务逻辑”放在不同的 m 文件中。(有关示例代码,请参阅此 FileExchange 提交)。相关地,使用嵌套函数来维护 GUI 状态,而不是使用 setappdata 和 getappdata 传递或传递结构。
通常,使用嵌套和匿名函数进行回调。嵌套函数类似于 Java 中的内部类,匿名函数实现词法闭包(如 Ruby 中的块)。
使用异常优雅地处理错误。
给每个 GUI 对象(例如,滑块、轴)一个唯一且有意义的标签。例如,“frequencySlider”或“dataAxes”。这有助于加强 GUI 布局和逻辑之间的分离。
GUIDE 提供的 gui 控件是相当低级的,但您可以通过为各种控件选择系统标签名称来实现可重用的高级组件(例如,滑块的“frequencySlider”和关联文本标签的“frequencyLabel”) . 组件初始化例程可以使用 findobj 来查找组件的各个部分并对其进行初始化。例如
功能我的组件(无花果,基本名称)
sliderHandle = findobj(fig, 'tag', [basename 'Slider']);
textHandle = findobj(fig, 'tag', [basename 'Label']);
% 初始化...
设置(sliderHandle,'回调',@sliderCallback);
% 用于回调的嵌套函数;注意使用sliderHandle
函数滑块回调(h,e)
fprintf('当前值为 %g\n, get(sliderHandle,'Value'));
结尾
结尾
- 如果您使用的是 R2008a 或更高版本,则对 OO 开发有很多额外的支持: