Wzorzec strategii działa dobrze, aby uniknąć dużych, jeśli ... innych konstrukcji i ułatwić dodawanie lub zastępowanie funkcjonalności. Jednak moim zdaniem nadal ma to jedną wadę. Wygląda na to, że w każdej implementacji wciąż musi istnieć rozgałęziony konstrukt. Może to być plik fabryczny lub plik danych. Jako przykład weź system zamawiania. …
Wiem, że to szerokie pytanie, więc postaram się być jak najbardziej konkretny. To pytanie jest bardziej „organizacyjne” niż techniczne. Mamy wielostronny projekt z tymi głównymi komponentami: Serwer hostujący podstawową logikę biznesową (modele danych) Backoffice dla klientów korzystających z podstawowej logiki biznesowej Interfejs API aplikacji (REST), który również korzysta z podstawowej …
Istnieje klasa LinkedList z funkcjami takimi jak add_first (), add_last (), add_after (), remove_first (), remove_last () i remove () Teraz istnieje stos klas, który zapewnia funkcje takie jak push (), pop (), peek () lub top (), a do implementacji tych metod rozszerza metody klasy LinkedList. Czy jest to …
Mam sytuację, w której obsługuję funkcjonalnie tę samą bibliotekę w wielu językach. Często istnieją stałe, które muszą być dzielone między nimi (na przykład klucze nazwy pola Json lub kody błędów). Obecnie robię to poprzez kod definiujący stałe w każdym języku. Problem dotyczy konserwacji. Jeśli dodam nowy kod błędu, muszę zaktualizować …
Tworzę grę planszową (takich jak szachy) w Javie, gdzie każdy element ma swój własny typ (jak Pawn, Rookitd.). Do części GUI aplikacji potrzebuję obrazu dla każdego z tych elementów. Ponieważ robienie myśli jak rook.image(); narusza separację interfejsu użytkownika i logiki biznesowej, utworzę inny prezenter dla każdego elementu, a następnie przypiszę …
Na spotkaniu SCRUM zespół ds. Produktu debatował na temat funkcji interfejsu API, która zostanie wykorzystana przez aplikację mobilną. Mieliśmy makietę pokazującą, jak powinien wyglądać ekran i jakie kluczowe elementy powinien on zawierać („układ”). Na podstawie tego i dyskusji, którą przeprowadziłem z właścicielem produktu, stworzyłem prototyp odpowiedzi API (HAL + JSON). …
Pracowałem przez samouczek Raya Wenderlicha i zauważyłem, że autor używa rozszerzeń klas do przechowywania wywołań zwrotnych delegatów zamiast obsługi ich w samej klasie, tj .: delegować wywołania zwrotne wewnątrz rozszerzenia klasy: extension LogsViewController : UIPopoverPresentationControllerDelegate { func adaptivePresentationStyleForPresentationController(controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle { ... } } w przeciwieństwie do …
Zacznijmy od przykładu. Powiedzmy, że mam wywoływaną metodę, exportktóra zależy w dużym stopniu od schematu DB. Przez „mocno zależy” rozumiem, że dodanie nowej kolumny do określonej tabeli często (bardzo często) prowadzi do zmiany odpowiedniej exportmetody (zwykle należy również dodać nowe pole do danych eksportu). Programiści często zapominają o zmianie exportmetody, …
Załóżmy, że istnieje klasa narzędziowa, która udostępnia niektóre typowe metody statyczne używane wszędzie w kodzie przez wiele innych klas. Jak zaprojektowałbyś swoje testy jednostkowe dla konsumentów narzędzia, aby ich testy zakończyły się niepowodzeniem, jeśli którykolwiek z testów narzędzia nie przejdzie pomyślnie? Czy możesz to zrobić, czy musisz sam sprawdzić, czy …
Korzystam z biblioteki strony trzeciej. Przekazują mi POJO, które dla naszych celów i celów jest prawdopodobnie realizowane w następujący sposób: public class OurData { private String foo; private String bar; private String baz; private String quux; // A lot more than this // IMPORTANT: NOTE THAT THIS IS A PACKAGE …
Czytam książkę zatytułowaną Rails AntiPatterns, a oni mówią o korzystaniu z delegacji, aby uniknąć łamania Prawa Demeter. Oto ich najlepszy przykład: Uważają, że wywołanie czegoś takiego w kontrolerze jest złe (i zgadzam się) @street = @invoice.customer.address.street Ich proponowanym rozwiązaniem jest wykonanie następujących czynności: class Customer has_one :address belongs_to :invoice def …
Tworzyłem program w języku Python do mierzenia rozwoju codereview.SE . Moje podejście polegało na uzyskaniu „statystyk witryny” wyświetlanych na pierwszej stronie i zapisaniu ich na moim dysku twardym. Planuję to robić raz dziennie. Do tej pory zrobiłem wystarczająco dużo, aby uzyskać statystyki i dołączyć je do pliku tekstowego. Skrypt Pythona …
Próbuję wyjaśnić zasadę inwersji zależności moim (głównie młodszym) kolegom. Jak możemy zdefiniować, która jest „polityką wysokiego poziomu”, a która „szczegółem niskiego poziomu” w oprogramowaniu? Na przykład, jeśli nasze oprogramowanie automatyzuje przepływ pracy kilku aplikacji biznesowych, dlaczego mówimy, że automatyzacja przepływu pracy jest polityką wysokiego poziomu, a aplikacje biznesowe są szczegółami?
Edycja: mój język pozwala na wielokrotne dziedziczenie, w przeciwieństwie do Java. Zacząłem projektować i rozwijać własny język programowania do celów edukacyjnych, rekreacyjnych i potencjalnie użytecznych. Na początku postanowiłem oprzeć ją na Javie. Sugerowało to, że cały kod zostałby napisany w postaci klas, a kod kompiluje się w klasy, które są …
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.