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 …
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 …
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 …
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?
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”. …
Ostatnio dużo czytam i myślę i doszedłem do wniosku, że może powinienem przemyśleć swoją strategię rozwoju sieci. Robię dużo programowania w locie, a przez 2 lata pracowałem nad aplikacją PHP, co mogło się zacząć, gdy małe narzędzie stało się całkiem dużym projektem. Ale jest mnóstwo starszego kodu ode mnie i …
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 …
Mam projekt, który jest wystarczająco duży, że nie mogę już dłużej zachować każdego aspektu w głowie. Mam do czynienia z wieloma klasami i funkcjami, a także przekazuję dane. Z czasem zauważyłem, że ciągle pojawiają się błędy, ponieważ zapomniałem, jaką dokładną formę muszą mieć dane, gdy przekazuję je różnym funkcjom ( …
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 …
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 …
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 …
Niedawno refaktoryzowałem metodę, która była jednocześnie metodą polecenia i zapytania. Po podzieleniu go na jedną metodę polecenia i jedną metodę zapytania, odkryłem, że w kodzie jest teraz wiele miejsc, w których wywołuję polecenie, a następnie uzyskuję wartość z zapytania, co wydaje się naruszać zasadę DRY. Ale gdybym owinął ten wspólny …
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 …
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 = …
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 …
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.