MATLAB的一个(主)函数=一个文件的最初原因是什么,经过这么多年的发展,为什么仍然如此?
与它的缺点相比,这种方法的优点是什么(人们在函数和脚本中放置了太多东西,而它们显然应该分开......导致代码清晰度下降)?
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 在这方面的选择相匹配。我敢打赌,在 1980 年代引入解析器时,还有其他技术原因可以加速解析器。Java 选择了这个模式来阻止非常大的文件,里面塞满了所有东西,这一直是我见过的使用单文件类语义的任何语言的主要论据。
然而,强制每个文件语义一个类并不能阻止巨型文件——KPIB是一个复杂的、非常长的函数/类文件的完美示例(尽管是一个非常有用的 maga 文件)。因此,一个类文件系统是一种试图让用户了解代码抽象的方法,而不是一种功能上有用的机制。
Matlab 的一个函数/类文件系统的一个积极结果是,快速浏览项目目录很容易知道哪些函数可用。此外,许多名称必须具有足够的描述性以将它们与其他文件区分开来,因此作为一种次要形式的文档命名存在副作用。
最后,我不认为有强烈的论据支持或反对一个文件类,因为从一个文件类到另一个文件类通常只是一个小的语义变化(除非你的代码处于非常无组织的状态......在这种情况下你应该羞于修复它)。
编辑!
我修正了对 Matlab 采用 Java 的一个类文件系统的错误引用——经过更多研究后,似乎两个开发人员都独立采用了这种风格(或者更确切地说,没有指定另一种语言影响了他们的决定)。尤其如此,因为 Matlab 直到 2000 年才捆绑 Java。