Цель-C: технические причины, чтобы избежать _ в качестве имени локальной переменной?

Рассмотрим это в (возможно, вложенном) объеме метода (функции, блока и т. Д.):

int _ = 42;

Есть ли технический причины избегать локальной переменной с именем _?

Некоторое руководство, для цель этого вопроса:

  • я знаю _ обычно префиксы переменных экземпляра Objective-C.
    Оставь это в стороне. Комментарий к другим столкновениям с условность приветствуется.
  • Мне тоже нравится красивый код, но высказывания о вкусе или чистом мнении (например, «это {сбивает с толку, нечитаемо, не поддерживается”)) сильно обескураженный Вот†.
  • Мне в первую очередь интересно ответить на это для Objective-C, но ответы
    связанные с C или C ++ также приветствуются.

† Купите мне пинту, и вы можете рассказать мне все об этом. 🙂

0

Решение

C99 §7.1.3 говорит, что все идентификаторы, начинающиеся как минимум с одного подчеркивания, зарезервированы для использования реализацией, только как идентификаторы области файла.1 _ является идентификатором, который начинается по крайней мере с одного подчеркивания, поэтому вы не должны определять его каким-либо образом в области видимости файла.2

Тем не менее, как местный имя переменной, _ Честная игра для программиста приложений. Только идентификаторы, начинающиеся с любого два подчеркивания, или подчеркивание, а затем заглавная буква, зарезервированы безоговорочно.

Эти правила соблюдаются больше в нарушение, чем в соблюдении, как показывают сноски.

1 Да, это означает очень распространенную практику запуска имен функций «только для внутреннего использования» с _ сопровождаемый строчной буквой технически является нарушением соответствия.

2 GNU gettext является известной сторонней библиотекой, которая нарушает это правило; программисту предлагается #define _(x) gettext(x) как стенография.

4

Другие решения

Чтобы ответить на ваш вопрос просто — нет, нет технический причины, чтобы этого избежать. Хотя есть много других причин.

0

По вопросам рекламы [email protected]