Biorąc pod uwagę wszystkie komentarze na temat przeszacowania, myślę, że brakuje pewnej ilości punktu (dobra okazja).
Nie chodzi o oszacowanie zajętego czasu, aby dokonać zmiany (tylko), a następnie dodanie, chodzi o oszacowanie czasu potrzebnego na zmodyfikowanie kodu (refaktoryzacja!), Aby doprowadzić go do punktu, w którym zmiana może być bezpiecznie wykonana, a następnie dokonać zmiana (prawdopodobnie nieco zmiksowana razem). Ok, to sprowadza się do tej samej rzeczy ... ale nie ma mowy o kręceniu się, rozciąganiu czy przeszacowywaniu, wystarczy powiedzieć, że aby to zrobić, najpierw muszę to zrobić i tyle czasu to zajmie w sumie. Kluczem tutaj jest to, że pracujesz w tych częściach systemu, od których zależy zmiana, i nic więcej - jeśli gdzieś jest okropny kod ... trudny, złap go, gdy tam jesteś.
Wracając nieco do pierwotnego pytania - po wielu latach sprowadza się to do mnie, kiedy wdrażasz coś, chyba że wiesz (nie wierzysz, nie oczekujesz (podejrzewasz?), Nie myślisz, ale wiesz ), że dodatkowe rzeczy to wymagane także wtedy, powinieneś zrobić wszystko, co konieczne, aby spełnić ten wymóg i nie więcej w tak uporządkowany i elegancki sposób, jak to możliwe.
Kiedy zaczynasz wdrażać następną rzecz - jakiś czas później - podejmujesz kroki niezbędne do wprowadzenia bazy kodu (i bazy danych itp.) Do stanu potrzebnego do wdrożenia tej funkcji tak schludnie i elegancko, jak to tylko możliwe. Refaktoryzacja polega na tym, że radzisz sobie z bałaganem, który powstaje naturalnie w miarę rozwoju projektu - i miejmy nadzieję, że unikniesz tworzenia więcej bałaganu (lub przynajmniej utrzymasz spójność poziomu).
Jednym z obszarów dyskusji jest tutaj „Zadłużenie techniczne” - to jak debet, musisz go spłacić, a im dłużej go pozostawiasz, tym większe są odsetki (w tym przypadku czas potrzebny na poprawienie) - co daje ci dobre argument za poświęceniem czasu na zminimalizowanie długu technicznego.
Tutaj też zaczynają pojawiać się testy jednostkowe i inne testy automatyczne (gdybym mógł zrobić tak dobrze, jak mówię, jestem pewien, że byłbym szczęśliwszy!) W połączeniu z odpowiednim serwerem kompilacji (który może uruchomić przynajmniej niektóre twoich testów). W połączeniu z tymi - ale o wartości same w sobie - są wzorce takie jak wstrzykiwanie zależności i odwracanie kontroli (nigdy nie jestem pewien, ile to te „te same” są), ponieważ ułatwiają zmianę instalacji hydraulicznej, a zatem radzą sobie ze zmianami w izolacja.
Wreszcie - pamiętaj, jeśli nie jest zepsute, nie naprawiaj tego. Sprzątanie kodu wyłącznie w celu uporządkowania może być satysfakcjonujące, ale jest również okazją do wprowadzenia błędów, więc może być bolesne, jeśli nie musisz go zmieniać i nie budujesz na nim, może lepiej pozostawić kilka grudek sam - możliwość naprawy lub wymiany w końcu się pojawi!