Что означает #XXX в комментариях к коду?

126

Я много раз видел это в коде, даже vim отмечает это как особый случай. #TODOи #FIXMEесть ли два других маркера исправления, которые выделяет vim, но что это #XXXзначит?

Хорхе Варгас
источник
7
Вопрос касается кодовых меток или комментариев о лучших практиках программирования на Python. По этому поводу обсуждается предложение по усовершенствованию Python. Вопрос заслуживает того, чтобы его оставили на SO. Хотя его можно было сформулировать немного лучше.
nik

Ответы:

140

XXXв комментарии обычно хедз-ап. Возможно:

  • Что-то, что реализовано не совсем правильно.
  • Что-то, что нужно исправить позже.
  • Выделение возможного проблемного места.
  • То, в чем вы не уверены, вопрос.

Я часто предпочитаю более описательный тег, например FIXMEили TODOили HACK. XXXчасто используется как уловка для всего вышеперечисленного.

Поиск «XXX» в перекрестной ссылке кода FreeBSD - хороший пример многих вариантов использования. Их тысячи ...

Stef
источник
Что забавно, я использую это самостоятельно. XXX или #XXX в основном отключает компилятор и напоминает мне вернуться к чему-то. Обычно ссылки на указатели или ранее неизвестное значение или имя переменной.
Бобби
5
Это подтвердило мою первоначальную догадку. Это просто тег «перехватить все», чтобы указать другим программистам выделить этот комментарий как объект, на который стоит обратить внимание.
Хорхе Варгас,
Не пытаюсь троллить, но "HACK" не описательный. На самом деле это очень неоднозначно. Для меня это могло означать как минимум 3 вещи.
Ярослав Рахматуллин
2
@ ЯрославРахматуллин в исходном коде Я всегда читал это в смысле «это уродливая работа, но, похоже, работает достаточно хорошо» - то, что вы хотели бы исправить позже, но это не срочно. Я не использовал его (обычно использую TODOили XXXвместо него), но я бы так его интерпретировал.
Iiridayn 06
92
  • NOTE: Описание того, как работает код (когда это не очевидно).
  • XXX: Предупреждение о возможных подводных камнях, может использоваться как NOTE:XXX:.
  • HACK: Не очень хорошо написанный или искаженный код для обхода проблемы / ошибки. Следует использовать как HACK:FIXME:.
  • FIXME: Это вроде как работает, но можно было бы сделать лучше. (обычно код, написанный в спешке, нуждается в переписывании).
  • BUG: Здесь проблема.
  • TODO: Нет проблем, но нужно написать дополнительный код, обычно когда вы что-то пропускаете.

По крайней мере, так меня учили об этих тегах. Обычно первые два ( NOTEи XXX) используются для информации, и никаких действий не требуется. В то время как последние три ( FIXME, BUGи TODO) требуют действий. HACKнаходится где-то посередине (и, я думаю, почти никогда не используется?).

Питер
источник
3
Хороший список. Мне также нравится LAZY(не так критично, как FIXME или HACK) и OCD(известный сверхинженерно).
Брендан Берд
2
Вы действительно так используете XXX? Я пришел к выводу, что XXX имеет гораздо более высокий приоритет, что означает, что «это то, что необходимо исправить, прежде чем этот код даже будет передан в контроль версий». Именно так он используется внутри Google, автоматически применяется, поэтому вы можете увидеть XXX во время проверки кода, но невозможно отправить код, пока XXX не исчезнут. Заметки о долгоживущих делах могут быть помечены как TODO, и их можно отправлять, если указано чье-то имя или идентификатор ошибки.
Don Hatch
21

Некоторые заметки из Python Enhancement Предложения июня 2005 года , которая была отклонена .

Выбор между FIXMEи XXXзатруднен.
XXXкажется более распространенным, но гораздо менее информативным.
Кроме того, XXXэто полезный заполнитель в фрагменте кода
, значение которого неизвестно.

Таким образом , FIXMEявляется предпочтительной орфографией.
Sun говорит, что XXXи FIXMEони немного отличаются, давая XXXбольшую степень серьезности.
Однако, учитывая десятилетия хаоса по этой теме и слишком много миллионов
разработчиков, на которые не повлияет Sun, их легко по праву назвать синонимами.


PEP начинается с,

Этот PEP был отклонен. Хотя сообщество может быть заинтересовано,
нет никакого желания приводить стандартную библиотеку в соответствие с этим стандартом.

...

Что такое кодовые теги?

Программисты широко используют специальные соглашения о разметке комментариев к коду, чтобы служить напоминанием о разделах кода, которые требуют более тщательного изучения или анализа. Примеры разметки включают в себя FIXME, TODO, XXX, BUG, но есть еще много в широком использовании в существующем программном обеспечении. В дальнейшем такая разметка будет называться кодовыми тегами . Эти кодовые метки могут отображаться в коде приложения, модульных тестах, скриптах, общей документации или где угодно.


PEP - интересное чтение.

Nik
источник
10

Взгляните на PEP350 . Это объясняет все TODO, и XXXт.д. Я использую его каждый день , когда я не могу точно вспомнить , что один из кодов тегов средств.

Ztyx
источник
1
Вы знаете, является ли PEP350 источником этих этикеток? Знаете ли вы какие-нибудь старые документы (из эпохи Unix), описывающие, как использовать эти метки?
Ярослав Рахматуллин
6

Я использую, XXXпотому что набирать легче, чем TODO.

XXX для случаев, когда вы спешите и вернетесь к этому самостоятельно.

TODO для тех случаев, когда вам нужно передать его кому-то другому.

С. Лотт
источник
XXX означает «Я тороплюсь и сам вернусь к этому». TODO означает: «Это официальная часть будущего невыполненного запроса, который будет назначен кому-то другому». Это буквальные значения.
S.Lott
2
И в каком RFC эти «буквальные значения»? Или есть еще какие-то ссылки на это?
Randall
6
@Randall: "цитата"? Извините, это просто мое понимание после прочтения большого количества кода.
S.Lott
3

Из (старых) соглашений о коде Java :

Используйте XXX в комментарии, чтобы отметить то, что является фиктивным, но работает. Используйте FIXME, чтобы пометить что-то поддельное и сломанное.

Мартин
источник
1

XXX - это сокращение от caveat, которое немного отличается от NOTE, но очень похоже на HACK. Это может быть ошибка в сторонней библиотеке / коде, который используется, и код с // XXX: указывает, что либо это обходной путь из-за ошибки в стороннем коде, либо это может означать «осторожность» для тех, кто ищет / изменяет код, указывающий, почему что-то делается определенным образом, который в противном случае может показаться некорректным / неэлегантным на первый взгляд. HACK - это общий термин, означающий обходной путь для проблемы, которая может присутствовать либо в вашей собственной базе кода, либо в сторонней библиотеке.

Divick
источник
0

Я считаю, что пока FIXMEдля разработчика, и HACKдля сопровождающего, XXXи для пользователя.

Например, если вы проигнорируете XXXи вызовете эту функцию в другом месте, не понимая, как она работает, может произойти что-то неожиданное, и человек, имеющий дело с этой проблемой, будет недоволен (по крайней мере, тот, кто добавил эту функцию, XXXтак думает). Вы можете подумать, что проблема исчезнет, ​​если вы просто не воспользуетесь этой функцией.

Но ведь FIXMEвы почувствуете себя достойным просто исправить код, чтобы он заработал. Ибо у HACKвас может не быть лучшего выбора, даже если вы им не пользуетесь.

Если вы написали XXXсвой собственный код, и кто-то его использовал, вы можете почувствовать себя недовольным по причинам, например, если вы полностью переписали этот код, а затем он ведет себя совершенно по-другому, и вы нарушили чужой код. Но если вы уйдете FIXMEили TODOвместо этого, вам будет все равно.

user23013
источник
0

Я использую // XXX, поэтому мне не нужно запоминать номера строк. Вместо этого я просто ищу XXX, когда хочу вернуться к этому фрагменту кода.

Голубая вода
источник