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