Expressions and statements
ES.8
Избегайте похожих по написанию имён
Причина
Ясность и читаемость кода. Слишком похожие имена замедляют восприятие и увеличивают вероятность ошибок.
Пример (плохой)
if (readable(i1 + l1 + ol + o1 + o0 + ol + o1 + I0 + l0)) surprise();
Пример (плохой)
Не объявляйте нетиповую сущность с тем же именем, что и тип, в одной области видимости. Это устраняет необходимость в уточнении с помощью ключевых слов struct или enum. Это также устраняет источник ошибок, так как struct X может неявно объявить X, если поиск имени завершается неудачей.
struct foo { int n; };
struct foo foo(); // ПЛОХО, foo уже является типом в этой области видимости
struct foo x = foo(); // требует устранения неоднозначности
Исключение
Устаревшие заголовочные файлы могут объявлять нетиповые сущности и типы с одинаковыми именами в одной области видимости.
Контроль
- Проверяйте имена по списку известных запутанных комбинаций букв и цифр.
- Отмечайте объявления переменной, функции или перечислителя, скрывающие класс или перечисление, объявленное в той же области видимости.