Анализатор кода MATLAB ® помогает оптимизировать код и избежать синтаксических ошибок при написании кода. Полезно понимать некоторые правила, применяемые анализатором кода при анализе кода определения класса. Такое понимание помогает избежать ситуаций, когда MATLAB допускает нежелательный код.
Анализатор кода предупреждает об использовании имен переменных в методах, соответствующих именам свойств. Например, предположим, что класс определяет свойство с именем EmployeeName и в этом классе существует метод, который использует EmployeeName в качестве переменной:
properties EmployeeName end methods function someMethod(obj,n) EmployeeName = n; end end
В то время как предыдущая функция является легальным кодом MATLAB, она приводит к предупреждениям анализатора кода по двум причинам:
Значение EmployeeName никогда не используется
EmployeeName - имя свойства, используемого в качестве переменной;
Если функция someMethod вместо этого содержалось следующее утверждение:
obj.EmployeeName = n;
Анализатор кода не генерирует предупреждений.
При изменении someMethod кому:
function EN = someMethod(obj) EN = EmployeeName; end
Анализатор кода возвращает только одно предупреждение, предполагающее, что вы действительно хотите обратиться к EmployeeName собственность.
Пока эта версия someMethod является легальным кодом MATLAB, это сбивает с толку дать свойству то же имя, что и функции. Поэтому анализатор кода выдает предупреждение, предполагающее, что оператор мог быть следующим:
EN = obj.EmployeeName;
Предположим, что определен метод, который возвращает значение свойства и использует имя свойства для имени выходной переменной. Например:
function EmployeeName = someMethod(obj) EmployeeName = obj.EmployeeName; end
Анализатор кода не предупреждает, если имя переменной совпадает с именем свойства, если переменная:
Входная или выходная переменная
Глобальная или постоянная переменная
В этих конкретных случаях анализатор кода не предупреждает, что используется имя переменной, которое также является именем свойства. Следовательно, ошибка кодирования, такая как:
function EmployeeName = someMethod(obj) EmployeeName = EmployeeName; % Forgot to include obj. end
не запускает предупреждение от анализатора кода.