2009-09-21 7 views
78

Widziałem to wiele w kodzie, nawet vim zaznacza to jako specjalny przypadek. #TODO i #FIXME są dwoma innymi znacznikami poprawek vim highlights, ale co oznacza #XXX?Jakie jest znaczenie #XXX w komentarzach do kodu?

+3

To jest "zły" TODO ... –

+5

Pytanie dotyczy pytania o najlepsze kodeki lub komentarze w programowaniu w języku Python. Istnieje dyskusja Python Enhancement Proposal na ten temat. Pytanie zasługuje na zatrzymanie na SO. Mogło być jednak lepiej napisane. – nik

Odpowiedz

87

XXX w komentarzu jest zwykle heads-up. Może to być:

  • Coś, co nie zostało całkowicie zaimplementowane.
  • Coś, co powinno zostać naprawione później.
  • Podświetlanie możliwego problemu.
  • Coś, czego nie jesteś pewien, pytanie.

ja często preferowane tag bardziej opisową jak FIXME lub TODO lub HACK. XXX jest często używany jako haczyk dla powyższych.

Wyszukiwanie "XXX" na FreeBSD code cross reference jest dobrym przykładem wielu zastosowań. Istnieją tysiące ...

+0

Co zabawne, używam tego na własną rękę. XXX lub #XXX zasadniczo wywołuje kompilator i przypomina mi, żebym wrócił do czegoś. Ogólnie referencje wskaźnika lub nieznana wcześniej wartość lub nazwa zmiennej. – bobby

+4

Potwierdziło to moje oryginalne przypuszczenie. Jest to po prostu znacznik "catch all", który wskazuje innym programistom na podkreślenie tego komentarza jako czegoś, na co warto zwrócić uwagę. –

15

Niektóre notatki od June 2005 Python Enhancement Proposal that was rejected.

Wybór między FIXME i XXX jest trudny.
XXX wydaje się być bardziej powszechne, ale znacznie mniej opisowe.
Ponadto XXX jest przydatnym elementem zastępczym w kodzie
o wartości nieznanej.

Tak więc preferowana jest pisownia FIXME.
Słońce mówi, że XXX i FIXME są nieco inne, co daje XXX wyższe nasilenie.
Jednak z dziesięcioleciami chaosu na ten temat i zbyt wieloma milionami twórców, którzy nie będą pod wpływem Sun, łatwo można słusznie nazwać je synonimami.


PEP Rozpoczynające się,

PEP ten został odrzucony. Chociaż społeczność może być zainteresowana, nie ma potrzeby, aby biblioteka standardowa była zgodna z tym standardem.

...

Jakie są Codetags?

Programiści stosują powszechnie konwencje znaczników ad hoc, aby wyświetlać jako przypomnienia sekcji kodu, które wymagają bliższej inspekcji lub przeglądu . Przykłady znaczników obejmują: FIXME, TODO, XXX, BUG, ale jest ich wiele w powszechnym użyciu w istniejącym oprogramowaniu. Takie oznaczenia będą odtąd nazywane codetags. Te kodeki mogą pojawić się w kodzie aplikacji, testach jednostkowych, skryptach, ogólnej dokumentacji lub tam, gdzie jest to odpowiednie.


PEP to interesująca lektura.

2

Symbol zastępczy, zwykle co oznacza kod się odnosi, to:

  • brzydki
  • Scary
  • Magia

lub gorzej.

+4

dlaczego tak jest? Myślę, że #hack jest bardziej odpowiedni. Z własnego doświadczenia i innej odpowiedzi wynika, że ​​jest to "ogólne spojrzenie na mnie". –

4

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

XXX jest na czas, gdy się spieszysz i wróci do tego sam.

TODO jest na czas, gdy trzeba go przekazać komuś innemu.

+0

XXX oznacza "Spieszę się i wrócę do tego samego" TODO oznacza "Jest to oficjalna część przyszłej prośby o zaległości zostanie przypisany komuś innemu. " To są dosłowne znaczenia. –

+1

A w których RFC są to "dosłowne znaczenia"? Czy jest tam jakieś inne odniesienie? – Randall

+5

@Randall: "cytowanie"? Przepraszam, to tylko moje zrozumienie po przeczytaniu dużej ilości kodu. –

53
  • NOTE: Opis działania kodu (gdy nie jest to oczywiste).
  • XXX: Ostrzeżenie przed możliwymi pułapkami, może być używane jako NOTE:XXX:.
  • HACK: Niezbyt dobrze napisany lub źle sformułowany kod do obejścia problemu/błędu. Powinien być używany jako HACK:FIXME:.
  • FIXME: To działa, ale można to zrobić lepiej. (zazwyczaj kod napisany w pośpiechu, który wymaga przepisania).
  • BUG: Tutaj jest problem.
  • TODO: Nie ma problemu, ale kod dodatków musi zostać zapisany, zwykle gdy coś pomijasz.

Przynajmniej tak mnie uczono na temat tych tagów. Zasadniczo pierwsze dwa (NOTE i XXX) są używane w celach informacyjnych i żadne działanie nie jest wymagane. Podczas gdy ostatnie trzy (FIXME, BUG i i) wymagają działania. HACK jest gdzieś pośrodku (i rzadko kiedy używam?).

+2

Dobra lista. Lubię też 'LAZY' (nie tak krytyczny jak FIXME lub HACK) i' OCD' (znany zbyt intensywny). –

0

XXX jest skrótem od caveat, który różni się nieco od NOTE, ale jest dość podobny do HACK. Może to być błąd w używanej bibliotece/kodzie strony trzeciej, a kod z // XXX: wskazuje, że jest to obejście z powodu błędu w kodzie strony trzeciej lub może oznaczać "ostrożność" dla kogoś szukającego/modyfikującego kod wskazujący, dlaczego coś jest wykonane w określony sposób, który w przeciwnym razie może wydawać się nieprawidłowy/nieelegancki w pierwszym wyglądzie.HACK jest ogólnym terminem oznaczającym obejście problemu, który może występować zarówno we własnej bazie kodu, jak i bibliotece strony trzeciej.

0

Wierzę, że podczas gdy FIXME jest dla programisty, a HACK jest dla opiekuna, XXX jest dla użytkownika.

Na przykład, jeśli zignorować XXX i wywołać tę funkcję w innym miejscu, bez zrozumienia, jak to działa, coś nieoczekiwanego może się zdarzyć, a osoba zajmująca się tą kwestią będzie nieszczęśliwy (przynajmniej ten, który dodał XXX tak myśli). Możesz myśleć, że problem zniknie, jeśli po prostu nie użyjesz tej funkcji.

Ale dla FIXME poczujesz się godny, aby po prostu naprawić kod, aby działał. I dla HACK, możesz nie mieć lepszego wyboru, nawet jeśli go nie używasz.

Jeśli napisałeś XXX na swoim własnym kodzie i ktoś z niego korzystał, możesz czuć się nieszczęśliwy z przyczyn takich jak Ty, przepisać go całkowicie, a następnie zachowywać się w zupełnie inny sposób, a ty złamałeś czyjś kod. Ale jeśli zamiast tego opuścisz FIXME lub TODO, nie będziesz się tym przejmować.

4

Spójrz na PEP350. Objaśnia to wszystkie z TODO, XXX itp. Używam go codziennie, gdy nie pamiętam dokładnie, co oznacza jeden z tagów kodu.

1

Od (stary) Java code conventions:

Zastosowanie XXX w komentarzu do flagi coś, co jest fałszywe, ale działa. Użyj opcji FIXME, aby oznaczyć coś, co jest fałszywe i uszkodzone.