Czy należy naprawić istniejące wcześniej defekty podczas pracy nad czymś innym?

15

Zagadka: W trakcie pracy nad nową funkcją lub naprawy usterki w kodzie występuje problem ze starszymi wersjami. Co powinieneś zrobić? Napraw to i zaryzykuj zachowanie kodu. Albo działał do tej pory przez jakiegoś fuksa, albo wada nie została wykryta lub nikogo nie warto zgłaszać. Czy powinieneś zostawić go w spokoju i pozwolić problemowi na utrudnienie późniejszej pracy kodu? Naprawienie problemu wydłuży czas wykonania pierwotnego zadania i zmusi cię do testu regresji. Niewielu doceni pracę. Naprawienie tego wydaje się jednak jakoś słuszne. Kod z mniejszą liczbą problemów jest łatwiejszy do refaktoryzacji i rozbudowywania.

Ciągle znajduję się w tej sytuacji, pracując nad modernizacją aplikacji internetowej. Nie mogę powiedzieć, czy jestem obsesyjny czy honorowy, kiedy zaczynam pracę nad tymi starymi błędami. Jak radzisz sobie z tymi sytuacjami?

Dzięki, Corey

Corey
źródło

Odpowiedzi:

10

Pracuję w bardzo małym zespole, więc to zależy od zmiany:

Jeśli jest to mała, oczywista poprawka błędu, zdecydowanie wybieram. Dodam także dodatkowe komentarze, jeśli będę musiał przejrzeć czyjś kod i inne drobne ulepszenia, które są dla mnie „regułą harcerską”.

Jeśli kod jest tak spleciony, że musisz zapytać „Zmieni to coś, popsuję coś i wymaga przetestowania”, to nie, nie powinieneś tego zmieniać. Pokaż to w swoim systemie śledzenia błędów, jeśli cię to martwi.

Nawiasem mówiąc, dlatego próbuję kodować mniejsze metody za pomocą bardziej oczywistych podpisów typu. Jeśli wiesz, że nie ma żadnych skutków ubocznych i możesz dopasować ins in out, możesz naprawić, zmienić kolejność lub dostosować dowolny kod wewnętrzny bez ryzyka.

Ale nie przejmuj się, że brak uznania jest powodem, aby nie naprawiać znalezionych błędów lub ulepszać bazę kodu z jakiegokolwiek powodu. Jeśli nic więcej, jesteś życzliwy dla przyszłości, która z pewnością wróci tam, aby naprawić coś innego.

EDYCJA: Musisz także uważać na swój czas w projekcie. Oczywiście w napiętych terminach musisz skupić się na wykonaniu głównej pracy, ale jeśli jesteś po prostu „normalnym obciążeniem”, myślę, że trochę sprzątania tutaj i tam uszczęśliwia wszystkich na dłuższą metę.

CodexArcanum
źródło
+1 za wzmiankę o zasadzie zwiadowcy „Zostaw obozowisko czystsze, niż go znalazłeś”.
Martin Wickman
8

Jak zawsze to zależy.

  • Jeśli jest to trywialne i jesteś pewien, że możesz to naprawić, napraw to.
  • Jeśli jest wiele testów jednostkowych, więc możesz być całkiem pewien, że niczego nie zepsułeś, napraw to.
  • W przeciwnym razie dodaj // TODO, dodaj go do śledzenia błędów, cokolwiek

Zasadniczo przeprowadzasz ocenę ryzyka: jakie jest ryzyko zmiany a nie zmiany. Jeśli nie czujesz, że masz wystarczające doświadczenie (z programowaniem ogólnie lub z systemem w szczególności), poproś kogoś innego w zespole.

Ben Hughes
źródło
5

Pragmatic Programmer nazywa te „zepsute okna”.

Jeśli nie naprawisz uszkodzonych okien, istnieje tendencja do tworzenia spirali jakości kodu w dół. Im więcej z nich, tym trudniej je naprawić, dlatego jest mniej prawdopodobne, że zostaną naprawione.

To, czy naprawić je teraz czy później, zależy od oceny. Czy to prosta poprawka? Czy na pewno kod działa tak, jak myślisz? Czy to może odwracać uwagę od bieżącego zadania? Czy masz ograniczenia czasowe? Czy to może wprowadzić więcej błędów?

Przynajmniej zaznacz element w systemie śledzenia i upewnij się, że zostanie on naprawiony później. Ważne jest, aby zaznaczyć go w systemie śledzenia, nawet jeśli zdecydujesz się go teraz naprawić, aby upewnić się, że jest on również przetestowany i udokumentować zmiany.

Dominique McDonnell
źródło
0

Jeśli jest to oczywisty błąd, taki jak naruszenie zasad bezpieczeństwa, uszkodzenie danych lub zgłoszenie wyjątku, który zostanie wyświetlony użytkownikowi, napraw go. W przeciwnym razie zapytaj kogoś, kto zna bazę kodów lepiej niż ty.

Mason Wheeler
źródło
Wydaje się rozsądne. Co z czymś, co na pozór jest niewielkie, na przykład zniekształcony HTML, który toleruje przeglądarka w trybie dziwactwa? Błąd w tym przypadku wyrządza niewielką szkodę, ale wiem, że utrudni życie na drodze, jeśli nowa zawartość / wtyczka wymaga renderowania strony w trybie zgodnym ze standardami.
Corey,
@Corey: Tak, to jest coś, co chciałbyś skonsultować z bardziej doświadczonym programistą. Masz opinię i zgadzam się, że to prawdopodobnie właściwa decyzja, więc przedstaw swoją sprawę, ale pamiętaj, że mogą istnieć inne czynniki, o których nie wiesz, że facet, który pracował nad tym od 5 lat, rozumie.
Mason Wheeler
0

To zależy, jeśli jest to mały błąd, w którym masz pewność, że twoja poprawka ma niewielki wpływ, to osobiście naprawiłbym to jako część innej pracy, a następnie poinformowałam PM.

Jeśli ma żadnego ryzyka dla klienta, użytkownik lub firma przynieść go z kierownikiem projektu i omówienie kurs naprzód. Ich zadaniem jest ocena ryzyka, więc zwróć na to uwagę i uzasadnij to. Następnie uszanuj ich decyzję.

Thomas James
źródło
0

Nasi testerzy tego nie znoszą. O ile nie jest to bardzo trywialne, logujemy go w bazie błędów, a następnie przydzielamy do wydania i zapisujemy testy regresji. Jeśli programiści zamierzają wprowadzić zmiany, których nie ma w harmonogramie, jak możesz dotrzymać terminu?

Craig
źródło
Czasami wykonanie drobnej poprawki błędu nie zajmuje więcej czasu niż zignorowanie jej i jest bardziej wydajne niż naprawienie jej później.
David Thornley,
Dlatego powiedziałem, chyba że jest to banalne. Ale wszystko, co zajmie więcej niż 15 minut, powinno być zarejestrowane.
Craig
0

Byłem w zespołach, w których wady niekrytyczne lub naruszenia standardu są zgłaszane jako wada „słabego kodu”. Powiedziałbym, że osoba, która znajdzie poważną wadę, ma obowiązek rzucić jakąś flagę

Tim Claason
źródło
0

to zależy od błędu. głównym problemem jest wprowadzenie nowych błędów. Lepiej poradzić sobie ze znanym problemem niż z nieznanym. Jeśli jest to proste, powiedzmy zmiana tekstu lub prosty błąd logiczny, naprawimy to, w przeciwnym razie zostawmy to w spokoju.

Należy zauważyć, że jesteśmy małym sklepem z 4 deweloperami i stażystą, a naprawiony przeze mnie błąd jest prawdopodobnie błędem, który stworzyłem.

Muad'Dib
źródło
0

Jeśli kod jest oczywiście nieprawidłowy, poprawka jest dość prosta i uważasz, że ryzyko wpłynięcia na użytkowników jest niskie, to idź. Wszystko sprowadza się do profesjonalnego osądu.

Musisz jednak pamiętać, że jeśli go znalazłeś, prawdopodobnie użytkownicy tego nie zrobili, inaczej by to zgłosili. Zamiast spędzać czas na rozwiązywaniu problemów, których użytkownik nigdy nie może napotkać, lepiej jest spędzać ten czas na rozwiązywaniu problemów, które powodują problemy użytkowników.

Jason
źródło
Jeśli użytkownik znajdzie błąd, jak często denerwują go Twój produkt i Twoja firma, ale nie zgłaszają go? Zgaduję wysoki procent.
Craig McQueen
0

Najpierw dobrze udokumentuj obserwacje, a później zdecyduj, czy to naprawić.

Przeprowadź formalną dyskusję (np. Na regularnym spotkaniu) lub nieformalną dyskusję (np. Podczas lunchu) ze swoimi kolegami i dokonaj zmian po uzyskaniu większej pewności co do zachowania kodów, które zamierzasz naprawić.

Chociaż wydaje ci się, że jest to błąd / wada, tym razem może być „funkcją”. Może to być źle zaimplementowane rozwiązanie obejścia niektórych przypadków narożnych w ostatniej chwili poprzedniego wydania, a „czysta poprawka” może przywrócić niektóre wcześniej rozwiązane problemy.

RRR
źródło
0

Pokonam ten trend tutaj. Jeśli nie jesteś na bardzo wczesnym etapie tworzenia prototypu, nie powinieneś go natychmiast naprawiać, powinieneś zgłosić błąd. Ma to kilka zalet:

  • zespół może to ocenić. Czy to prawdziwy błąd, jakie jest ryzyko jego naprawienia?
  • kierownictwo może zdecydować, czy jest wystarczająco ważne, aby uwzględnić wpływ harmonogramu na uwzględnienie go w tej wersji
  • metodę wykrywania można dodać do zestawu testów, miejmy nadzieję w dość ogólny sposób, aby znaleźć podobne błędy.
  • dostarcza cennych danych o tym, ile błędów prześlizguje się przez poprzednie fazy
AShelly
źródło