И NSDMI, и нестатический инициализатор представителей в конструкторе не должны использоваться в одном типе
И NSDMI, и нестатический инициализатор представителей в конструкторе не должны использоваться в одном типе.
Можно инициализировать нестатический представитель данных класса одним из следующих способов:
В объявлении представителя в теле класса с помощью нестатического инициализатора представителя данных (NSDMI)
При помощи нестатического инициализатора представителя в конструкторе
В классе инициализация подмножества нестатических представителей данных с помощью NSDMI и инициализация остальных нестатических представителей данных с помощью конструктора снижает читаемость кода. Этот шаблон кода может вызвать путаницу для считывателя о том, какие начальные значения для каждого представителя данных фактически используются. Использование NSDMI или конструктора для инициализации всех нестатических представителей класса избегает этой потенциальной путаницы.
Конструкторы переноса и копирования освобождены от этого правила, потому что эти конструкторы имеют особое поведение инициализации представителей данных путем использования их существующих значений из других объектов. Эти конструкторы вряд ли вызовут путаницу у читателя.
Если вы используете NSDMI, чтобы инициализировать подмножество нестатических представителей данных класса и конструктора, чтобы инициализировать оставшиеся нестатические представители данных, то чекер помечает конструктор и связанные инициализации NSDMI.
Чекер не помечает конструкторы перемещения и копирования, которые нарушают это правило.
Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».
Группа: Специальные функции представителей |
Категория: Необходимый, Автоматизированный |