Pytania otagowane jako design

Pytania dotyczące rozwiązywania problemów i planowania rozwiązania poprzez projektowanie oprogramowania.

7
Czy wzorzec strategii można wdrożyć bez znacznego rozgałęzienia?
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. …

5
Jak radzisz sobie z wersjonowaniem w projekcie wielostronnym?
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 …


3
Jak należy zarządzać stałymi w wielu językach?
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ć …
13 design  packages 

6
Czysty sposób OOP mapowania obiektu na jego prezentera
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ę …

8
Zespół Scrumowy nie przestrzega zasady YAGNI
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). …

3
Z jakich powodów używałbyś osobnego rozszerzenia klasy dla każdego delegata w Swift?
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 …

3
Jak narysować uwagi programisty w określonych warunkach?
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, …

5
Jak uzależnić jeden test od wyników innego testu?
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 …


4
Szyny: Prawo zamieszania Demeter
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 …

5
Kiedy należy preferować korzystanie z bazy danych niż parsowanie danych z pliku tekstowego?
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 …

4
Czy te konkretne tabele potrzebują kluczy zastępczych?
tło Mam te tabele +-------------------------+ +------------------------+ |Airport | |Country | |-------------------------| |------------------------| |airport_code string (PK) | |country_code string (PK)| |address string | |name string | |name string | +------------------------+ +-------------------------+ +-------------------------+ |Currency | |-------------------------| |currency_code string (PK)| |name string | +-------------------------+ kod_portu to kod lotniska IATA (International Air Transport Association) …

3
Zasada inwersji zależności: jak zdefiniować „politykę wysokiego poziomu” i „szczegóły niskiego poziomu” dla innych osób?
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?

2
Zalety i wady strukturyzacji całego kodu za pomocą klas i kompilacji do klas (np. Java)
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ą …

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.