Jak ustalić, czy w kontroli źródła jest przydatny usunięty kod?

9

Czytałem więc to pytanie. Czy powinienem usunąć kod, do którego nie ma odniesienia?

Niektóre z porad polegały na usunięciu kodu, do którego nie ma odniesienia, ponieważ kod ten znajduje się w kontroli źródła w celu późniejszego wykorzystania w razie potrzeby.

Jak zorganizujesz ten usunięty kod, aby późniejsza wersja ciebie (lub inny programista) mogła go później znaleźć? Czy tworzysz oddzielną gałąź lub jakoś tagujesz ją w kontroli źródła?

Nigdy wcześniej nie wskrzesiłem usuniętego kodu spod kontroli źródła, głównie używałem go do śledzenia zmian w kodzie, który jest nadal aktywny. Odniosłem się już do gałęzi, gdy zawierały czyjeś prace eksperymentalne, więc może to dobry sposób na oznaczenie interesujących fragmentów kodu, które są usuwane z pnia?

Peter Smith
źródło
o jakie pytania pytasz avout? brzmi jak svn
gnat
mam na myśli svn, ale myślę, że może mieć zastosowanie do dowolnej kontroli źródła, tak myślę?
Peter Smith
Mówisz: „To, co mam na myśli, to projekty anulowane lub przełożone” w odpowiedzi na odpowiedź. Myślę, że powinieneś edytować swoje pytanie, ponieważ różni się ono od „kodu bez odniesień”.
Pieter B

Odpowiedzi:

6

O ile nie eksperymentujesz w oddziale i nie jesteś jeszcze pewien, które rozwiązanie ostatecznie zostanie ponownie zintegrowane, zwykle nie odwołujesz się do usuniętego kodu.

W bardzo rzadkich przypadkach możesz jawnie kopać w poszukiwaniu usuniętego kodu, który niejasno przypomina sobie rozwiązanie problemu, który masz teraz . Ale bardziej typowym powodem, dla którego widzisz usunięty kod, jest przeglądanie rejestru, aby zrozumieć coś o bieżącym kodzie lub zachowaniu aplikacji w odniesieniu do jej kodu historycznego lub zachowania.

W szczególności możesz być ...

  • przeprowadzanie ogólnego przeglądu kodu / rozumienie refaktora
  • szukam zatwierdzenia, które wprowadziło błąd X.
  • zaspokajanie ciekawości / szukanie zmian, które rozwiązały błąd
  • ponowne wdrożenie funkcji lub podobnej funkcji
  • zrozumienie kodu lub danych, które wydają się działać w połączeniu z kodem, który nie istnieje

... itd.

W takich przypadkach zazwyczaj nie wskrzeszasz starego kodu. Jesteś po prostu zrozumieć coś, czego widzieć teraz za pomocą kodu usunięte do kontekstu lub wskazówek.

svidgen
źródło
4

Myślę, że odpowiedź brzmi: zdecydowana większość programistów nie dba o odniesienie do usuniętego kodu. Z kilku powodów. Oto kilka powodów, które przychodzą mi na myśl:

  • Prawdopodobnie najważniejsze, czyste lenistwo ...

  • Większość nigdy nie odczuwała potrzeby wskrzeszenia jakiegoś kodu, więc nie mają doświadczenia, które motywuje ich do ułatwienia wskrzeszania kodu.

  • Większość usuniętego kodu jest usuwana z określonego powodu. Zwykle jest zastępowany przez inny, lepszy, funkcjonalnie równoważny lub mocniejszy kod. Dlaczego ktokolwiek miałby chcieć wskrzesić gorszy kod?

    Zauważ, że jest to również kwestia psychologiczna: większość programistów jest dość dumna z wyników swojej pracy. Jak mogło się kiedykolwiek wydawać, że to, co zastąpili, miało pewną wartość?

  • Ponieważ większość kodu nie jest czysto usuwana, ale zastępowana, interfejsy, które zostały zmienione podczas przejścia, dostarczają wystarczających informacji, jeśli naprawdę trzeba wyśledzić usunięty kod z powodu pewnych regresji wprowadzonych przez nowy kod.

Ale niezależnie od tego, ile mniej lub bardziej uzasadnionych powodów możesz pominąć martwy kod, myślę, że to po prostu „nie przejmuj się” ze strony programistów. I nawet jeśli spróbujesz oznaczyć usunięte elementy w taki czy inny sposób, bądź przygotowany na całkowite zignorowanie tego wysiłku ...

cmaster - przywróć monikę
źródło
Chyba spróbuję odpowiedzieć dlaczego. Jeśli zastąpiony kod ma sens, po krótkim czasie usunięty kod nie jest już tak naprawdę potrzebny. To, co mam na myśli, to projekty anulowane lub przełożone. Zwłaszcza te, w których opracowano lub zmieniono pewną liczbę funkcji, ale ostatecznie nie w pełni ukończono i nie zastosowano ich w bieżącej produkcji.
Peter Smith
1
@PeterSmith: Powinieneś utworzyć osobne gałęzie dla takiego kodu. Wówczas nie ma potrzeby usuwania kodu, ponieważ i tak nie istnieje on w działającej gałęzi.
JacquesB
Dodając do tego, co powiedział @JacquesB, jeśli masz jakiś kod, który w ogóle nie jest używany, zwykle staje się dość przestarzały. Być może będziesz w stanie przywrócić martwą gałąź po roku, po pięciu latach będziesz musiał zrestartować od zera. Martwa gałąź może nadal być użyteczna jako źródło pomysłów, ale sam kod prawdopodobnie nie będzie już przydatny.
cmaster
1

To pytanie prawdopodobnie opiera się na „Jak zachować identyfikowalność swoich kontroli VCS względem bazy danych błędów i wymagań systemowych?”

Czasy, w których ludzie przechodzą do wskrzeszenia kodu z kontroli źródła, to zwykle czasy, w których dowiadujesz się, że coś nieumyślnie się zepsuło i trzeba je przywrócić.

Najważniejszą rzeczą w tym scenariuszu dla kogoś, kto szuka określonego fragmentu usuniętego kodu, jest to, że może łatwo go prześledzić, przeglądając bazę danych wymagań i narzędzie do śledzenia błędów; ponieważ prawdopodobnie szukają określonego wymagania lub słów opisujących funkcjonalność. Jest mało prawdopodobne, aby znali nazwę pliku źródłowego lub usuniętą klasę / funkcję.

Jeśli chcesz śledzić ciekawy / eksperymentalny kod, który należy usunąć przed wydaniem, możesz po prostu prześledzić go za pomocą biletów „błędów” w stylu „Usuń nieużywany kod dla ...” . A może wprowadzić do systemu nowy typ biletu dla funkcji Prototype .

Aby odpowiedzieć bezpośrednio na pytanie - nie używaj gałęzi / tagów w systemie VCS do śledzenia usuniętego kodu - skorzystaj z narzędzia do śledzenia zmian.

Ben Cottrell
źródło
0

Ta rada jest przeznaczona dla osób, które przechowują przestarzały kod w bazie danych „na wszelki wypadek”. Ponieważ kod nadal będzie istniał w kontroli źródła, nie powinieneś obawiać się jego usunięcia. Naprawdę nie organizujesz usuniętego kodu jako takiego, ponieważ chodzi o to, że nie jest już potrzebny. Po prostu dodajesz komunikat zatwierdzenia, który wskazuje, co zostało zmienione i usunięte w zatwierdzeniu. Najbardziej odpowiedni komunikat zatwierdzenia dla usuniętego kodu to komunikat w momencie dodania kodu, a nie komunikat, gdy został ponownie usunięty.

„Praca eksperymentalna” to naprawdę inna kwestia. Powinieneś mieć do tego oddzielny oddział.

JacquesB
źródło