4

MATLAB の 1 つの(主要な)関数 = 1 つのファイルの元の理由は何だったのでしょうか? また、何年にもわたる開発が行われた後も、依然としてそうであるのはなぜですか?

このアプローチの利点と欠点 (関数とスクリプトを明らかに分離する必要があるのに、あまりにも多くのものを関数とスクリプトに入れすぎると、コードの明瞭さが失われます) と比較して、どのような利点がありますか?

4

2 に答える 2

2

ファイルごとに1つのクラス/関数をロードするMatlabのスキーマは、この問題におけるJavaの選択と一致しているようです。1980 年代にパーサーが導入されたとき、パーサーを高速化するための技術的な理由が他にあったことに賭けています。このスキーマは、すべてが詰め込まれた非常に大きなファイルを思いとどまらせるために Java によって選択されました。これは、私が見た 1 ファイル クラス シンタックスを使用するすべての言語の主要な議論でした。

ただし、ファイル セマンティクスごとに 1 つのクラスを強制しても、メガ ファイルは停止しません。KPIBは、複雑で恐ろしく長い関数/クラス ファイルの完全な例です (非常に便利なマガ ファイルですが)。したがって、1 つのクラス ファイル システムは、機能的に有用なメカニズム以上のコードの抽象化についてユーザーに認識させようとする方法です。

Matlab の 1 つの関数/クラス ファイル システムの良い結果は、プロジェクト ディレクトリを一目見ただけで、どの関数が使用可能かを非常に簡単に知ることができることです。さらに、名前の多くは、他のファイルと区別できるように説明的なものにする必要がありました。

最後に、1 つのファイル クラスに賛成または反対する強力な議論があるとは思いません。通常、onw から別のファイル クラスに移動するのは意味的にマイナーな変更にすぎないためです (コードがひどく未整理の状態にある場合を除きます...その場合、それを修正することを恥じるべきです)。

編集!

Java の 1 クラス ファイル システムを採用している Matlab への不適切な参照を修正しました。さらに調査したところ、両方の開発者がこのスタイルを個別に採用したようです (または、他の言語が決定に影響したことを明記していませんでした)。Matlab は 2000 年まで Java をバンドルしなかったため、これは特に当てはまります。

于 2012-09-13T21:15:09.887 に答える
2

なんのメリットもないと思います。ただし、必要な数の関数を 1 つのファイルに入れることができます。例えば:

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 に答える