Jakie jest znaczenie #XXX w komentarzach do kodu?

126

Widziałem to często w kodzie, nawet vim zaznacza to jako specjalny przypadek. #TODOi #FIXMEczy dwa inne znaczniki poprawek wyróżniają vim, ale co to #XXXznaczy?

Jorge Vargas
źródło
7
Pytanie dotyczy najlepszych praktyk w zakresie kodowania lub komentowania w programowaniu w Pythonie. Na ten temat prowadzona jest dyskusja na temat propozycji ulepszeń języka Python. Pytanie zasługuje na pozostawienie go w SO. Mogło być jednak sformułowane trochę lepiej.
nik

Odpowiedzi:

140

XXXw komentarzu jest zwykle ostrzeżeniem. Mogłoby być:

  • Coś, co nie jest całkowicie zaimplementowane.
  • Coś, co powinno zostać później naprawione.
  • Podkreślenie możliwego miejsca problemu.
  • Coś, czego nie jesteś pewien, pytanie.

Często wolałem bardziej opisowe tagi, takie jak FIXMElub TODOlub HACK.XXXjest często używany jako haczyk na wszystkie powyższe.

Wyszukiwanie „XXX” w odsyłaczu do kodu FreeBSD jest dobrym przykładem wielu zastosowań. Są tysiące ...

Stef
źródło
Zabawne jest to, że używam tego samodzielnie. XXX lub #XXX w zasadzie wyłącza kompilator i przypomina mi o powrocie do czegoś. Zwykle odwołuje się do wskaźnika lub wcześniej nieznanej wartości lub nazwy zmiennej.
bobby
5
Potwierdziło to moje pierwotne przypuszczenie, jest to po prostu tag catch all, aby wskazać innym programistom, aby wyróżnili ten komentarz jako coś, na co warto spojrzeć.
Jorge Vargas
Nie próbuj trollować, ale „HACK” nie jest opisowe. W rzeczywistości jest to bardzo niejednoznaczne. Dla mnie może to oznaczać co najmniej 3 rzeczy.
Ярослав Рахматуллин
2
@ ЯрославРахматуллин w kodzie źródłowym Zawsze czytałem to w sensie „to jest brzydka robota hakerska, ale wydaje się, że działa wystarczająco dobrze” - coś, co chciałbyś później wyczyścić, ale nie jest pilne. Nie używałem tego (zwykle używam TODOlub XXXzamiast tego), ale tak bym to zinterpretował.
Iiridayn
92
  • NOTE: Opis działania kodu (gdy nie jest to oczywiste).
  • XXX: Ostrzeżenie o możliwych pułapkach, może być używane jako NOTE:XXX:.
  • HACK: Niezbyt dobrze napisany lub zniekształcony kod, aby obejść problem / błąd. Powinien być używany jako HACK:FIXME:.
  • FIXME: To w pewnym sensie działa, ale można to zrobić lepiej. (zwykle kod napisany w pośpiechu, który wymaga przepisania).
  • BUG: Wystąpił problem.
  • TODO: Nie ma problemu, ale trzeba napisać dodatkowy kod, zwykle gdy coś pomijasz.

Tak przynajmniej mnie uczono o tych tagach. Zasadniczo pierwsze dwa ( NOTEi XXX) są używane w celach informacyjnych i nie są wymagane żadne działania. Podczas ostatnich trzech ( FIXME, BUGi TODO) wymagają działania. HACKjest gdzieś pomiędzy (i myślę, że prawie nigdy nie jest używany?).

Piotr
źródło
3
Dobra lista. Lubię też LAZY(nie tak krytyczne jak FIXME czy HACK) i OCD(znane nadmierne inżynierii).
Brendan Byrd
2
Czy naprawdę używasz XXX w ten sposób? Doszedłem do wniosku, że XXX ma znacznie wyższy priorytet, co oznacza „jest to coś, co musi zostać naprawione, zanim ten kod zostanie w ogóle poddany kontroli wersji”. W ten sposób jest używany w Google, automatycznie wymuszany, więc możesz zobaczyć XXX podczas sprawdzania kodu, ale nie można przesłać kodu, dopóki XXX nie zniknie. Dłuższe notatki do zrobienia można oznaczyć za pomocą TODO, które można przesłać, o ile dołączone jest czyjeś imię i nazwisko lub identyfikator błędu.
Don Hatch
21

Kilka uwag z propozycji ulepszenia języka Python z czerwca 2005 r., Która została odrzucona .

Wybór między FIXMEi XXXjest trudny.
XXXwydaje się być bardziej powszechny, ale znacznie mniej opisowy.
Ponadto XXXjest użytecznym symbolem zastępczym w fragmencie kodu
o nieznanej wartości.

Taka FIXMEjest preferowana pisownia.
Słońce to mówi XXXi FIXMEsą nieco inne, co daje XXXwiększą surowość.
Jednak w obliczu dziesięcioleci chaosu na ten temat i zbyt wielu milionów
programistów, na których Sun nie wpłynie, łatwo jest nazwać je synonimami.


PEP zaczyna się od,

Ten PEP został odrzucony. Chociaż społeczność może być zainteresowana,
nie ma potrzeby dostosowywania biblioteki standardowej do tego standardu.

...

Co to są Codetags?

Programiści powszechnie używają konwencji ad-hoc w komentarzach do kodu, aby służyć jako przypomnienia o sekcjach kodu, które wymagają dokładniejszej kontroli lub przeglądu. Przykłady znaczników obejmują FIXME, TODO, XXX, BUG, ale nie wiele więcej w powszechnym użyciu w istniejącym oprogramowaniem. Takie znaczniki będą odtąd nazywane tagami kodowymi . Te znaczniki kodów mogą pojawiać się w kodzie aplikacji, testach jednostkowych, skryptach, ogólnej dokumentacji lub gdziekolwiek jest to odpowiednie.


PEP to ciekawa lektura.

nik
źródło
10

Spójrz na PEP350 . To wyjaśnia wszystko TODO, XXXitd. Używam go codziennie, kiedy nie pamiętam dokładnie co jeden z tagami kod oznacza.

Ztyx
źródło
1
Czy wiesz, czy PEP350 jest źródłem tych etykiet? Czy znasz jakieś starsze dokumenty (z ery Uniksa) opisujące, jak używać tych etykiet?
Ярослав Рахматуллин
6

Używam, XXXponieważ łatwiej jest pisać niżTODO .

XXX jest przeznaczona na sytuacje, w których się spieszysz i wrócisz do tego samodzielnie.

TODO służy do przekazania go komuś innemu.

S.Lott
źródło
XXX oznacza „Spieszę się i wrócę do tego osobiście” TODO oznacza „To jest oficjalna część przyszłego żądania dotyczącego zaległości, które zostanie przydzielone komuś innemu”. To są dosłowne znaczenia.
S.Lott
2
A w którym RFC są te „dosłowne znaczenia”? Czy jest na to jakieś inne źródło?
Randall
6
@Randall: "citation"? Przepraszam, to tylko moje zrozumienie po przeczytaniu dużej ilości kodu.
S.Lott
3

Ze (starych) konwencji kodu Java :

Użyj XXX w komentarzu, aby oznaczyć coś, co jest fałszywe, ale działa. Użyj FIXME, aby oznaczyć coś, co jest fałszywe i zepsute.

Jaskółka oknówka
źródło
1

XXX jest skrótem od ostrzeżenia, które różni się nieco od NOTE, ale jest dość podobne do HACK. Może to być błąd w używanej bibliotece / kodzie innej firmy, a kod z // XXX: wskazuje, że jest to obejście z powodu błędu w kodzie innej firmy lub może oznaczać „ostrożność” dla kogoś, kto szuka / modyfikuje kod wskazujący, dlaczego coś jest zrobione w określony sposób, który w przeciwnym razie może wydawać się nieprawidłowy / nieelegancki na pierwszy rzut oka. HACK to termin ogólny oznaczający obejście problemu, który może występować w Twojej bazie kodu lub bibliotece innej firmy.

Divick
źródło
0

Uważam, że while FIXMEjest dla programisty i HACKdla opiekuna,XXX jest dla użytkownika.

Na przykład, jeśli zignorujesz XXXi wywołasz tę funkcję w innym miejscu, nie rozumiejąc, jak ona działa, może się zdarzyć coś nieoczekiwanego, a osoba zajmująca się tym problemem będzie nieszczęśliwa (przynajmniej ta, która dodałaXXX tak uważa). Możesz pomyśleć, że problem zniknie, jeśli po prostu nie użyjesz tej funkcji.

Ale FIXMEpoczujesz się godny po prostu naprawić kod, aby działał. A ponieważ HACKmożesz nie mieć lepszego wyboru, nawet jeśli go nie używasz.

Jeśli pisałeś XXXna swoim własnym kodzie i ktoś go użył, możesz czuć się nieszczęśliwy z powodów takich jak całkowite przepisanie tego kodu, a następnie zachowuje się on w zupełnie inny sposób i złamałeś kod kogoś innego. Ale jeśli zostawisz FIXMElub TODOzamiast tego, nie będziesz się tym przejmować.

user23013
źródło
0

Używam // XXX, więc nie muszę pamiętać numerów linii. Zamiast tego po prostu wyszukuję XXX, gdy chcę wrócić do tego fragmentu kodu.

Niebieska woda
źródło