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
Odpowiedzi:
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ę.
źródło
Jak zawsze to zależy.
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.
źródło
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.
źródło
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.
źródło
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ę.
źródło
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?
źródło
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ę
źródło
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.
źródło
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.
źródło
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.
źródło
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:
źródło