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?
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 ...
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?).
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.
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.
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.
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.
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ć.
Odpowiedzi:
XXX
w komentarzu jest zwykle ostrzeżeniem. Mogłoby być:Często wolałem bardziej opisowe tagi, takie jak
FIXME
lubTODO
lubHACK
.XXX
jest 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 ...
źródło
TODO
lubXXX
zamiast tego), ale tak bym to zinterpretował.NOTE
: Opis działania kodu (gdy nie jest to oczywiste).XXX
: Ostrzeżenie o możliwych pułapkach, może być używane jakoNOTE:XXX:
.HACK
: Niezbyt dobrze napisany lub zniekształcony kod, aby obejść problem / błąd. Powinien być używany jakoHACK: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 (
NOTE
iXXX
) są używane w celach informacyjnych i nie są wymagane żadne działania. Podczas ostatnich trzech (FIXME
,BUG
iTODO
) wymagają działania.HACK
jest gdzieś pomiędzy (i myślę, że prawie nigdy nie jest używany?).źródło
LAZY
(nie tak krytyczne jak FIXME czy HACK) iOCD
(znane nadmierne inżynierii).Kilka uwag z propozycji ulepszenia języka Python z czerwca 2005 r., Która została odrzucona .
PEP zaczyna się od,
...
PEP to ciekawa lektura.
źródło
Spójrz na PEP350 . To wyjaśnia wszystko
TODO
,XXX
itd. Używam go codziennie, kiedy nie pamiętam dokładnie co jeden z tagami kod oznacza.źródło
Używam,
XXX
ponieważ ł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.źródło
Prawdopodobnie dotyczy to przypadków, z którymi nie wiesz, jak sobie poradzić.
Zobacz to: Widok listy instrukcji TODO / FIXME / XXX / HACK
tekst alternatywny http://editra-plugins.googlecode.com/svn/wiki/images/commentbrowser/cb_screenshot.PNG
źródło
Ze (starych) konwencji kodu Java :
źródło
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.
źródło
Uważam, że while
FIXME
jest dla programisty iHACK
dla opiekuna,XXX
jest dla użytkownika.Na przykład, jeśli zignorujesz
XXX
i 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
FIXME
poczujesz się godny po prostu naprawić kod, aby działał. A ponieważHACK
możesz nie mieć lepszego wyboru, nawet jeśli go nie używasz.Jeśli pisałeś
XXX
na 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 zostawiszFIXME
lubTODO
zamiast tego, nie będziesz się tym przejmować.źródło
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.
źródło