У меня есть функция, которая имеет несколько подфункций, все является частью класса дескриптора.Это можно проиллюстрировать следующим (круговая зависимость частных функций отсутствует, некоторые вещи зависят от объекта):
function out = f1(obj, in)
out = f2(obj, f3(in * obj.Thickness));
end
function out = f2(obj, in)
out = f3(in / obj.NumLayers);
end
function out = f3(in)
out = in;
end
С файлом f1.m
внутри папки @MyClass
.
Я решил поместить все эти файлы в класс и удалить эту папку @MyClass
во время создания окончательного пакета (сейчас я на этом этапе).
На данный момент структура класса
classdef MyClass < handle
properties
prop1
end
methods
function obj = MyClass(varargin) ...
function out = f1(obj, in)
end
methods (Access = private)
function out = f2(obj, in)
end
methods (Access = private, Static)
functions out = f3(obj, in)
end
end
Все находится в MyClass.m
, f2 и f3 являются частными, но, очевидно, видны для других функций внутри класса.Я нахожу это несколько проблематичным, так как некоторые функции имеют слегка похожие имена (потому что они имеют сходные, хотя и не одинаковые вещи) и могут ввести в заблуждение любого, кто поддерживает код - включая меня позже.
Вложенные функции - это еще один вариант, который я краткорассматривается, но там мне действительно не нравится бит «общих параметров» (который является точкой этих вложенных функций) для моего варианта использования, потому что для меня это звучит склонно к ошибкам.
Я пропускаю какие-либолучшее решение здесь, или я должен придерживаться текущей вещи частных функций?