Mam kilka, z których jestem dumny, a niektóre z nich napisałem sam kilka lat temu. To niekoniecznie musi być błędny, tylko zły kod.
code-quality
bug
code-smell
James
źródło
źródło
Odpowiedzi:
Nie wiem, czy jestem dumny z tej poprawki, ponieważ była ona tak oczywista, ale najbardziej przerażającym kodem, jaki pamiętam, była poprawka.
Najwyraźniej poprzedni programista po prostu dodawał nowe wiersze za każdym razem, gdy nowy (zwykle irlandzki) użytkownik zaczął otrzymywać błędy w aplikacji.
Zostawię to jako ćwiczenie dla klasy, jak to zostało naprawione.
źródło
UserName='John O''Reily'
że się stanieUserName='John OReily'
(tak jak C łączy sąsiednie literały łańcuchowe), ale nie pomyślałem o brakującym'
:(Nie powinienem być z tego dumny, ale z jakiegoś powodu było to satysfakcjonujące.
Poza tym, że mam COBOL w szkole, nie miałem doświadczenia, ale byłem nisko człowiekiem na słupie totemowym i musieliśmy dostarczyć kompilatorowi kod źródłowy do outsourcera w celu sprawdzenia Y2K. Mieliśmy jeden plik COBOL z wieloma procedurami, które wywoływały się w nim, przypominając spaghetti, i był zbyt duży, aby załadować go w naszym obecnym IDE do skompilowania. Musiał zostać podzielony na co najmniej dwa pliki fizyczne, a te pliki oczywiście musiały mieć wszystko, co potrzebne w swoim własnym pliku. (A może istniał sposób na połączenie ich ze sobą, ale tak naprawdę nie znałem języka COBOL.)
W każdym razie wziąłem ten plik z około 100 000 wierszy i delikatnie rozdzieliłem dziesiątki procedur, aby znaleźć dwa zestawy procedur, które były od siebie niezależne i dlatego mogły istnieć w dwóch osobnych plikach, każdy około 50 000 linii. (Myślę, że maksimum, które kompilator mógł obsłużyć, to około 80 000 linii, więc musiało być dość równomiernie dopasowane).
Czytałem starożytny język, którego nie znałem i nadal byłem w stanie wykonać zadanie.
źródło
Wyjąłem kursor ze spustu i skróciłem czas na wstawienie 40 000 nowych rekordów z godziny do mniej niż minuty. Ostatecznie spowodowało to, że mogłem wstawić 21 milionów rekordów w czasie krótszym niż lodowaty, ale nigdy nie próbowaliśmy importu 20 milionów rekordów do czasu poprawki, więc nie mam statystyk dotyczących tego, ile czasu zaoszczędziliśmy.
źródło
Była podstawowa klasa do tworzenia okien dialogowych potwierdzenia dla różnych operacji na węzłach drzewa. Wystarczy, że podasz komunikat do wyświetlenia w oknie dialogowym, a akcja zostanie uruchomiona, jeśli zostanie potwierdzona. Niezły system, ale nie pozwalał na specjalną obsługę w przypadku, gdyby nie wybrano węzła drzewa. W rezultacie tekst w jednym z okien dialogowych brzmiał: „Proszę wybrać nie”. Jeśli wybierzesz opcję tak, zgłosił wyjątek. Rzeczywiście bardzo przyjemna obsługa.
Naprawiłem to, wyłączając nieprawidłowe operacje.
źródło
Najgorsze, co widziałem, to kod Java do wydobywania kluczowych zdań z korpusu tekstowego.
Szczerze mówiąc, to nic w porównaniu z niektórymi z naszych rzeczy, ale wciąż istnieje ogromna różnica w jakości przed i po. Rozważ następujące rzeczywiste kody przed i po jednej funkcji:
Przed (spróbuj dowiedzieć się, co robi, zanim spojrzysz na After!):
Po:
źródło
Moim pierwszym zadaniem programistycznym było pisanie instalatorów w InstallShield. Odziedziczyłem skrypt, który składał się z tysięcy linii bez żadnych funkcji , tylko gotos. To było oszałamiające. Przepisałem go, uczyniłem wszystko ładnym, modułowym i opartym na danych, tak że mogłem otrzymać pliki binarne / art / etc. i okazuje się, że nowy instalator zajmuje mniej niż godzinę, a nie tydzień + zajęło to poprzedniemu facetowi. Byłem z siebie bardzo dumny.
źródło
Myślę, że nic nie zbliża się do tego :
Poprawka? Ech, to nie powinno wymagać wielu wyjaśnień.
źródło