Анализатор кода 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
не инициировал предупреждение от Анализатора кода.