4

MATLAB的一个(主)函数=一个文件的最初原因是什么,经过这么多年的发展,为什么仍然如此?

与它的缺点相比,这种方法的优点是什么(人们在函数和脚本中放置了太多东西,而它们显然应该分开......导致代码清晰度下降)?

4

2 回答 2

2

我不认为有什么优势。但是您可以将任意数量的函数放在一个文件中。例如:

classdef UTILS
    methods (Static)
        function help
            % prints help for all functions
            disp(char(methods(mfilename, '-full')));
        end
        function func_01()
        end
        function func_02()
        end
        % ...more functions
    end
end

我觉得很整洁。

>> UTILS.help
obj UTILS     
Static func_01
Static func_02
Static help 

>> UTILS.func_01()
于 2012-09-13T20:24:18.157 回答
2

Matlab 为每个文件加载一个类/函数的模式似乎与 Java 在这方面的选择相匹配。我敢打赌,在 1980 年代引入解析器时,还有其他技术原因可以加速解析器。Java 选择了这个模式来阻止非常大的文件,里面塞满了所有东西,这一直是我见过的使用单文件类语义的任何语言的主要论据。

然而,强制每个文件语义一个类并不能阻止巨型文件——KPIB是一个复杂的、非常长的函数/类文件的完美示例(尽管是一个非常有用的 maga 文件)。因此,一个类文件系统是一种试图让用户了解代码抽象的方法,而不是一种功能上有用的机制。

Matlab 的一个函数/类文件系统的一个积极结果是,快速浏览项目目录很容易知道哪些函数可用。此外,许多名称必须具有足够的描述性以将它们与其他文件区分开来,因此作为一种次要形式的文档命名存在副作用。

最后,我不认为有强烈的论据支持或反对一个文件类,因为从一个文件类到另一个文件类通常只是一个小的语义变化(除非你的代码处于非常无组织的状态......在这种情况下你应该羞于修复它)。

编辑!

我修正了对 Matlab 采用 Java 的一个类文件系统的错误引用——经过更多研究后,似乎两个开发人员都独立采用了这种风格(或者更确切地说,没有指定另一种语言影响了他们的决定)。尤其如此,因为 Matlab 直到 2000 年才捆绑 Java。

于 2012-09-13T21:15:09.887 回答