清理MATLAB代码

时间:2011-02-22 08:31:46

标签: matlab

我花了相当多的时间来清理旧的MATLAB代码 - 这个函数试图禁用Java和uicomponent句柄,它们是某个对象的属性 - 关于如何更好地编写这个函数的任何想法?感谢

function disable(obj)
    all_props = properties(obj);
    for ii = 1:size(all_props, 1)
        try
            set(obj.(all_props{ii}), 'Enabled', 0)
        end
        try
            set(obj.(all_props{ii}), 'Enable', 'Off')
        end
    end
end

1 个答案:

答案 0 :(得分:2)

这一切看起来都很好,我个人将迭代器变量'ii'重命名为更文字的东西(即iProperty),在循环开始时,我会把类似

的东西重命名
property = obj.(all_props{iProperty});

以避免之​​后重复的代码(如果你的对象允许这样做)。

而不是'size(all_props,1)'你也可以使用'numel(all_props)'。在这种情况下(使用一维数组)结果是相同的,如果你问我它看起来更干净。

如果您希望您的代码更精简,重复次数更少:您可以在某些数组/结构中始终将“启用”和“启用”与0和“关闭”一起存储,并迭代这些值。它有其优点(很容易扩展到其他字段名称(例如'Disabled'= 1),更少的代码重复(try-end))但也有缺点(额外的循环,额外的变量,......)。