Autor Wątek: Znaczniki w źródle.  (Przeczytany 4450 razy)

Offline koirat

  • Użytkownik

# Listopad 13, 2013, 20:51:36
Nie dokładanie chodzi mi o znaczniki typu xml.

Mam na myśli znaczniki własne które są informacją dla programisty (szczególnie dla osoby która je pisze) i nie dokumentują sposobu w jaki działa kod.

Osobiście używam formatu //{znacznik} gdyż wstawiam je jako komentarze.
W tym momencie stosuje dwa rodzaje:

//TODO {text} - Tu dopisuje co mógł bym jeszcze zrobić np w danej funkcji/klasie albo jakie optymalizacje mógł bym wprowadzić w przyszłości.

//Hidden Variable - stosuje w momencie kiedy używam jakiejś stałej np. wewnątrz funkcji bądź klasie. A którą w przyszłości być może będę chciał udostępnić na zewnątrz, np aby pobrać dla niej wartość z pliku konfiguracyjnego.

Jako że dość sporo moich //TODO zaczęło dotyczyć optymalizacji zastanawiam się nad wprowadzeniem kolejnego //OPTIMIZE.

Znaczniki w pewnym ustalonym standardzie oczywiście po to aby później łatwo je było znaleźć w źródle za pomocą wyszukiwania.

Czy stosujecie jakieś takie elementy podczas pisania aplikacji ?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Xion

  • Redaktor
    • xion.log

# Listopad 13, 2013, 21:25:26
Cytuj
Czy stosujecie jakieś takie elementy podczas pisania aplikacji ?
Często i gęsto. Powiedziałbym nawet, że uprawiam TODO-driven development :)

Cytuj
W tym momencie stosuje dwa rodzaje:
KISS. Praktycznie wszystkie sytuacje o których wspomniałeś, i 99% innych pokrywa zwykle TODO. Niektórzy stosują jeszcze FIXME/XXX dla sytuacji gdy coś jest w oczywisty sposób zepsute ale mimo to "działa".

Jeszcze jednym trikiem, którego nauczyłem się w obecnej firmie, jest to, by zawsze podpisywać się pod danym TODOsem, np.:
// TODO(xion): Extract into a FlorbFactory.Dzięki temu osoba, która będzie chciała je usunąć może zawsze zapytać "co autor miał na myśli" wprowadzając dany znacznik.

Offline walkinguer

  • Użytkownik

  • +1
# Listopad 13, 2013, 21:51:20
A no po to wymyślili nam komentarze w językach programowania, aby ich używać. Ja osobiście komentuję nawet zmienne, żeby szybko sobie przypomnieć co mają przechowywać, oraz funkcje, żeby pamiętać ich działanie. Niestety mam taką pamięć że jednego dnia napiszę funkcję drugiego mogę zastanawiać się "..jak to cholerstwo w ogóle działa..".

Offline koirat

  • Użytkownik

# Listopad 13, 2013, 22:12:59
Komentowanie o którym wspominasz @walkinguer to jednak coś zupełnie innego od tego o czym tu mówimy, nie chodzi nam o komentowanie działania algorytmu.

@Xion
Moim zdaniem dość ważne jest rozróżnienie pomiędzy rzeczami które muszą być zrobione a tymi które mogą być. I dlatego sensownym widzę zastosowanie różnych znaczników.
Można by się nawet pokusić o np. taki system //TAG(TODO)  //TAG(HiddenVariable)  //TAG(Optimize)
Oraz w przypadku kilku programistów opcja //TAG(TODO)(Xion)

Offline yarpen

  • Użytkownik

  • +1
# Listopad 13, 2013, 22:21:56
Format to sprawa drugorzedna, ale warto dobrac go tak, zeby IDE ktore supportuje wyszukiwanie tych znacznikow moglo je odnalezc (np. Visual Studio wyswietla ladna task liste na podstawie znacznikow w kodzie).

Offline Veldrin

  • Użytkownik

# Listopad 13, 2013, 23:17:05
Przy okazji //TODO (person) polecam też zdefiniować, jaki zapis do tyczy TODO, które np. ja zrobię, nie ruszać, a które zlecamy zrobić komuś ;).

Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

  • +1
# Listopad 13, 2013, 23:58:50
Ja stosuję w swoim prywatnym kodzie takie znaczniki:

// TODO ... - kiedy coś przydałoby się zrobić, dokończyć, naprawić
// TODO OPTIMIZE ... - kiedy coś przydałoby się zoptymalizować

Potem mogę wyszukiwać je zwykłym wyszukiwaniem tekstowym w całej solucji Visual C++.

Natomiast komunikaty tego rodzaju dłuższe niż jedna linijka nadająca się do wpisania w jakimś miejscu w kodzie, np. pomysł na zupełnie nową funkcję, spisuję w dokumentacji (czyli w moim przypadku - w plikach tekstowych), w sekcji "TODO".

Offline Karol

  • Użytkownik

# Listopad 14, 2013, 00:28:02
W Delphi był wbudowany w edytor tagów ToDo, działało to na takiej zasadzie, że można było wpisać to z palca, albo za pomocą małego okienka ustawiając kilka parametrów oprócz opisu (osobę odpowiedzialną, priorytet i kategorię). Było też specjalne dokowalne okienko, które zbierało wszystkie takie komentarze z całego projektu w formie tabeli i można było sobie posortować wg powyższych parametrów i odhaczyć jako zrobione (wtedy ToDo zamieniało się na Done). Cholernie mi tego brakuje teraz w innych edytorach.

Offline Xender

  • Użytkownik

# Listopad 14, 2013, 00:52:27
Dzięki temu osoba, która będzie chciała je usunąć może zawsze zapytać "co autor miał na myśli" wprowadzając dany znacznik.
Można również użyć git blame lub odpowiednika, jeśli korzysta się z kontroli wersji.

Ostatnio zacząłem tagować TODO w inny sposób - mianowicie, jeśli coś jest bardzo skopane (np. zahardkodowana stała w kilku miejscach, żeby na szybko zobaczyć, czy działa), to w każdej linijce robię
// TODO TAG_DANEGO_PROBLEMU ewentualny komentarz
Komentarz wtedy, jeśli tag nie mówi wszystkiego (np. HARDCODED_VELOCITY mówi).
Wtedy mogę przeszukać źródła na obecność wszystkich TODO, na obecność TAGU_DANEGO_PROBLEMU, no i mam komentarz.

Komentarz w kilku miejscach może jest redundantny, ale jak na coś, co ma wylecieć z rozwiązaniem faktycznego problemu, nie jest to chyba problem sam w sobie.
« Ostatnia zmiana: Listopad 14, 2013, 01:00:45 wysłana przez Xender »

Offline yarpen

  • Użytkownik

  • +3
# Listopad 14, 2013, 01:01:26
Swoja droga, polecam kiedys zrobic test po kilku latach (o ile pracujemy z tym samym kodem tak dlugo) - wyszukac slowa typu TODO/HACK itd. (jeszcze ciekawiej jezeli sie sprawdzi daty tych komentarzy). W pewnej firmie znalazlem kiedys TODO z 1998 (w ~2009).

Offline Xender

  • Użytkownik

# Listopad 14, 2013, 01:34:03
^ Aż mi się przypomniało - ilość przekleństw w Linuxie: http://www.vidarholen.net/contents/wordcount/

Offline koirat

  • Użytkownik

# Listopad 14, 2013, 01:42:10
Na szczęście nie tak dużo w stosunku do ilości napisanych linijek. Wystarczy że język potoczny jest wulgarny po co jeszcze robić kanał z kodu źródłowego. Pomijając to że te słowa nie niosą żadnej sensownej treści.

Offline Xion

  • Redaktor
    • xion.log

# Listopad 14, 2013, 02:25:04
Cytuj
Można również użyć git blame lub odpowiednika, jeśli korzysta się z kontroli wersji.
blame staje się prawie bezużyteczny, jeśli kod był przenoszony i refaktorowany. Wszystkie oczywiście da się odzyskać z VCSa, tylko że w pewnym momencie przypominać to będzie archeologię :)

@koirat: Od rzeczy, które muszą być zrobione masz issue tracker. TODOsami oznacza się miejsca gdzie trzeba było wprowadzić ów niesławny "technical debt", czyli potecznie mówiąc hacki.

Offline koirat

  • Użytkownik

# Listopad 14, 2013, 03:06:48
TODO to todo, HACK to hack, nie mieszajmy tych dwóch pojęć :)

Oczywiście system o którym wspomniałeś ma sens, szczególnie przy pracy w grupie.
Ale //TODO itp. w źródle też się bardzo przydaje.

Offline laggyluk

  • Użytkownik
    • twitter

# Listopad 14, 2013, 09:56:45
W Delphi był wbudowany w edytor tagów ToDo
wciąż jest ;)