清理MATLAB代码

清理MATLAB代码,matlab,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

我花了相当多的时间清理旧的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

这一切看起来都很好,我个人将迭代器变量“ii”重命名为更字面的名称(即iProperty),在循环开始时,我将

property = obj.(all_props{iProperty});
避免以后重复代码(如果对象允许)

除了“大小(所有道具,1)”之外,您还可以使用“numel(所有道具)”。在这种情况下(使用一维数组),结果是一样的,如果你问我,它看起来更干净


如果您希望代码更简洁,重复更少:您可以始终将“Enable”和“Enabled”与0和“Off”一起存储在某个数组/结构中,并迭代这些值。它既有优点(很容易扩展到其他字段名(例如“Disabled”=1)、代码重复较少(try end)),也有缺点(额外的for循环、额外的变量等)。

该函数实际上似乎非常简单。当然,也有一些som变量名我不会在MATLAB中使用。循环中的计数器使用k或kk。当然,ii不是一个技术问题,但它是i的近亲,i是imaginery单元的内置符号(从不使用i)。