Od jakiegoś czasu próbuję nauczyć się pisać testy jednostkowe dla mojego kodu. Początkowo zacząłem robić prawdziwy TDD, w którym nie pisałbym żadnego kodu, dopóki nie napisałem najpierw testu zakończonego niepowodzeniem. Jednak ostatnio miałem drażliwy problem do rozwiązania, który wymagał dużej ilości kodu. Po kilku tygodniach pisania testów, a potem pisania …
Wszyscy wiemy, że magiczne liczby (wartości zakodowane na stałe) mogą siać spustoszenie w twoim programie, szczególnie gdy nadszedł czas na modyfikację części kodu, która nie ma komentarzy, ale gdzie wytyczasz linię? Na przykład, jeśli masz funkcję, która oblicza liczbę sekund między dwoma dniami, czy zastępujesz seconds = num_days * 24 …
TD; DR: Było trochę zamieszania co do tego, o co pytałem, więc oto najważniejszy pomysł na pytanie: Zawsze chciałem, aby pytanie było takie, jakie jest. Być może początkowo nie wyraziłem tego dobrze. Ale intencja zawsze była „ modułowa, oddzielona, luźno sprzężona, odsprzężona, zrefaktoryzowany kod ” znacznie wolniejszy z samej swojej …
Jestem pewien, że istnieje termin na ponowną refaktoryzację, ale nie pamiętam go, a mój Google-fu mnie zawodzi! Refaktor przesuwa się, jeśli instrukcje, do których będą miały największy wpływ, na przykład zmieniając to $test = someFunctionThatReturnsABool(); for($x = 0; $x < 10000; $x++) { if ($test) { echo $x; } } …
Pracuję na dość dużej podstawie kodu. Setki klas, mnóstwo różnych plików, wiele funkcji, potrzeba więcej niż 15 minut, aby pobrać nową kopię itp. Dużym problemem związanym z tak dużą bazą kodu jest to, że ma całkiem sporo metod narzędziowych i takich, które robią to samo, lub kod, który nie używa …
Zgodnie z przyjętą odpowiedzią „ Racjonalne uzasadnienie preferowania zmiennych lokalnych zamiast zmiennych instancji? ” Zmienne powinny mieć możliwie najmniejszy zakres. Uprość problem do mojej interpretacji, oznacza to, że powinniśmy zmienić kod tego rodzaju: public class Main { private A a; private B b; public ABResult getResult() { getA(); getB(); return …
Na przykład widziałem niektóre kody, które tworzą taki fragment: Fragment myFragment=new MyFragment(); który deklaruje zmienną jako Fragment zamiast MyFragment, który MyFragment jest klasą potomną Fragment. Nie jestem usatysfakcjonowany tą linią kodów, ponieważ uważam, że ten kod powinien być: MyFragment myFragment=new MyFragment(); co jest bardziej szczegółowe, czy to prawda? Lub w …
Przeczytałem większość książek o refaktoryzacji Fowlera i dokonałem refaktoryzacji wielu aplikacji w mojej dużej i małej przeszłości. Jedną z trudniejszych rzeczy, których nauczam, jest „kiedy” refaktoryzować. Zwykle robię to w oparciu o przeczucie, które w przeszłości służyło mi wyjątkowo dobrze. Jednak kiedy wchodzimy w dyskusje z ludźmi na temat tego, …
Jest to nieco kontrowersyjny temat i myślę, że jest tyle opinii, ile jest programistów. Ale ze względu na to chcę wiedzieć, jakie są powszechne praktyki w biznesie (lub w miejscach pracy). W moim miejscu pracy mamy ścisłe wytyczne dotyczące kodowania. Jedna z nich poświęcona jest magicznym ciągom znaków / liczbom. …
Ostatnio znalazłem się w trudnym miejscu. Pracuję nad grą z programistą od prawie 8 miesięcy. Oboje zaczęliśmy jako początkujący programista około sierpnia ubiegłego roku, jest studentem CS na drugim roku, jestem z zawodu technikiem wsparcia IT i jestem samoukiem z mnóstwem książek i subskrypcji online. Problem, który ciągle widzę, polega …
Ten artykuł na temat długu technicznego ma kilka dobrych zalet, w tym: Praca nad „sprawami technicznymi” działa najlepiej, gdy opiera się na opowieściach. Baza kodu prawdopodobnie potrzebuje pracy wszędzie, ale wypłata zostanie uzyskana tylko tam, gdzie kod będzie przetwarzany z powodów związanych z użytkownikiem. Jeśli żadne wątki nie przejdą przez …
W innym pytaniu ujawniono, że jednym z problemów związanych z TDD jest utrzymywanie pakietu testowego w synchronizacji z bazą kodu podczas i po refaktoryzacji. Teraz jestem wielkim fanem refaktoryzacji. Nie zamierzam rezygnować z TDD. Ale doświadczyłem również problemów z testami napisanymi w taki sposób, że niewielkie refaktoryzowanie prowadzi do wielu …
Mam zamiar zapisać trochę ładunku ciągu w bazie danych. Mam dwie konfiguracje globalne: szyfrowanie kompresja Można je włączyć lub wyłączyć za pomocą konfiguracji w taki sposób, że tylko jedna z nich jest włączona, obie są włączone lub obie są wyłączone. Moja obecna implementacja to: if (encryptionEnable && !compressEnable) { encrypt(data); …
Czytałem ten artykuł i zastanawiałem się, czy pozbyliśmy się wszystkich instrukcji zamiany, zastępując je słownikiem lub fabryką, aby w moich projektach nie było żadnych instrukcji switch. Coś nie do końca się sumowało. Pytanie brzmi: czy instrukcje przełączające mają jakiekolwiek zastosowanie, czy też zastępujemy je słownikiem lub metodą fabryczną (przy użyciu …
Według Martina Fowlera refaktoryzacja kodu jest (wyróżnienie moje): Refaktoryzacja to zdyscyplinowana technika restrukturyzacji istniejącego kodu, zmieniająca jego wewnętrzną strukturę bez zmiany zewnętrznych zachowań . Jego sercem jest seria drobnych zachowań zachowujących transformacje. Każda transformacja (zwana „refaktoryzacją”) niewiele robi, ale sekwencja transformacji może spowodować znaczną restrukturyzację. Ponieważ każde refaktoryzacja jest niewielka, …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.