Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB';一个函数=一个文件,为什么仍然如此?_Matlab - Fatal编程技术网

MATLAB';一个函数=一个文件,为什么仍然如此?

MATLAB';一个函数=一个文件,为什么仍然如此?,matlab,Matlab,MATLAB的一个(主要)函数=一个文件的最初原因是什么?为什么经过这么多年的开发,它仍然如此 与它的缺点相比,这种方法的优点是什么(人们在函数和脚本中放了太多东西,而它们显然应该分开…导致代码不清晰)?我认为没有任何优点。但是,您可以在一个文件中放入所需的任意多个函数。 例如: classdef UTILS methods (Static) function help % prints help for all functions

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


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

我认为没有任何优点。但是,您可以在一个文件中放入所需的任意多个函数。 例如:

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()

Matlab的每个文件加载一个类/函数的模式似乎与Java在这方面的选择相匹配。我敢打赌,在20世纪80年代引入解析器时,有其他技术原因可以加快解析器的速度。Java选择此模式是为了阻止将所有内容都塞进文件中的超大文件,这一直是我见过的使用单文件类symantics的任何语言的主要参数

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

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

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

编辑


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

我很确定Matlab早在Java出现之前就已经有了这种结构。哎呀,你是100%正确的。在写我从口耳相传中听到的东西之前,我应该仔细研究一下。从你的答案的结尾到开头:根据我的经验,它会导致更混乱的功能。可以分离并“打包”为一个只做一件事的简单函数的东西,通常不是,而是与其他代码混合在一起,导致一个更大的函数可以做几件事。它不鼓励将代码划分为适当的独立实体,因为人们对管理项目中的大量文件感到厌倦。至于什么是“更好”,每个文件一个函数,或者一个“巨型”文件,我仍然更喜欢一个巨型文件的方法——虽然很混乱,但至少通常打包和传输它更容易。不过,我仍然希望看到这一限制被取消。p、 是的,MATLAB从最早的版本开始就有这个限制,在90年代早期的某个地方(不记得我开始使用它时是什么版本)。很有趣。我不知道这一点(但我的程序都是非常简单的结构…只包含脚本和主要级别的函数)。