我在GUIDE中制作MATLAB GUI,需要验证我传递给多个函数的参数。
参数验证应该在按钮/滑块/编辑回调中还是在函数本身中完成?
答案 0 :(得分:0)
验证每个函数(回调或常规)中的参数是健壮的 - 每次函数不能信任其输入时我都会推荐它。由于检查参数类型,大小和值,函数调用的最小减速最终会得到回报,因为每个人都会理解函数需要什么。并且该功能可以独立于GUI重用。但有时需要这样的东西:
if ~isnumeric(x) ...
|| ~isscalar(x) ...
|| ~isfinite(x) ...
|| (x <= 0) ...
|| (x ~= fix(x))
error('Positive finite integer value required.');
end
这看起来只对少数程序员而言。
另一方面,回调直接处理编辑字段,这意味着首先要知道该值可能有什么问题。如果用户不介意在命令窗口中检查错误消息,则不要在回调中测试该值。另一方面,如果您想警告用户有关字段错误并需要编辑,您需要在转换之前检查编辑字段值并将其作为参数发送到您的函数。
有人可能会说:为什么不在回调函数中检查参数?一个可能的答案是因为回调只知道它的值。如果两个编辑框保持最小值和最大值,则每个编辑框都可以检查其自身的值(数值,标量,有限),但只能检测两个值之间的必要关系(最小值≥最大值)。传递给将使用这些值的函数。