Pytania otagowane jako refactoring

Refaktoryzacja to zdyscyplinowana technika restrukturyzacji istniejącego kodu, zmieniająca jego wewnętrzną strukturę bez zmiany zewnętrznych zachowań.

5
Czy powinieneś zmienić istniejący kod, który nie jest uszkodzony w projekcie skoncentrowanym na nowych funkcjach?
Biorąc pod uwagę niewielki projekt, którego celem jest dodanie nowych funkcji do aplikacji, wprowadzone zmiany dotyczą niektórych istniejących kodów, obejmujących ich aktualizację w niektórych obszarach. Podczas wdrażania zauważyłem, że niektóre z tych kodów, które zostały zaktualizowane, mają kandydatów do refaktoryzacji. Czy jest to odpowiedni czas na refaktoryzację, która z kolei …

3
Kiedy wycofywać, a kiedy usuwać w Javie
W ramach działań refaktoryzacyjnych lub po prostu ciągłego rozwoju, określona metoda lub może cała klasa może stać się w pewnym sensie przestarzała. Java obsługuje @Deprecatedadnotację wskazującą, że prawdopodobnie istnieje lepszy sposób obsługi danych funkcji. Wyobrażam sobie, że jest to szczególnie przydatne w publicznych interfejsach API, w których skutki usunięcia części …

2
Jak zorganizować powtarzalny kod?
Mój zespół tworzy wiele jednorazowych formularzy internetowych. Większość z tych formularzy po prostu wysyła wiadomość e-mail, a kilka z nich wykonuje prosty zapis do bazy danych. W tej chwili każda forma ma osobne rozwiązanie w Visual Studio Team Foundation Server. Oznacza to, że mamy blisko 100 różnych projektów, co utrudnia …

4
Jakie są dobre podejścia do czyszczenia starych projektów?
Mam oprogramowanie, które napisałem około 2 lata temu i muszę do niego dodać kilka funkcji. Uświadomiłem sobie, że jest w strasznym bałaganie, i mam ochotę wszystko przenieść, posprzątać itp. Przeczytałem artykuł Joela na temat oprogramowania , żeby nie zaczynać od nowa , więc jaki jest najlepszy sposób?

6
Jakie są praktyczne sposoby wdrożenia SRP?
Po prostu jakich praktycznych technik używają ludzie, aby sprawdzić, czy klasa narusza zasadę pojedynczej odpowiedzialności? Wiem, że klasa powinna mieć tylko jeden powód do zmiany, ale w tym zdaniu brakuje praktycznego sposobu, aby to naprawdę wdrożyć. Jedynym sposobem, jaki znalazłem, jest użycie zdania „The ......... powinien ......... sam w sobie”. …


4
Zastąpić warunkowo polimorfizmem w odpowiedni sposób?
Rozważ dwie klasy Dogi Catobie zgodne z Animalprotokołem (pod względem języka programowania Swift. Byłby to interfejs w Javie / C #). Mamy ekran wyświetlający mieszaną listę psów i kotów. Istnieje Interactorklasa, która obsługuje logikę za kulisami. Teraz chcemy przedstawić użytkownikowi powiadomienie o potwierdzeniu, gdy chce usunąć kota. Psy należy jednak …


6
Jak uniknąć niekończącego się iterowania poprzez równie nieoptymalne projekty?
Prawdopodobnie tak jak wielu, często napotykam bóle głowy z problemami projektowymi, w których na przykład istnieje pewien wzór / podejście projektowe, które wydaje się intuicyjnie pasować do problemu i przynosi pożądane korzyści. Bardzo często występuje pewne zastrzeżenie, które utrudnia wdrożenie wzorca / podejścia bez jakiejś pracy, która następnie neguje korzyści …

5
Używanie różnych wzorów dla podobnych funkcji
Jestem jedynym programistą w projekcie, który, jak w przypadku każdego projektu oprogramowania, może być zajęty przez kogoś innego w przyszłości. Powiedzmy, że użyłem wzorca X do implementacji funkcji A. Po opracowaniu i ukończeniu tej funkcji, zdaję sobie sprawę, że mogę zaimplementować tę samą funkcję przy użyciu wzorca Y, o której …

4
Zmniejszenie złożoności klasy
Patrzyłem na niektóre odpowiedzi i szukałem w Google, ale nie mogłem znaleźć nic pomocnego (tzn. Nie miałoby to niewygodnych skutków ubocznych). Moim abstrakcyjnym problemem jest to, że mam obiekt i muszę wykonać na nim długą sekwencję operacji; Myślę o tym jak o rodzaju linii montażowej, jak budowanie samochodu. Wierzę, że …


3
Co by pomogło przy refaktoryzacji dużej metody, aby upewnić się, że nic nie zepsuję?
Obecnie refaktoryzuję część dużej bazy kodu bez żadnych testów jednostkowych. Próbowałem zmienić kod na brutalny, tzn. Próbując odgadnąć, co robi kod i jakie zmiany nie zmieniłyby jego znaczenia, ale bez powodzenia: losowo psuje funkcje w całej bazie kodu. Należy pamiętać, że refaktoryzacja obejmuje przeniesienie starszego kodu C # do bardziej …

7
Zmienne tymczasowe a wymagania dotyczące długości linii
Czytałem Refaktoryzację Martina Fowlera . Ogólnie jest znakomity, ale jedna z rekomendacji Fowlera wydaje się sprawiać trochę kłopotów. Fowler zaleca zastąpienie zmiennych tymczasowych zapytaniem, więc zamiast tego: double getPrice() { final int basePrice = _quantity * _itemPrice; final double discountFactor; if (basePrice > 1000) discountFactor = 0.95; else discountFactor = …

5
Jak przetestować jednostkę, która jest refaktoryzowana do wzorca strategii?
Jeśli mam w kodzie funkcję, która wygląda następująco: class Employee{ public string calculateTax(string name, int salary) { switch (name) { case "Chris": doSomething($salary); case "David": doSomethingDifferent($salary); case "Scott": doOtherThing($salary); } } Normalnie przefakturowałbym to, aby użyć Ploymorfizmu przy użyciu fabrycznego wzorca klasy i strategii: public string calculateTax(string name) { InameHandler …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.