MATLAB的一个(主要)功能=一个文件的原始原因是什么?经过这么多年的开发,为什么它仍然如此?
与缺点相比,这种方法的优点是什么(人们在函数和脚本中放了太多东西,显然它们应该分开......导致代码清晰度下降)?
答案 0 :(得分: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()
答案 1 :(得分:2)
Matlab的每个文件加载一个类/函数的模式似乎与Java在这个问题上的选择相匹配。我敢打赌,在20世纪80年代引入解析器时,加速解析器还有其他技术原因。 Java选择这种模式来阻止包含内部所有内容的极大文件,这是我使用单文件类语义看到的任何语言的主要参数。
但是,每个文件语义强制一个类不会停止大型文件 - KPIB是一个复杂的,可怕的长函数/类文件的完美示例(虽然是一个非常有用的maga文件)。因此,一类文件系统是一种尝试让用户了解代码抽象的方法,而不是一种功能上有用的机制。
Matlab的一个函数/类文件系统的一个积极结果是,很容易通过快速浏览项目目录来了解可用的函数。此外,许多名称必须具有足够的描述性,以区别于其他文件,因此作为次要形式的文档命名是一种副作用。
最后我认为对于一个文件类没有强有力的论据,因为从onw到另一个文件类通常只是一个小的语义变化(除非你的代码处于一个非常无组织的状态......在哪种情况下,你应该感到羞愧,以修复它。)
修改<!/强>
我修复了对采用Java的一个类文件系统的Matlab的错误引用 - 经过更多研究后,两个开发人员似乎都独立采用了这种风格(或者更确切地说没有指明另一种语言影响了他们的决定)。这一点尤其正确,因为Matlab直到2000年才捆绑Java。